软件注册站
热情软件屋

 
运行时却读不到数据,但数据库的结构可以读进来
编号: QA004653    
建立日期: 2002年12月8日 最后修改日期: 2002年12月8日
所属类别: Visual Basic - 数据库
   
    操作系统:Win9x/Me/XP
    编程工具:VB6
    问题:我在VB6下用ADO编程读取DBF文件中的数据,在WIN98和WINDOWS ME下编译运行很正常,但在WINDOWS XP系统下运行时却读不到数据,但数据库的结构可以读进来,搞不懂怎么回事,请教是否下面语句有何问题?如果确实不行,在XP下如何读取??盼复!谢!
    DIM CN AS ADODB.CONNECTION
    DIM RS AS ADODB.RECORDSET
    
    SET CN = NEW ADODB.CONNECTION
    
    STRCN = "PROVIDE = MSDASQL.1;" _
     & "PERSIST SECURITY INFO = FALSE;" _
     & "DATA SOURCE = VISUAL FOXPRO TABLES;" _
     & "EXTENDED PROPERTIES = 'DSN = VISUAL FOXPRO TABLES;UID = ;SOURCEDB = C:\TEMP;SOURCE TYPE = DBF;EXCLUSIVE = NO;BACKGROUNDFETCH = YES;COLLATE = MACHINE;NULL = YES;DELETED = YES;" _
     & "INITIAL CATALOG = C:\TEMP"
    
    CN.OPEN STRCN
    
    SET RS = NEW ADODB.RECORDSET
    RS.OPEN 'SELECT * FROM TESTDBF",CN,ADOPENKEYSET,ADLOCKOPTIMISTIC
    

    
    想访问C:\TEMP\TESTDBF.DBF文件,但此时RS为空集。当然了,ODBC管理器中存在DSN:VISUAL FOXPRO TABLES,并且TESTDBF中肯定有数据。(yb)
   
    yb的意见:
    非常感谢你们的工作!这个问题是我问的!经过我们的摸索得知,解决方法是将连接的cursorlocation设置为aduserver可读入数据。原因不清楚!
    
    涂海宁的意见:
    可将DSN指定到具体的*.DBF去,而不必非要指定到*.DBF的那个目录上
    你的问题可能是出在Recordset后面的几个参数上 (猜的)
     Dim TmpSourceTableName As String '表名
     TmpSourceTableName="A08"
     Dim cnFox As Connection
     Set cnFox = New Connection
     cnFox.CursorLocation = adUseClient
     cnFox.Open "PROVIDER=MSDASQL;uid=;pwd=;dsn=VFP-A08.DBF-DNS;" '此处DSN应保证可用
     Dim rsFox As ADODB.Recordset
     Set rsFox = New ADODB.Recordset
     rsFox.Open "select * from " & TmpSourceTableName, cnFox, adOpenStatic, adLockReadOnly
     If rsFox.RecordCount > 0 Then
     '在此加入读取数据等操作
     Else
     '在此加入数据库中无数据的处理
     End If
    

    本代码在Win2000、WinXP(HomeEdit)下正常运行

    

此问题由涂海宁等回答。

附加关键字:编程, 源程序, programming, source code, Visual Basic, VB, 数据库, database, query

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio