请教ADO+DataGrid的问题!

toply13 2003-10-17 11:42:16
执行如下代码出现问题:

Private Sub Combo1_Click()

str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\aa\data.mdb;Persist Security Info=False"
Set adcon = New ADODB.Connection
adcon.Open str

str = "SELECT * FROM" & Chr(34) & Combo1.Text
Set rs = New ADODB.Recordset
rs.Open str

Set DataGrid1.DataSource = rs

Adodc1.RecordSource = str

Adodc1.Refresh

DataGrid1.DataSource = Adodc1

End Sub


问题为:未找到方法或数据成员。
请问该如何解决?
...全文
49 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sonique 2003-10-18
  • 打赏
  • 举报
回复
给你一个使用adodb的例子:
1、建立连接。
dim Conn as ADODB.connection
With Conn

If .State = adStateOpen Then
.Close
End If

.CursorLocation = adUseClient
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" _
& strFileName
.Open
End With

2、打开记录集
dim SQL as string
SQL = "select * from " & strTable
dim Rs as ADODB.recordset

With Rs
If .State Then
.Close
End If

.CursorLocation = adUseClient
.Open SQL, Conn, adOpenDynamic, adLockBatchOptimistic
End With


3、设置数据源

Set datagrid.DataSource = Rs
chtlover 2003-10-18
  • 打赏
  • 举报
回复
直接把记录集rs赋给DataGrid1控件的DataSource不就得了吗,为什么还得用ADODC控件呢?像下边这样不更好吗?
Private Sub Combo1_Click()

str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\aa\data.mdb;Persist Security Info=False"
Set adcon = New ADODB.Connection
adcon.Open str

str = "SELECT * FROM" & Chr(34) & Combo1.Text
Set rs = New ADODB.Recordset
rs.Open str

set DataGrid1.DataSource= rs

End Sub
liaorui 2003-10-18
  • 打赏
  • 举报
回复
不要用Adodc1这个控件了,直接把COMBO的TEXT给SQL,然后执行后在记录集给DATAGRID就可以了
flc 2003-10-18
  • 打赏
  • 举报
回复
关注
vcexplorer 2003-10-18
  • 打赏
  • 举报
回复
用调试器看一下RS的值,是不是没有得到RS记录
wea1978 2003-10-18
  • 打赏
  • 举报
回复
看看这个行不,我原来做的:
‘模块
Public conn As New ADODB.Connection
Public rst As New ADODB.Recordset
Public sql As String, cn As String

'窗体
Private Sub Form_Load()
cn = "dsn=mis;uid=sa;pwd=;"
conn.Open cn
End Sub

Private Sub Combo3_Click()
If Combo3.Text = "订料入仓" Then
If rst.State Then rst.Close
sql = "select inid as 入仓单号,orderid as 订单号码,indate as 日期,intime as 时间,custname as 客户名,depot as 仓库,amount as 数量,houseman as 仓管 from mis_depotsyle where insyle='" & Trim(Combo3.Text) & "'"
rst.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rst
ElseIf Combo3.Text = "客户退回" Or Combo3.Text = "成品入仓" Or Combo3.Text = "退料入仓" Or Combo3.Text = "其它入仓" Then
Call database
ElseIf Combo3.Text = "生产领料" Or Combo3.Text = "补料" Or Combo3.Text = "退料" Or Combo3.Text = "加工商领料" Or Combo3.Text = "其它领料" Then
Call databaseout
End If
End Sub
Public Sub database()
If rst.State Then rst.Close
sql = "select inid as 入仓单号,indate as 入仓日期,intime as 时间,custname as 客户名,depot as 仓库,amount as 数量,houseman as 仓管 from mis_depotsyle where insyle='" & Trim(Combo3.Text) & "'"
rst.Open sql, conn, adOpenKeyset, adLockPessimistic
If rst.EOF = False Then
Set DataGrid1.DataSource = rst
Else
MsgBox "没有数据!", vbExclamation, "没有数据!"
End If
End Sub
Public Sub databaseout()
If rst.State Then rst.Close
sql = "select outid as 出仓单号,outdate as 出仓日期,outtime as 时间,custname as 客户名,depot as 仓库,amount as 数量,inmate as 领料人,houseman as 仓管 from mis_depotsyleout where outsyle='" & Trim(Combo3.Text) & "'"
rst.Open sql, conn, adOpenKeyset, adLockPessimistic
If rst.EOF = False Then
Set DataGrid1.DataSource = rst
Else
MsgBox "没有数据!", vbExclamation, "没有数据!"
End If
End Sub
chtlover 2003-10-18
  • 打赏
  • 举报
回复
你把 str="SELECT * FROM"&Chr(34)&Combol.Text
改成 str="SELECT * From "&Combol.text试试 再有你的Combol框中的text到底是不是表的名字,你最好弄清楚
vcexplorer 2003-10-18
  • 打赏
  • 举报
回复
Adodc1.RecordSource = str加 SET
toply13 2003-10-18
  • 打赏
  • 举报
回复
楼上的,我试了一下,还是不行。
我的目的是在Combo1中选择一个表后,在DataGrid中显示出表的内容!

请大家继续帮忙解答!
wdwd05 2003-10-17
  • 打赏
  • 举报
回复
前提是你str = "SELECT * FROM" & Chr(34) & Combo1.Text这句话是对的~


"SELECT * FROM" 最好是改为 "SELECT * FROM " 这样的话,会是正规的SQL语句

否则FROM会和内容连在一起,那样就是错误的了~
wdwd05 2003-10-17
  • 打赏
  • 举报
回复
Private Sub Combo1_Click()

str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=E:\aa\data.mdb;Persist Security Info=False"
Set adcon = New ADODB.Connection
adcon.Open str

str = "SELECT * FROM" & Chr(34) & Combo1.Text
Set rs = New ADODB.Recordset
rs.Open str

set Adodc1.RecordSource = rs

Adodc1.Refresh

DataGrid1.DataSource = Adodc1

End Sub

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