设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3500|回复: 10
打印 上一主题 下一主题

[窗体] 导入请教

[复制链接]
跳转到指定楼层
1#
发表于 2012-9-2 22:26:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们单位的电脑没有连网,所以数据库的数据不能即时共享,只能靠U盘拷来拷去。

现在遇到的问题如下:

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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2012-9-2 23:59:56 | 只看该作者
既然是同样格式的表,直接追加查询就好了。只是……局域网不外乎一个交换机和一些布线的成本而已,连这都没法用的话,也太寒碜了吧?
3#
 楼主| 发表于 2012-9-3 07:25:25 | 只看该作者
roych 发表于 2012-9-2 23:59
既然是同样格式的表,直接追加查询就好了。只是……局域网不外乎一个交换机和一些布线的成本而已,连这都没 ...

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

追加查询好像也不太行,因为会计表中填好的内容不准被覆盖,只有那些空白的内容才可被导入表相对应的字段内容替代。
4#
发表于 2012-9-3 08:16:22 | 只看该作者
无线路由器 150元, 无线网卡30元一个买3个,总投资不到250元就可解决局域网问题了。

点评

上次陪一个小MM去买TP-Link 300M的才120,看来俺价格砍得还行噢^_^  发表于 2012-9-3 18:29
5#
发表于 2012-9-3 14:23:31 | 只看该作者
存在则更新,不存在则追加。
6#
发表于 2012-9-3 18:33:08 | 只看该作者
以前记得老汉写过一个例子,参考下。但个人觉得还是有个局域网好些
http://www.office-cn.net/thread-95744-1-1.html

点击这里给我发消息

7#
发表于 2012-9-3 23:23:52 | 只看该作者
本帖最后由 鱼儿游游 于 2012-9-3 23:29 编辑

会计表和调度表 共同的字段是哪些? 要导入的字段有哪些?
8#
 楼主| 发表于 2012-9-5 13:49:44 | 只看该作者
鱼儿游游 发表于 2012-9-3 23:23
会计表和调度表 共同的字段是哪些? 要导入的字段有哪些?

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

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

点击这里给我发消息

9#
发表于 2012-9-5 20:41:50 | 只看该作者
本帖最后由 鱼儿游游 于 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
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
10#
 楼主| 发表于 2012-10-18 22:14:34 | 只看该作者
再请教下大家,由于数据未共享,导致会计和调度输入的数据有出入,比如说,管理卡号一样,但品号会计写的是A102-1,但调度却写成A102/11,所以在会计导入调度的记录时需要核对一下,相同管理卡号,品号不一样,或者外协单位不一样,生产任务不一样时,导入时就弹出提示,指明哪张管理卡号哪个字段的内容不一致,如果都一致,则就进行导入补充。

请问该怎么设计呢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-12 21:34 , Processed in 0.089363 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表