access怎麼寫sql
Access SQL查詢語句是兼容的,有兩種方式可以使用SQL語句:
方式一:在“查詢”的試圖裏,可以使用Access的嚮導模式,也可以直接使用SQL語言模式,如下圖:
打開任何一個查詢,在標籤處選擇SQL視圖,就會變成以下SQL界面了:
ACCESS還有一種方式,就是在其自帶的VB裏面,但是不能直接運行SQL語句,需要按照以下格式:
DoCmd.RunSQL "SQL語句;" (注意:引號和分好不要落下)
DoCmd.RunSQL "UPDATE 複製薪酬 SET 複製薪酬.公司 = [Forms]![項目信息]![項目名稱];"
以下是一個集中使用SQL的案例:
2. 列出Access數據庫結構的SQL怎麼寫能在SQLServer裏寫,你可以把access數據倒到SQLServer裏
説SQL不能寫出來的都過來學學。
---------------------------------------------------
SELECT
表名 = CASE WHEN A.COLORDER=1 THEN D.NAME ELSE ' ' END,
--字段序號 = A.COLORDER,
字段名稱 = A.NAME,
--標識 = CASE WHEN COLUMNPROPERTY( A.ID,A.NAME, 'ISIDENTITY ')=1 THEN '√ 'ELSE ' ' END,
/*主鍵 = CASE WHEN EXISTS(SELECT 1 FROM SYSOBJECTS WHERE XTYPE= 'PK ' AND PARENT_OBJ=A.ID AND NAME IN (
SELECT NAME FROM SYSINDEXES WHERE INDID IN(
SELECT INDID FROM SYSINDEXKEYS WHERE ID = A.ID AND COLID=A.COLID))) THEN '√ ' ELSE ' ' END,*/
類型 = B.NAME ,
佔用字節數 = A.LENGTH,
--長度 = COLUMNPROPERTY(A.ID,A.NAME, 'PRECISION '),
--小數位數 = ISNULL(COLUMNPROPERTY(A.ID,A.NAME, 'SCALE '),0),
能否為空 = CASE WHEN A.ISNULLABLE=1 THEN '能'ELSE '否' END,
默認值 = ISNULL(E.TEXT, ' '),
表説明 = CASE WHEN A.COLORDER=1 THEN ISNULL(F.VALUE, ' ') ELSE ' ' END
--欄位説明 = ISNULL(G.[VALUE], ' ')
FROM
SYSCOLUMNS A
LEFT JOIN
SYSTYPES B
ON
A.XUSERTYPE=B.XUSERTYPE
INNER JOIN
SYSOBJECTS D
ON
A.ID=D.ID AND D.XTYPE= 'U ' AND D.NAME <> 'DTPROPERTIES '
LEFT JOIN
SYSCOMMENTS E
ON
A.CDEFAULT=E.ID
LEFT JOIN
sys.extended_properties G
ON
A.ID=G.major_id AND A.COLID=G.minor_id
LEFT JOIN
sys.extended_properties F
ON
D.ID=F.major_id AND F.minor_id=0
ORDER BY
A.ID,A.COLORDER
3. 可以使用ACCESS或SQL的數據庫的程序該怎麼寫我是利用VB
可以使用ACCESS數據庫的程序,通過VB鏈接access數據庫一般都是用ADO訪問技術,有ADO控件和代碼兩種形式,控件比較簡單些,代碼比較複雜些,但是通用性很強。我給你講下控件的吧
首先你要在工程裏引用這個控件ADODC
Dim qq As String
qq = "select * from 表1"
Adodc1.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=qq.mdb" '比較簡單的字符串鏈接,你的ACCESS要放到和這個程序相同的目錄下
Adodc1.CommandType = adCmdUnknown'這句話是鏈接你的ACCESS數據庫 (一)
Adodc1.RecordSource = qq '得到限定條件的數據
Adodc1.Refresh '刷新
Set Text1.DataSource = Adodc1 '將數據賦值給文本控件
Text1.DataField = "qq" '選擇要顯示的字段
我説的這些僅僅是簡單的數據訪問,其實數據庫訪問是一個很大的學問,程序的好壞直接影響你的程序速度
我講的已經很清楚了啊,難道你還不明白??你説的打印到底是什麼意思?是不是打印出紙質的,打印一般都是通過報表來實現的,如果你要想在VB窗體中打印只能打印顯示數據的控件或者打印窗體。
CommonDialog1.ShowPrinter '調用打印機對象
Me.PrintForm '打印窗體
如果你想把數據庫中查找到的記錄放到一個表格中,可以在“部件”中選擇DATAGRID控件,這個控件可以以表格的形式顯示你的數據
4. 在access中怎麼寫sql查詢語句,select查詢出一個有不同班級同學成績由於SQL語言處理問題的方式是面向記錄"集合"的。解決排名這類問題對於SQL來説確實頭疼,分組排名就更不用説了! 為了解決排名問題大型數據庫系統為用户提供了RANK、ROWNUMBER等函數,但是ACCESS不支持排名、開窗等這類函數,一般建議用編程方式解決,例如VBA等。
這個問題確實不好回答。看到樓主就同一問題已經提問幾次了,今天嘗試用SQL解決如下,供參考
首先假設數據結構如下:
students(sid,name,class)
scores(sid,score)
學生表與分數表基於sid建立一對多參照完整性
檢索出所有班級與每個學生的學號、姓名、分數按班級、得分排序
select a.class,b.sid,a.name,b.score from
students a,scores b where a.sid=b.sid
order by a.class,b.score desc;
檢索出每個班級前三名的學生學號、姓名和得分,按班級升序、得分降序排名
實現SQL代碼
select a.class,a.sid,a.name,a.score from
(select a.class,a.name,b.sid,b.score from students a,scores b where a.sid=b.sid)a where a.score in(
select top 3 b.score from (select distinct class,score from scores)b
where b.class=a.class order by b.score desc
) order by a.class,a.score desc;運行結果
從上述代碼來看實現這樣的效果已經很麻煩,至於學生班名次,ACCESS只能藉助編程手段了。