当前位置:编程学习 > VB >>

数据库已经连上,却读不到数据

 t = Format(Now(), "yyyymmdd")
    tt = PATH1 & "\" & t & ".dbf"
    
    If Dir(tt, vbHidden) = "" Then      '' 判断文件是否存在
        Label2.Caption = Now() & "   1#生产数据库连接失败!"
            Label2.ForeColor = vbRed
        Exit Sub
    Else
        t = Format(Now(), "yyyymmdd")
        
    End If
    If (dbcon.State <> 1) Then
    Set dbcon = New ADODB.Connection
    str = "Provider=MSDASQL.1;Driver=Microsoft Visual Foxpro Driver;SourceDB=" & PATH1 & ";SourceType=DBF;"
        dbcon.CursorLocation = adUseClient
        On Error Resume Next
        dbcon.Open str      ''打开A楼数据库
        If dbcon.State <> 1 Then
            Label2.Caption = Now() & "   1#生产数据库连接失败!"
            Label2.ForeColor = vbRed
            Exit Sub
        Else

            Label2.Caption = Now() & "   1#生产数据库连接成功!"
            Label2.ForeColor = vbWhite
        End If
    End If
    Set db_rs = New ADODB.Recordset
    sql = "select * from " & tt & " order by SJ"
    db_rs.Open sql, dbcon, adOpenKeyset, adLockOptimistic
    If db_rs.RecordCount > 0 Then
       db_rs.MoveFirst
       Do While Not db_rs.EOF
       pTime = Trim(db_rs.Fields("SJ"))
       GCMC = Trim(db_rs.Fields("GCMC"))
      If Trim(db_rs.Fields("GCBW")) <> "" Then
               GCBW = Trim(db_rs.Fields("GCBW"))
          Else
                GCBW = ""
      End If
     
       db_rs.MoveNext
       Loop
     

db_rs.RecordCount > 0 这句提示数据提供程序或其他服务返回   E_FAIL   状态  --------------------编程问答-------------------- 显示数据库已经连上 --------------------编程问答-------------------- 查看一下PATH1 & "\" & t & ".dbf"
这个表里是不是真的有数据 --------------------编程问答-------------------- 另外str是一个函数的名字,尽量不要用做变量名称 --------------------编程问答-------------------- 表里确实有数据,而且查询条件也是可行的 --------------------编程问答-------------------- 把adOpenKeyset改为AdOpenDynamic试试? --------------------编程问答-------------------- 运行第二次的时候 会在这里
db_rs.RecordCount > 0 这句提示数据提供程序或其他服务返回 E_FAIL 状态 --------------------编程问答--------------------
引用楼主 merlintan 的回复:
sql = "select * from " & tt & " order by SJ"

select * from 数据库里面的表名
不是路径名 --------------------编程问答-------------------- 改了也是不行 ,总会出现那个提示错误 --------------------编程问答-------------------- 这个是DBF 数据库,表名就是路径名 --------------------编程问答-------------------- DBF 数据库,表名就是路径名?
DBF 数据库,数据库名就是路径名,文件名才是表名 --------------------编程问答-------------------- 多亏这个还玩过
引用 10 楼 dbcontrols 的回复:
DBF 数据库,表名就是路径名?
DBF 数据库,数据库名就是路径名,文件名才是表名
--------------------编程问答-------------------- 要得到db_rs.RecordCount,使用客户端游标试试 db_rs.cursorlocation=aduseclient --------------------编程问答-------------------- 这个要支持一下
引用 12 楼 king06 的回复:
要得到db_rs.RecordCount,使用客户端游标试试 db_rs.cursorlocation=aduseclient
--------------------编程问答-------------------- O(∩_∩)O谢谢大家 已经解决
 还是连接参数的问题改为 
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + PATH1 + ";Extended Properties=dBASE IV;User ID=Admin;Password="
--------------------编程问答-------------------- 不结贴了?
引用 14 楼 merlintan 的回复:
O(∩_∩)O谢谢大家 已经解决
 还是连接参数的问题改为 

VB code
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + PATH1 + ";Extended Properties=dBASE IV;User ID=Admin;Password="
--------------------编程问答--------------------  没有养成结贴的习惯,等下次吧!
引用 15 楼 dbcontrols 的回复:
不结贴了?

引用 14 楼 merlintan 的回复:
O(∩_∩)O谢谢大家 已经解决
还是连接参数的问题改为

VB code
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + PATH1 + ";Extended Properties=dBASE IV;User ID=Admin;Password="
补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,