主题:如何读取Access数据库(*.MDB)的系统表内容?
			 llm9178
				 [专家分:13400]  发布于 2003-07-16 17:05:00
 llm9178
				 [专家分:13400]  发布于 2003-07-16 17:05:00							
			谁知道如何读取Access数据库(*.MDB)的系统表内容?
						
					 
		
			
回复列表 (共5个回复)
		
								
				沙发
				
					 s_tiger [专家分:5060]  发布于 2003-07-16 19:04:00
s_tiger [专家分:5060]  发布于 2003-07-16 19:04:00				
				VC 中可以用中odbc , vfp 中也可以,不过有些麻烦,你查一下msdn 98.应该找得到。
							 
						
				板凳
				
					 llm9178 [专家分:13400]  发布于 2003-07-16 19:11:00
llm9178 [专家分:13400]  发布于 2003-07-16 19:11:00				
				楼上的同志,我是要读系统表,而不是用户建立的数据表。
你说的方法只能读取数据表。
							 
						
				3 楼
				
					 FOX本色 [专家分:1950]  发布于 2003-07-17 09:49:00
FOX本色 [专家分:1950]  发布于 2003-07-17 09:49:00				
				大哥哥,我不知道这样是不是一会事啊
							 
						
				4 楼
				
					 llm9178 [专家分:13400]  发布于 2003-07-17 18:50:00
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
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
							 
									
			
我来回复