主题:如何读取Access数据库(*.MDB)的系统表内容?
llm9178
[专家分:13400] 发布于 2003-07-16 17:05:00
谁知道如何读取Access数据库(*.MDB)的系统表内容?
回复列表 (共5个回复)
沙发
s_tiger [专家分:5060] 发布于 2003-07-16 19:04:00
VC 中可以用中odbc , vfp 中也可以,不过有些麻烦,你查一下msdn 98.应该找得到。
板凳
llm9178 [专家分:13400] 发布于 2003-07-16 19:11:00
楼上的同志,我是要读系统表,而不是用户建立的数据表。
你说的方法只能读取数据表。
3 楼
FOX本色 [专家分:1950] 发布于 2003-07-17 09:49:00
大哥哥,我不知道这样是不是一会事啊
4 楼
llm9178 [专家分:13400] 发布于 2003-07-17 18:50:00
我是要读系统表,而不是用户建立的数据表。
比如:Access2000中,系统表共有5个:
MSysAccessObjects、MSysACEs、MSysObjects、MSysQueries、MSysRelationships
MSDN绝对不会介绍系统表的。(它由系统自动维护,不可修改,一般方法是看不到的)。
Access文档及MSDN只会介绍读取用户数据表的方法。
5 楼
zzzzaaaa [专家分:0] 发布于 2005-09-09 00:22:00
我找了半年多,终于找到了别人的代码,分析出自己的,给你参考一下,
&&A_V转换程序.PRG(裁剪后,参考用)
Local cMyFile,nConnHandle,nResult,cSQLCommand,nNum,cNewName,nsum,Nget
nNum=0
cMyFile = sys_shiyi
** 用 SQLStringConnect 来联接到 MDB 文件
nConnHandle = ;
SQLSTRINGCONNECT('DRIVER=MICROSOFT ACCESS DRIVER (*.MDB);DBQ=' + cMyFile)
If nConnHandle > 0
nResult = SQLTables(nConnHandle, 'TABLE') &&要知道哪些表包含在 MDB 文件中
If nResult > 0
Select SQLResult &&选择 SQLResult 并遍历游标
** 生成一个 SQL SELECT 语句来传递到 SQLEXEC()
LOCATE FOR ALLTRIM(table_name)="ZW_voucher"
cSQLCommand = ;
"SELECT * FROM [" + ALLTRIM(SQLResult.table_name) + "]"
**取得文件名
cNewName = STRTRAN(ALLTRIM(SQLResult.table_name), " ", "_")
nGetData = SQLEXEC(nConnHandle,cSQLCommand,cNewName )
IF nGetData > 0 &&SQLEXEC() 执行成功
nNum=nNum+1
ENDIF
**将数据合成到临时表中
Select Distinct zw_voucher.voucher_id, zw_voucher.fiscalyear,;
0.00 as z1,0.00 as z2,0.00 as z3,0.00 as z4,0.00 as z5;
FROM ;
zw_voucher ;
INNER Join Zw_vchentry ;
ON zw_voucher.voucher_id = Zw_vchentry.voucher_id;
WHERE LEFT(ALLTRIM(Zw_vchentry.acccode),7)=("4104-01");
ORDER By zw_voucher.vchdate;
INTO Cursor ls
我来回复