这是MSDN的ADO教程部分:Public Sub main()Dim conn As New ADODB.Connection Dim cmd As New ADODB.Command Dim rs As New ADODB.Recordset ' 步骤 1,创建一个数据连接 conn.Open "DSN=pubs;uid=sa;pwd=;database=pubs" ' 步骤 2,设置数据命令 Set cmd.ActiveConnection = conn cmd.CommandText = "SELECT * from authors" ' 步骤 3,打开数据 rs.CursorLocation = adUseClient rs.Open cmd, , adOpenStatic, adLockBatchOptimistic' 步骤 4,内容可选,看你的需要 rs!au_lname.Properties("Optimize") = True rs.Sort = "au_lname" rs.Filter = "phone LIKE '415 5*'" rs.MoveFirst Do While Not rs.EOF Debug.Print "Name: " & rs!au_fname & " "; rs!au_lname & _ "Phone: "; rs!phone & vbCr rs!phone = "777" & Mid(rs!phone, 5, 11) rs.MoveNext ’可以再此把字段加入到Combox Combo1.AddItem rs("au_fname")LoopEnd Sub
关于问题1。我是 for i = data1.recordset.bof to data1.recordset.eof combo1.additem (i) next 但VB提示data1.recordset未说明,能指点我吗?
关于问题2。我是在form_load中设 adodc.recordsource="select * from table" 然后我想再次查询,sql语句为"select count(A),sum(B) from table where X=X group by C",但msHflexgrid不能显示(或者是adodc出错?) 另不能用“with club"这种sql语法
观于你最后的提问,可能这个对你 有点用: 一、用做MSHFLEXGRID的数据源的记录集不能用ADODB.RECORDSET,而是要这样写才行: Dim rs as ADODB.Recordset set rs=new recordset '注意,这里不能加ADODB.这样的限定,一定要象这样写 rs.cursorlocation=adUseClient rs.cursortype=adreadonly rs.locktype=addynamic二、您的SQL语句写得好象有点问题,反正我是看不懂里面那句X=X的WHERE子句是干什么用的,还有COUNT(A)是不是应该写成COUNT(C)或者干脆就是COUNT(*)三、如果你用的是SQL SERVER的数据库,那么WITH CUBE肯定是可以用的,ACCESS就不清楚了,请你自己查一下在线帮助。但是用了以后会在统计行里出现NULL值,所以不能直接用做MSHFLEXGIRD的数据源,否则会出现“非法使用NULL值”的错误,要使用ISNULL()函数先将那些NULL值变成有效的数据才能绑定到网格里面去。
Dim cmd As New ADODB.Command
Dim rs As New ADODB.Recordset
' 步骤 1,创建一个数据连接
conn.Open "DSN=pubs;uid=sa;pwd=;database=pubs"
' 步骤 2,设置数据命令
Set cmd.ActiveConnection = conn
cmd.CommandText = "SELECT * from authors"
' 步骤 3,打开数据
rs.CursorLocation = adUseClient
rs.Open cmd, , adOpenStatic, adLockBatchOptimistic' 步骤 4,内容可选,看你的需要
rs!au_lname.Properties("Optimize") = True
rs.Sort = "au_lname"
rs.Filter = "phone LIKE '415 5*'"
rs.MoveFirst
Do While Not rs.EOF
Debug.Print "Name: " & rs!au_fname & " "; rs!au_lname & _
"Phone: "; rs!phone & vbCr
rs!phone = "777" & Mid(rs!phone, 5, 11)
rs.MoveNext ’可以再此把字段加入到Combox
Combo1.AddItem rs("au_fname")LoopEnd Sub
for i = data1.recordset.bof to data1.recordset.eof
combo1.additem (i)
next
但VB提示data1.recordset未说明,能指点我吗?
adodc.recordsource="select * from table"
然后我想再次查询,sql语句为"select count(A),sum(B) from table
where X=X group by C",但msHflexgrid不能显示(或者是adodc出错?)
另不能用“with club"这种sql语法
一、用做MSHFLEXGRID的数据源的记录集不能用ADODB.RECORDSET,而是要这样写才行:
Dim rs as ADODB.Recordset set rs=new recordset '注意,这里不能加ADODB.这样的限定,一定要象这样写
rs.cursorlocation=adUseClient
rs.cursortype=adreadonly
rs.locktype=addynamic二、您的SQL语句写得好象有点问题,反正我是看不懂里面那句X=X的WHERE子句是干什么用的,还有COUNT(A)是不是应该写成COUNT(C)或者干脆就是COUNT(*)三、如果你用的是SQL SERVER的数据库,那么WITH CUBE肯定是可以用的,ACCESS就不清楚了,请你自己查一下在线帮助。但是用了以后会在统计行里出现NULL值,所以不能直接用做MSHFLEXGIRD的数据源,否则会出现“非法使用NULL值”的错误,要使用ISNULL()函数先将那些NULL值变成有效的数据才能绑定到网格里面去。