设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[窗体] 导入请教

[复制链接]

点击这里给我发消息

1#
发表于 2012-9-3 23:23:52 | 显示全部楼层
本帖最后由 鱼儿游游 于 2012-9-3 23:29 编辑

会计表和调度表 共同的字段是哪些? 要导入的字段有哪些?

点击这里给我发消息

2#
发表于 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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-27 11:25 , Processed in 0.095899 second(s), 25 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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