下面是我编写的程序,要将access数据库的内容显示出来,但是系统要么不显示结果,要不就说有一个未定义,可不可以帮我看一下到底那里出错了
Private Sub Command1_Click()
Dim cnn As ADODB.Connection
Dim sql As String
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=f:\贸易系统.mdb"
Set rst = New Recordset
If Check1.Value = vbChecked Then
sql = "select * from 客户表 where CustomerCode =" & Text1.Text & ""
End If
If Check2.Value = vbChecked Then
sql = "select * from 客户表 where Contact =" & Text2.Text & ""
End If
If Check3.Value = vbChecked Then
sql = "select * from 客户表 where CustomerName =" & Text3.Text & ""
End If
rst.Open sql, cnn, adOpenKeyset, adLockPessimistic
DataGrid1.AllowAddNew = False
DataGrid1.AllowDelete = False
DataGrid1.AllowUpdate = False
Set DataGrid1.DataSource = rst
End Sub

解决方案 »

  1.   

    try:Private Sub Command1_Click()
    Dim cnn As New ADODB.Connection
    Dim sql As String
    Dim rst As New ADODB.Recordset
    cnn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=f:\贸易系统.mdb"
    sql = "select * from 客户表 where 1=1 "
    If Check1.Value = vbChecked Then
    sql = sql & "and CustomerCode ='" & Text1.Text & "'"
    End If
    If Check2.Value = vbChecked Then
    sql = sql &" and Contact ='" & Text2.Text & "'"
    End If
    If Check3.Value = vbChecked Then
    sql = sql &" and CustomerName ='" & Text3.Text & "'"
    End If
    rst.Open sql, cnn, adOpenKeyset, adLockPessimistic
    DataGrid1.AllowAddNew = False
    DataGrid1.AllowDelete = False
    DataGrid1.AllowUpdate = False
    Set DataGrid1.DataSource = rst
    End Sub
      

  2.   

    Private Sub Command1_Click()
    Dim cnn As ADODB.Connection
    Dim sql As String
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    cnn.CursorLocation = adUseClient   '*********
    cnn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=f:\贸易系统.mdb"
    Set rst = New Recordset
    If Check1.Value = vbChecked Then
    sql = "select * from 客户表 where CustomerCode ='" & Text1.Text & "'"
    End If
    If Check2.Value = vbChecked Then
    sql = "select * from 客户表 where Contact ='" & Text2.Text & "'"
    End If
    If Check3.Value = vbChecked Then
    sql = "select * from 客户表 where CustomerName ='" & Text3.Text & "'"
    End If
    rst.Open sql, cnn, adOpenKeyset, adLockPessimistic
    DataGrid1.AllowAddNew = False
    DataGrid1.AllowDelete = False
    DataGrid1.AllowUpdate = False
    Set DataGrid1.DataSource = rst
    End Sub
      

  3.   

    Set rst = New Recordset 这句话写错了。应该是set rst=new adodb.recordset
      

  4.   

    把rst.Open sql, cnn, adOpenKeyset, adLockPessimistic
    改为:rst.Open sql, cnn, adOpenStatic, adLockPessimistic 试试
      

  5.   

    Dim cnn As New ADODB.Connection
        Dim sql As String
        Dim rst As New ADODB.Recordset
       
        cnn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=f:\贸易系统.mdb"
        cnn.Open
        
        Set rst = New ADODB.Recordset
        If Check1.Value = vbChecked Then
            sql = "select * from 客户表 where CustomerCode ='" & Text1.Text & "'"
        End If
        
        If Check2.Value = vbChecked Then
            sql = "select * from 客户表 where Contact ='" & Text2.Text & "'"
        End If
        
        If Check3.Value = vbChecked Then
             sql = "select * from 客户表 where CustomerName ='" & Text3.Text & "'"
        End If
        
        rst.Open sql, cnn, adOpenStatic, adLockOptimistic
        
        DataGrid1.AllowAddNew = False
        DataGrid1.AllowDelete = False
        DataGrid1.AllowUpdate = False
        Set DataGrid1.DataSource = rst执行不报错,但是没有结果,原因是:
    (1).既然要绑定,要用ADODC才能绑定的,ADODB不能绑定的
    (2).用ADODB,就用代码,用循环直接向表格中写
      

  6.   

    Private Sub Command1_Click()
    DataGrid1.AllowAddNew = False
    DataGrid1.AllowDelete = False
    DataGrid1.AllowUpdate = False
    Dim cnn As ADODB.Connection
    Dim sql As String
    Dim rst As ADODB.Recordset
    Set cnn = New ADODB.Connection
    cnn.CursorLocation = adUseClient   
    cnn.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=f:\贸易系统.mdb"
    Set rst = New Recordset
    If Check1.Value Then
    sql = "select * from 客户表 where CustomerCode ='" & Text1.Text & "'"
    End If
    If Check2.Value = vbChecked Then
    sql = "select * from 客户表 where Contact ='" & Text2.Text & "'"
    End If
    If Check3.Value = vbChecked Then
    sql = "select * from 客户表 where CustomerName ='" & Text3.Text & "'"
    End If
    rst.Open sql, cnn, 1, 1
    Set DataGrid1.DataSource = rst
    DataGrid1.Refresh
    End Sub
    '客户表的CustomerCode 字段不知道是不是数值型字段了
    '如果是就用sql = "select * from 客户表 where CustomerCode =" & Text1.Text 
    '还有那个checkbox很不好,如果全部都选择了你的程序就出错了,在界面上也应该控制好这个'偶也要来分块猪肉啊
      

  7.   

    还想多问一句,查询完了以后,要不要多写一句,close的语句,如果不写的话会不会影响下一次access的使用阿
      

  8.   

    rst.close这样一写你就看不到记录显示在datagrid上了