Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

ACCESS在局域网上可不可以互相传输数据

lj  发表于:2008-02-16 10:15:26  
复制

我问老师一个问题,ACCESS在局域网上可不可以互相传输数据?

 

Top
竹笛 发表于:2008-02-16 10:32:15
可以,可以参考:《如何用Access开发局域网软件http://www.accessoft.com/article-show.asp?id=127

墨之色 发表于:2008-03-03 20:50:24


BaoChengReng 发表于:2008-03-12 14:09:02

ACCESS在局域网上可不可以互相传输数据?
我对此也很感兴趣,问题是纯粹的导入导出,还是数据同步交换?
目前我尝试过数据的导入导出,对于同步交换尚未解决。
我的方法可能很笨拙,只把我的思路提出来,抛砖引玉。

首先建一个窗体,在窗体上建一个命令按钮,点击命令按钮打开文件路径(打开文件的模块可参
考网上李寻欢提供的),找到你要导入表的数据库,它的路径如strFulPth(含数据库名),同时
用VBA编写一段程序
Set dbs = DBEngine(0).OpenDatabase(strFulPth, False, False)
SQL = "SELECT MSysObjects.Name FROM MSysObjects WHERE " & _
      "(MSysObjects.Flags=0 AND MSysObjects.Type=1);"
Set rst = dbs.OpenRecordset(SQL)
If rst.RecordCount = 0 Then Exit Sub
Do Until rst.EOF
   If Left(rst("Name"), 4) <> "MSys" Then sWnm = sWnm & rst("Name") & ";"
      sWtp = sWtp & rst("Type") & ","
   rst.MoveNext
Loop
上述这个文本变量sWnm就是要导入的数据库的全部表的名称,你可以把表名称逐个追加到一个对象表,
如TL清单,或者把这个文本变量作为列表框的RowSource,以供选择表名。

表名的剥离有以下方法
set dbs=CurrentDB

Do Until Len(sWnm) = 0
   iNm = InStr(sWnm, ",")
   sNm = Mid(sWnm, 1, iNm - 1)         ‘每个表的名称
   将每个表追加入TL清单程序省略
   If Len(sWnm) = 0 Then Exit Do
Loop
然后对这个对象表(TL清单)进行循环,将对象表中每个表名与本机的所有表名进行比较,如果不存在则提问
是否要导入,如果存在提问是否覆盖。
strSc=每个表的表名
If IsNull(DLookup("Name", "MSysObjects", "Name='" & strSc & "' And Type=1")) Then
   DoCmd.TransferDatabase acImport, "Microsoft Access", strFulPth, acTable, strSc, strSc, False
Else
   strMessage = sObnm & " " & strSc & " 已经存在,是否覆盖?"
   If Confirm(strMessage) Then
      DoCmd.DeleteObject acTable, strSc
      DoCmd.TransferDatabase acImport, "Microsoft Access", sRspath, acTable, strSc, strSc, False
   End If
End If
如果是导出则对象表的产生改为
Set dbs = CurrentDB
SQL = "SELECT MSysObjects.Name FROM MSysObjects WHERE " & _
      "(MSysObjects.Flags=0 AND MSysObjects.Type=1);"
Set rst = dbs.OpenRecordset(SQL)
If rst.RecordCount = 0 Then Exit Sub
Do Until rst.EOF
   If Left(rst("Name"), 4) <> "MSys" Then sWnm = sWnm & rst("Name") & ";"
      sWtp = sWtp & rst("Type") & ","
   rst.MoveNext
Loop
然后打开目标文件以获得目标路径strFulPth,步骤类同。
DoCmd.TransferDatabase acExport, "Microsoft Access", strFulPth, acTable, strSc, strSc, False
但是导出表时,目标文件必须是关闭的,而且只能是覆盖方式导出。
对于更新式的同步传输,类似于手机与PC之间同步传输,尚未想出思路,也希望知道这方面的思路。
以上仅供参考。



lj 发表于:2008-09-30 14:50:34
我在编译过程中出现下面图

ACMAIN.CHM 发表于:2008-10-05 22:11:36

只要你有需求,总有可以找到解决方案的。

 

关键要看你所说的"互相传输数据"是什么意思。 定时同步的话,你可以用一些脚本。



总记录:5篇  页次:1/1 9 1 :