Access交流中心

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

求通用导入窗体或示例

王三平  发表于:2008-08-26 16:38:56  
复制

求通过导入窗体或示例。具体要求如下:

1、打开选择文件对话框,选择文件;文件类型可以为EXCEL、ACCESS或文本;

2、如果是EXCEL或ACCESS文件,可选择导入的工作表名或数据表名;

3、选择表名后,再选择业务日期区间,即只有处于这个业务日期区间的数据行能导入到目标表中;

4、选择本系统中的目标表名(或默认表名);导入同样的数据时(数据库内设置为主键值的)要把原来的数据替换,否则增加。

 

如果没有现成的,可提供相关的示例也行。热切期盼各位的大力帮助。

 

这个功能具有非常广泛的应用前景,满足多种数据交换要求。

 

例如各分店在本店的软件中录入业务销售单后,导出某个文件,传递到总部,总部选择性导入,把各分店的数据添加到总部的软件系统中。

 

 

Top
竹笛 发表于:2008-08-26 21:37:22
不错的想法!

王三平 发表于:2008-08-27 08:40:24
请各位高手无私奉献,提供思路

竹笛 发表于:2008-08-27 08:55:28
基本上可以预期,只是个好的想法,真正去做,是 很难+很花费时间.

王三平 发表于:2008-08-27 10:14:24

我希望平台除了能实现网络共享数据的功能外,能够实现上面提到这种数据交换功能。实际上这种数据交换方式广泛应用在实际中,我所接触到各税务局、劳动局等提供的软件,基本上就是这种数据交换模式。如果ACCESS中也能实现这种数据交换模式,那么对我们来讲,是一种福音,参加UMV平台的队员会增加不少



竹笛 发表于:2008-08-27 10:23:30
各税务局、劳动局等提供的软件的导入并不是通用的,因为假定我要导入我的EXCEL报表中销售明细,他们的肯定无法导入.

王三平 发表于:2008-08-27 10:30:44
那么可以分别设计一个只能设计一种格式的,如ACCESS表或文本。

王三平 发表于:2008-08-27 10:33:01
那么,可以设计只针对ACCESS格式,并设计一个导出表(设定好源表名和目标表名),可选择日期区间,导入时,当数据重复,即替换原记录,不重复,即追加

王三平 发表于:2008-08-27 10:41:43
附加说明:源表和目标表的数据表结构是一模一样的,且表名也一样,只是在不同的ACCESS数据库中而已。

蒋海兵 发表于:2008-08-27 10:41:57

我做好了一个通用的导入窗体,分追加导入跟全新导入(先清空数据库,然后再导入):SjyTblName设定为公共变量的数据源表名,XlsName设定为公共变量的导入表表名.

1:追加导入:

    Sql2 = "INSERT into " & SjyTblName & " SELECT * FROM tblouttable"
    If MsgBox("您确定需要追加数据吗?", vbYesNo + vbInformation, Forms!usysfrmLogin.Caption) = vbYes Then
        If Dir(CurrentProject.Path + "\批量导入模版\" & XlsName) = "" Then
            MsgBox "批量导入模版文件夹中不存在" & XlsName & "文件!", vbCritical, "提示"
            Exit Sub
        Else
            If fExistTable("tblOuttable") = True Then    '如果存在这个表,则删除
                DoCmd.RunSQL "drop table tblOuttable"
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "tblouttable", CurrentProject.Path & "\批量导入模版\" & XlsName, True
                DoCmd.RunSQL Sql2
                MsgBox ("数据追加成功!")
                Forms!usysfrmMain!frmChild.SourceObject = FrmName
            Else
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "tblouttable", CurrentProject.Path & "\批量导入模版\" & XlsName, True
                DoCmd.RunSQL Sql2
                MsgBox ("数据追加成功!")
                Forms!usysfrmMain!frmChild.SourceObject = FrmName
            End If
            DoCmd.SetWarnings True
        End If
    End If

 

2:全新导入:

    Sql1 = "delete * from " & SjyTblName
    Sql2 = "INSERT into " & SjyTblName & " SELECT * FROM tblouttable"
    If MsgBox("您确定需要初始化所有数据后进行导入吗?", vbYesNo + vbInformation, Forms!usysfrmLogin.Caption) = vbYes Then
       
        DoCmd.RunSQL Sql1
        Forms!usysfrmMain!frmChild.SourceObject = FrmName
        If Dir(CurrentProject.Path + "\批量导入模版\" & XlsName) = "" Then
            MsgBox "批量导入模版文件夹中不存在" & XlsName & "文件!", vbCritical, "提示"
            Exit Sub
        Else
            If fExistTable("tblOuttable") = True Then    '如果存在这个表,则删除
                DoCmd.RunSQL "drop table tblOuttable"
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "tblouttable", CurrentProject.Path & "\批量导入模版\" & XlsName, True
                DoCmd.RunSQL Sql2
                MsgBox ("数据已经全新导入成功!")
                Forms!usysfrmMain!frmChild.SourceObject = FrmName
            Else
                DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel8, "tblouttable", CurrentProject.Path & "\批量导入模版\" & XlsName, True
                DoCmd.RunSQL Sql2
                MsgBox ("数据已经全新导入成功!")
                Forms!usysfrmMain!frmChild.SourceObject = FrmName
            End If
            DoCmd.SetWarnings True
        End If
    End If

 



叶海峰 发表于:2008-08-27 11:11:28

点击下载此附件

 

试一下这个,应该可以满足你要求



小龙 发表于:2008-08-27 11:34:04
9楼斑竹设计的,很实用!

王三平 发表于:2008-08-27 14:02:45

谢谢大家的思路。我最想知道的一个问题是:导入时,当数据重复,即替换原记录,不重复,即追加。

这个功能如何实现?追加导入,当欲追加的这条记录的主键与源表中的某条记录的主键一致时,自动替换源表中的这条记录。这主要是为了克服这个情况,当分店中的以前导入的某些记录中的数据修改时,再次导入时,可在总部的数据中及时更新,与分店保持一致。



王三平 发表于:2008-08-29 16:53:15

此问题难度太大,就结贴了,降难度为另一贴,http://www.accessoft.com/bbs/showtopic.asp?id=2078

请在此贴回复即可



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