将 MS Access 数据导入 VFP
Importing MS Access data into VFP
我需要将数据从 Access 应用程序导入到 VFP 表中。我在网上找到了将 VFP 数据读取到 Access 中的解决方案,但不是相反。 MS* 建议的连接字符串似乎丢失了一些东西,因为我不断收到一个对话框,询问我源数据的类型
- "Microsoft.ACE.OLEDB.12.0;Data Source=MyAccessApp.accdb;Persist Security Info=False;"
如有任何建议and/or解释,我将不胜感激。
/伯纳德
如果您在 VFP 中编写程序,那么您可以在不使用 "DSN" 的情况下从 VFP 连接到 Access 数据库,但需要完整的连接字符串设置。完成后,您可以将数据向下查询到本地 VFP 游标,然后在 VFP 中执行您想要的操作...复制到 VFP table,查询数据子集,将记录添加到另一个 VFP table 根据您需要处理的任何标准。
nAccessHandle = sqlstringconnect( "DRIVER=Microsoft Access Driver (*.mdb, *.accdb); DBQ=C:\YourFullPath\YourAccessDatabase.accdb;" )
if nAccessHandle < 1
messagebox( "Invalid connection to access database" )
return
endif
*/ Valid handle, now, query down the data to a local VFP cursor
nSQLAns = SQLExec( nAccessHandle, "select * from YourAccessTable", "C_CursorInVFP" )
if nSQLAns < 1
messagebox( "Unable to get any data..." )
sqldisconnect( nAccessHandle )
return
endif
*/ Done with connection
sqldisconnect( nAccessHandle )
select C_CursorInVFP
copy to C:\SomeOtherPath\NowItsAVFPTable
*/ Or, query from it within VFP or loop from it...
select C_CursorInVFP
scan
*/ Look for records in VFP to do/ignore as needed...
select * from SomeVFPTable ;
where SomeKey = C_CursorInVFP.KeyFromAccessTable;
into cursor C_WasItFound readwrite
if reccount( "C_WasItFound" ) > 0
*/ Do what if it WAS found
else
*/ Do what if it WAS NOT found
endif
endscan
我需要将数据从 Access 应用程序导入到 VFP 表中。我在网上找到了将 VFP 数据读取到 Access 中的解决方案,但不是相反。 MS* 建议的连接字符串似乎丢失了一些东西,因为我不断收到一个对话框,询问我源数据的类型
- "Microsoft.ACE.OLEDB.12.0;Data Source=MyAccessApp.accdb;Persist Security Info=False;"
如有任何建议and/or解释,我将不胜感激。
/伯纳德
如果您在 VFP 中编写程序,那么您可以在不使用 "DSN" 的情况下从 VFP 连接到 Access 数据库,但需要完整的连接字符串设置。完成后,您可以将数据向下查询到本地 VFP 游标,然后在 VFP 中执行您想要的操作...复制到 VFP table,查询数据子集,将记录添加到另一个 VFP table 根据您需要处理的任何标准。
nAccessHandle = sqlstringconnect( "DRIVER=Microsoft Access Driver (*.mdb, *.accdb); DBQ=C:\YourFullPath\YourAccessDatabase.accdb;" )
if nAccessHandle < 1
messagebox( "Invalid connection to access database" )
return
endif
*/ Valid handle, now, query down the data to a local VFP cursor
nSQLAns = SQLExec( nAccessHandle, "select * from YourAccessTable", "C_CursorInVFP" )
if nSQLAns < 1
messagebox( "Unable to get any data..." )
sqldisconnect( nAccessHandle )
return
endif
*/ Done with connection
sqldisconnect( nAccessHandle )
select C_CursorInVFP
copy to C:\SomeOtherPath\NowItsAVFPTable
*/ Or, query from it within VFP or loop from it...
select C_CursorInVFP
scan
*/ Look for records in VFP to do/ignore as needed...
select * from SomeVFPTable ;
where SomeKey = C_CursorInVFP.KeyFromAccessTable;
into cursor C_WasItFound readwrite
if reccount( "C_WasItFound" ) > 0
*/ Do what if it WAS found
else
*/ Do what if it WAS NOT found
endif
endscan