Office中国论坛/Access中国论坛

标题: 导入请教 [打印本页]

作者: 简    时间: 2012-9-2 22:26
标题: 导入请教
我们单位的电脑没有连网,所以数据库的数据不能即时共享,只能靠U盘拷来拷去。

现在遇到的问题如下:

会计表和调度表本来是一个表,由于分工不同,各人填入的内容也不同,但最后调度的表内容都要拷给会计。我就想问,会计如何把调度表中需要的内容按管理卡号和品号相对应的方式导入到会计表中呢。

[attach]50297[/attach]
作者: roych    时间: 2012-9-2 23:59
既然是同样格式的表,直接追加查询就好了。只是……局域网不外乎一个交换机和一些布线的成本而已,连这都没法用的话,也太寒碜了吧?
作者: 简    时间: 2012-9-3 07:25
roych 发表于 2012-9-2 23:59
既然是同样格式的表,直接追加查询就好了。只是……局域网不外乎一个交换机和一些布线的成本而已,连这都没 ...

主要是距离太远了,实施内部局域网太麻烦。

追加查询好像也不太行,因为会计表中填好的内容不准被覆盖,只有那些空白的内容才可被导入表相对应的字段内容替代。
作者: layaman_999    时间: 2012-9-3 08:16
无线路由器 150元, 无线网卡30元一个买3个,总投资不到250元就可解决局域网问题了。
作者: todaynew    时间: 2012-9-3 14:23
存在则更新,不存在则追加。
作者: roych    时间: 2012-9-3 18:33
以前记得老汉写过一个例子,参考下。但个人觉得还是有个局域网好些
http://www.office-cn.net/thread-95744-1-1.html
作者: 鱼儿游游    时间: 2012-9-3 23:23
本帖最后由 鱼儿游游 于 2012-9-3 23:29 编辑

会计表和调度表 共同的字段是哪些? 要导入的字段有哪些?
作者: 简    时间: 2012-9-5 13:49
鱼儿游游 发表于 2012-9-3 23:23
会计表和调度表 共同的字段是哪些? 要导入的字段有哪些?

共同字段是:管理卡号,品号,外协单位,生产任务,计划下单日期,计划完工日期。

需要导入的字段为:小组,来图日期,实际完工日期。

作者: 鱼儿游游    时间: 2012-9-5 20:41
本帖最后由 鱼儿游游 于 2012-9-5 20:43 编辑


