 |
操作系统: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。
|
| |
|
| |
|
| |
|
|