大哥,代码要看清楚嘛! 
 Adodc1.RecordSource = sql  'XXXXXXXXXXX
应该改成  Adodc1.RecordSource = rs
同时,应该定义数据库中记录的全局变量以便传递值到另一个窗体中在module中 写如如下:
  public Dim字段一
  ********
  ********然后在上面的代码中把 Form4.Label2.Caption = rs.Fields(0) 之类的改成
Dim字段一=rs.Fields(0)
再Form4.Label2.Caption 
依此类推

解决方案 »

  1.   

    Adodc1.RecordSource = sql
    Adodc1.Query
      

  2.   

    看了楼主的代码,我有晕。
    看了一楼的回复,我直接吐了。
    不是我打击你们,楼主的代码有点太原始了,什么form1,form2,text21,text22....,有没有学过命名规则,看了想都晕。
    一楼的回复更可笑,没看到是没有找到记录的错误吗?还说什么adodc1.recordsource=rs,还让人家看清楚,你自己都没看清楚就来说。
    再说adodc1.recordsource=rs这样写对吗?我倒!还有你的命名:public Dim字段一,这叫什么命名,看了都想笑,唉!
      

  3.   

    今天心情不好,得罪各位请原凉。
    正确的做法:
    在打开rs之后要先判断记录集返回是不是为空,然后再决定使用。
    这样:if not(rs.eof and rs.bof ) then
              ...
              ...
          endif
      

  4.   

    楼上的态度也不好,
    Set一下嘛,
    知道就讲清楚好了,
    没啥好卖的,
    至于提问时用些form1,form2,text21全无不可,
    小代码测试问题都这样的,
    CSDN只解决问,不是别的,
    不要嘲笑,替人解困^_^
      

  5.   

    不好意思,
    fling_boy你这次是答非所问。
      

  6.   


    rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
    改成
    rs.Open sql, cnn, adOpenStatic , adLockOptimistic
    试试
      

  7.   

    我回复时你还没写呢,所以没说你写的。
    还加set ,我无话可说了。
    adodc.recordsourc 是字符串类型,rs是一个对象,set可以用吗?
    我答非所以问,你看他问的是什么:Form4.Label2.Caption = rs.Fields(0)   《---------错误指在此处提示我的错误是:  BOF 或 EOF 中的一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录很明显当前记录集为空,所以应该先判断rs.eof 和rs.bof 
    如果记录集刚打开时,两个指针同时为真,则记录集肯定为空,否则会有记录.
      

  8.   

    SORRY :)
    看错了,
    Adodc1.RecordSource = sql
    在这里是没用的语句
    本来以为是跟MSHFlexGrid1挂钩用的。
      

  9.   

    根据你说的情况,可能是因为数据库中没有满足你查询条件的记录。你要加一个出错处理程序if rs.recordcount=0 then 
       msgbox "没有找到相应记录!!!"
       exit sub
    else 
       写你自己的代码
    end if 
    或用: 
    if rs.eof and rs.bof then
       msgbox "没有找到相应记录!!!"
       exit sub
    else
       写你自己的代码
    end if
      

  10.   

    单击 MSHFLEXGRID 控件后 能够显示出在 MSHFLEXGRID 控件中查询出来的数据的详细信息,????????
    sql = "select * from  information where 车牌号='" & Trim(Label6.Caption) & "'"  ????????????
    既然是这样,那你的车牌号就应该从MSHFLEXGRID 控件的当前记录中取啊!!
    你现在的错误原因可以参照 chenyu5188(蓝色情调) 的方法!!!那是保险措施!
      

  11.   

    if isnull( rs.Fields(0)) then erroryou canif isnull(rs.fields(0) then
    xx=""
    elsexx=rs.fields(0)
    endiforxx= rs.Fields(0) & ""
      

  12.   

    应该是记录集为空

    Form4.Label2.Caption = rs.Fields(0) 
    之前先看看
    rs.recordcount是否为0
      

  13.   

    rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
      If Rs.RecordCount > 0 Then  '返回结果中的行数,可能没有找到记录
         ‘加入这句试看有没有记录后再执著行下面的
          Rs.MoveFirst
        Form4.Label2.Caption = rs.Fields(0)
           ………
       End If
      

  14.   

    建议:
    1。不要使用单击弹出窗口的方式,使用双击,减少用户误操作触发
    2。最好在过程代码中加错误处理,参考 chenyu5188(蓝色情调)提供的方式
    3。弹出窗口可以使用模态窗口 form4.show 1,不必要隐藏form3现在问题是不是已经解决了?大家已经把问题剖析得很明了了。********************************************************************
    晕!!!!!!
    回复了六次了,上来没有???!!!!
      

  15.   

    使用rs.recordcount判断记录集是否为空,确实是一种方式,但要受到记录集游标和数据源类型的限制,所以推荐使用 not(.eof and .bof).
    如果为了返回记录集的记录数那是另一会事,这时可以把游标设置成客户端静态游标,但这不能保证对所以数据源有效,有的数据源不支持recordcount.
      

  16.   

    你的form4显示的时候数据不要从记录集里读,从MSHFLEXGRID 里读啊,因为你点的话肯定是具体的那一条啊。前提是你要判断是否为空。就是上面说的 。要确保有记录啊。
      

  17.   

    哦,先对楼主说声抱歉了,是没看清楚题目啊,我错弄成直接应用的ADODB 了 :O楼上的,说话要懂点礼貌!
      

  18.   

    问题:你的ADODC似乎没有用处??修改:
    MSHFlexGrid1_dbclick
    If Option1.Value = True Or Option2.Value = True Or Option3.Value = True Then
       MSHFlexGrid1.ToolTipText = "双击该记录将快速浏览数据"
    End If
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sql As String
    Set cnn = New ADODB.Connection
    cnn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=jkxt"
    sql = "select * from  information where 车牌号='" & Trim(Label6.Caption) & "'"  
    '请确保 Label6.Caption 有记录你要查的车牌号,否则不会检索出数据
    Set rs = New ADODB.Recordset
    rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
    '''Adodc1.RecordSource = sql
    if not(rs.bof or rs.eof) then '判断是不是有记录,有则显示
    Form4.Label2.Caption = rs.Fields(0)   《---------错误指在此处
    Form4.Label4.Caption = rs.Fields(1)
    Form4.Label6.Caption = rs.Fields(2)
    Form4.Label8.Caption = rs.Fields(3)
    Form4.Label10.Caption = rs.Fields(4)
    Form4.Label12.Caption = rs.Fields(5)
    Form4.Label14.Caption = rs.Fields(6)
    ''Format((Form4.Label16.Caption), "yyyy-mm-dd") = rs.Fields(7)???
    '你是否想格式化时间,应该写成下面的
    Form4.Label16.Caption=Format(rs.Fields(7), "yyyy-mm-dd")Form4.Label18.Caption = rs.Fields(8)
    Form4.Label20.Caption = rs.Fields(9)
    Form4.Text1.Text = rs.Fields(10)
    Form4.Show 1 '模态窗口显示
    ''Form3.Hide  '可以注释不用
    ''MSHFlexGrid1.Clear  '晕,你把MSHFlexGrid1数据清掉做什么?!
    Option1.Value = False
    Option2.Value = False
    Option3.Value = False
    Option4.Value = False
    Text21.Text = ""
    Text22.Text = ""
    Text23.Text = ""
    Text24.Text = ""  
    else  '没找到记录
        msgbox "没符合条件的记录!"
     end if
      

  19.   

    你要把记录指针移动到呢需要显示的记录上啊,用move啊并且,如果没有记录,是没有办法显示数据的,还有:如果eof/bof=true夜会出错的
      

  20.   

    猛然想起,你是不是绕远路了?
    如果这条记录的所有信息全在 MSHFlexGrid1 中不用去操作数据库,直接使用下面的代码:
    dim n as integer
    n=MSHFlexGrid1.row '得到当前MSHFlexGrid1的行数
    Form4.Label2.Caption = MSHFlexGrid1.textmatrix(n,0)
    Form4.Label4.Caption =MSHFlexGrid1.textmatrix(n,1)Form4.Label6.Caption = MSHFlexGrid1.textmatrix(n,2)
    Form4.Label8.Caption = MSHFlexGrid1.textmatrix(n,3)
    Form4.Label10.Caption = MSHFlexGrid1.textmatrix(n,4)
    Form4.Label12.Caption = MSHFlexGrid1.textmatrix(n,5)
    Form4.Label14.Caption = MSHFlexGrid1.textmatrix(n,6)
    Form4.Label16.Caption=Format(MSHFlexGrid1.textmatrix(n,7), "yyyy-mm-dd")
    Form4.Label18.Caption = MSHFlexGrid1.textmatrix(n,8)
    Form4.Label20.Caption =MSHFlexGrid1.textmatrix(n,9)
    Form4.Text1.Text =MSHFlexGrid1.textmatrix(n,10)
    Form4.Show 1 '模态窗口显示'当然顺序可能要你自己调整一下;再试一试,还有问题的话,短消息联系!
      

  21.   

    MSHFlexGrid1_dbclick
    If Option1.Value = True Or Option2.Value = True Or Option3.Value = True Then
       MSHFlexGrid1.ToolTipText = "双击该记录将快速浏览数据"
    End If
    Dim cnn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim sql As String
    Set cnn = New ADODB.Connection
    cnn.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=jkxt"
    sql = "select * from  information where 车牌号='" & Trim(MSHFlexGrid1.TextMatrix(row,col) ) & "'"  'row=当前行,col=车牌号所在列
    Set rs = New ADODB.Recordset
    rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
    '''Adodc1.RecordSource = sql
    if not(rs.bof or rs.eof) then '判断是不是有记录,有则显示
    Form4.Label2.Caption = rs.Fields(0)   '《---------错误指在此处
    Form4.Label4.Caption = rs.Fields(1)
    Form4.Label6.Caption = rs.Fields(2)
    Form4.Label8.Caption = rs.Fields(3)
    Form4.Label10.Caption = rs.Fields(4)
    Form4.Label12.Caption = rs.Fields(5)
    Form4.Label14.Caption = rs.Fields(6)
    ''Format((Form4.Label16.Caption), "yyyy-mm-dd") = rs.Fields(7)???
    '你是否想格式化时间,应该写成下面的
    Form4.Label16.Caption=Format(rs.Fields(7), "yyyy-mm-dd")Form4.Label18.Caption = rs.Fields(8)
    Form4.Label20.Caption = rs.Fields(9)
    Form4.Text1.Text = rs.Fields(10)
    Form4.Show 1 '模态窗口显示
    ''Form3.Hide  '可以注释不用
    ''MSHFlexGrid1.Clear  '晕,你把MSHFlexGrid1数据清掉做什么?!
    Option1.Value = False
    Option2.Value = False
    Option3.Value = False
    Option4.Value = False
    Text21.Text = ""
    Text22.Text = ""
    Text23.Text = ""
    Text24.Text = ""  
    else  '没找到记录
        msgbox "没符合条件的记录!"
     end if
      

  22.   

    rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
      If Rs.RecordCount > 0 Then  '返回结果中的行数,可能没有找到记录
         ‘加入这句试看有没有记录后再执著行下面的
          Rs.MoveFirst
          Do Until Rs.EOF
             Form4.Label2.Caption = rs.Fields(0)
              ………
             Rs.MoveNext'加入这句就可以把焦点移到下一句
          Loop
       End If
      

  23.   

    http://expert.csdn.net/Expert/topic/1332/1332715.xml?temp=.8976099
    http://expert.csdn.net/Expert/topic/1332/1332715.xml?temp=.5616876
    点解两个是一样的,CSDN是做什么的,怪不得有时看不到 啦!