是这样的效果吗?
  1. Option Compare Database
  2. Option Explicit

  3. Private Sub cmddr_Click()
  4.     Dim strRelated As String
  5.     Dim strUpdate As String
  6.     strRelated = "管理卡号=管理卡号,品号=品号,外协单位=外协单位,生产任务=生产任务"   '表关联字段列表:目标表的字段=源表的字段
  7.     strUpdate = "小组=小组,来图日期=来图日期,实际完工日期=实际完工日期"              '表更新字段列表:目标表的字段=源表的字段
  8.     Call ImportFromTable("tblhj", "tbldd", strRelated, strUpdate)
  9. End Sub
  10. '
  11. ' 导入数据
  12. '
  13. Private Function ImportFromTable(strObjectTableName As String, strSourceTableName As String, ByVal strRelated, ByVal strUpdate) As Boolean
  14. On Error GoTo Err_Handler

  15.     Dim blnResult  As Boolean
  16.     Dim rstSource  As Object
  17.     Dim rstObject  As Object
  18.     Dim arrRelated As Variant
  19.     Dim arrUpdate  As Variant
  20.     Dim arrTemp    As Variant
  21.     Dim strSQL     As String
  22.     Dim strWhere   As String
  23.     Dim lngCounter As Long
  24.     Dim intI       As Integer
  25.    
  26.     '初始化:返回值
  27.     blnResult = False
  28.    
  29.     '定义ADO记录集
  30.     Set rstSource = CreateObject("ADODB.Recordset")
  31.     Set rstObject = CreateObject("ADODB.Recordset")
  32.    
  33.     '表关联字段列表:目标表的字段=源表的字段
  34.     arrRelated = Split(strRelated, ",")
  35.    
  36.     '表更新字段列表:目标表的字段=源表的字段
  37.     arrUpdate = Split(strUpdate, ",")
  38.       
  39.     '打开源数据库的数据表
  40.     strSQL = "SELECT * FROM [" & strSourceTableName & "]"
  41.     rstSource.Open strSQL, CurrentProject.AccessConnection, 1, 1
  42.     If rstSource.RecordCount > 0 Then rstSource.MoveFirst
  43.     lngCounter = 0
  44.    
  45.     '遍历源表所有记录
  46.     Do While Not rstSource.EOF
  47.        strWhere = ""
  48.        For intI = LBound(arrRelated) To UBound(arrRelated)
  49.           arrTemp = Split(arrRelated(intI), "=")
  50.           strWhere = strWhere & Trim(arrTemp(0)) & "='" & rstSource.Fields(Trim(arrTemp(1))) & "'"   '目标表的字段=源表的字段的值
  51.           strWhere = strWhere & " AND "
  52.        Next
  53.        strWhere = Left(strWhere, Len(strWhere) - 5)
  54.        '打开目标表,并判断是否存在指定条件的记录
  55.        strSQL = "SELECT * FROM [" & strObjectTableName & "] WHERE " & strWhere
  56.        rstObject.Open strSQL, CurrentProject.AccessConnection, 1, 3
  57.        If rstObject.RecordCount > 0 Then
  58.           '存在则:用源表中的有字段更新目标表中的有关字段
  59.           rstObject.MoveFirst
  60.           For intI = LBound(arrUpdate) To UBound(arrUpdate)
  61.              arrTemp = Split(arrUpdate(intI), "=")
  62.              rstObject.Fields(Trim(arrTemp(0))) = rstSource.Fields(Trim(arrTemp(1)))
  63.           Next
  64.           lngCounter = lngCounter + 1
  65.           rstObject.Update
  66.        End If
  67.        rstObject.Close
  68.        '源表下一条记录
  69.        rstSource.MoveNext
  70.     Loop
  71.     rstSource.Close
  72.    
  73.     If lngCounter > 0 Then MsgBox "共导入" & CStr(lngCounter) & " 笔记录", vbExclamation, "导入结果"
  74.    
  75.     '返回值
  76.     blnResult = True

  77. Exit_Handler:
  78.     '返回值
  79.     ImportFromTable = blnResult
  80.     '释放变量
  81.     Set rstSource = Nothing
  82.     Set rstObject = Nothing
  83.     '退出本函数
  84.     Exit Function
  85. Err_Handler:
  86.     blnResult = False
  87.     MsgBox Err.Description, vbExclamation, "导入出错"
  88.     Resume Exit_Handler
  89. End Function
复制代码
[attach]50327[/attach]
作者: 简    时间: 2012-10-18 22:14
再请教下大家,由于数据未共享,导致会计和调度输入的数据有出入,比如说,管理卡号一样,但品号会计写的是A102-1,但调度却写成A102/11,所以在会计导入调度的记录时需要核对一下,相同管理卡号,品号不一样,或者外协单位不一样,生产任务不一样时,导入时就弹出提示,指明哪张管理卡号哪个字段的内容不一致,如果都一致,则就进行导入补充。

请问该怎么设计呢。
作者: todaynew    时间: 2012-10-19 11:51
本帖最后由 todaynew 于 2012-10-19 11:52 编辑
简 发表于 2012-10-18 22:14
再请教下大家,由于数据未共享,导致会计和调度输入的数据有出入,比如说,管理卡号一样,但品号会计写的是 ...


导入后都执行如下语句不就完事了:
docmd.runsql "update tbname set 管理卡号=replace(管理卡号,'/','-')"




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3