我用VB做了个小程序--------VB+ACCESS
第一步:先从ACCESS数据库Test.mdb中的Table1中查询出一个数据项,然后把这个数据项放进Text1控件里,
第二步:是进行第二次查询--调用Text1中的值作为这次查询的条件,从Table中查询另一条记录你们看发生了什么???------第二次查询没有返回值!!!
我可以肯定确定以及一定!!代码和逻辑还有表中记录没有错误!!!!!我进行了N次实验,最后确诊为:::VB中调用控件中的值作为查询条件是不被执行的,尽管可以把那个值传过来.
但也有人说是我的ADO需要升级,正在争议中.
高手们也来给点看法吧,真诚期待中............

解决方案 »

  1.   


    第一步:
    conn1.open  constr'打开数据库连接
    Rs1.Open "select CPS_ID from checks where CK_ID='1001'", Conn1, adOpenKeyset, adLockOptimistic  '查询出数据项
    text1.text=rs1.getstring'把查询到的结果附给text1
     
    第二步:
    conn2.open constr'打开另一个连接
    rs2.open "select * from chanpin where CP_ID='" & text1.text & "'",Conn1, adOpenKeyset, adLockOptimistic  '查询出数据集 通过调用text1中的值到此为止一切正常,而且也有传过来TEXT1中的值但到了最后这步,却发现其实第二步查询并没有返回记录集.
    就是这样了
    代码在发上来时省略了一些与此无关的,
    请大家看看啊
      

  2.   

    我不认为是微软的错误,请加我qq 397667325,把文件传过来,或发到信箱[email protected],我肯定能找到你的错误
      

  3.   

    这要是VB自身的问题,ms就太牛了
      

  4.   

    rs2.open "select * from chanpin where CP_ID='" & text1.text & "'",Conn1, adOpenKeyset, 
     你确定  表名字没有错???
     你改成checks表看看
      

  5.   

    没有错啊
    我确定啊
    不管我用哪个表都是不行
     但我把参数直接改成CHANPIN表中存在的ID进行查询,就可以查出结果集啊
      

  6.   

    先不要急于对MS做评论,多想想其它可能,我猜测有一种可能,就是你第一次查询的返回值含有不可见字符,如:空格、Chr(0)等
    换下面这句试试:
    rs2.open "select * from chanpin where CP_ID='" & trim(replace$(text1.text,vbnullchar,vbnullstring)) & "'",Conn1, adOpenKeyset若text1.text确定是数值的话,用Val(text1.text)也行,当然ID也不能有前导"0"
      

  7.   

    "select * from chanpin where CP_ID='" & text1.text & "'"把这句最后的值查一下是什么?估计出错的地方
      

  8.   

    同意小吉的 应该是SELECT语句有错误
      

  9.   

    找到错误了:
            Text2.Text = rs1!cps_id '.GetString -----这里修改了
            conn2.Open str '打开新的连接,进行第二次查询,调用了Text2.text
            rs2.Open "select CP_STORE from chanpin1 where CP_ID='" & Text2.Text & "'", conn2, adOpenKeyset, adLockOptimistic
            Text3.Text = rs2!cp_store '.GetString -----这里修改了'把查询出的CP_STORE存在Text3中
      

  10.   

    GetString 方法 (ADO Recordset)
    将 Recordset 作为字符串返回。



    说明保存到字符串的数据为行数据而非纲要数据,因此不能使用该字符串重新打开记录集。
      

  11.   

    恩!!!按照iamtsfw的修改方法的确可以实现我的目的了!
    很厉害那!!!!
    谢谢你啊!
    呵呵!
    高手啊!
    不过为什么不能按照的的方法解决呢???
    我怎么都想不明白呢.........
      

  12.   

    我从MSDN上找到的关于GetString的帮助:GetString 方法 (ADO Recordset)
    将 Recordset 作为字符串返回。 ---注意这里的Recordset,意思是把整个记录集作为字符串返回,因为你的返回字段都是一个,所以看不出什么问题,如果选择多个字段,那么返回的内容就包含多个字段了



    说明保存到字符串的数据为行数据而非纲要数据,因此不能使用该字符串重新打开记录集。----注意这里的不能使用该字符串重新打开记录集!!!
      

  13.   

    看不懂- -
    我为什么看不懂.
    我想学VB.
    可以先下一个VB6.0自学么?