我有一个MS Access数据库,大约有1000个表 . 表彼此独立,即它们彼此链接 . 基本上每个表都包含特定商品的库存记录 . 每个表的名称是项目的名称,例如125克肥皂,200毫升油等,并包含以下列: -
-
日期
-
每日开盘股票
-
每日销售额
-
每日购买
-
每日收盘股票
每天,所有商品的销售/购买都记录在会计软件中 . “结束日期”报告摘要以Excel格式生成 . 此报告是所有货物的每日销售/购买的综合报告, row-wise . Excel中的列是:
-
日期
-
物品名称
-
每日开盘股票
-
每日销售额
-
每日购买
-
每日收盘股票
目前,我必须手动打开Access中的每个表并从excel报告中复制粘贴相应的每日销售/购买数据 . 我想自动执行此过程,以便根据项目名称将记录自动附加到每个相应的表中 .
总之,我想从 1 Ms Excel电子表格中包含的数据更新Ms Access数据库文件中的多个表 .
那可能吗 ?非常感谢您的帮助 .
谢谢,Thiru V. Klack
2 回答
我的第一个问题是为什么Access数据库不能匹配Excel电子表格的数据结构?从1个电子表格更新1个Access表比您尝试的更简单 . 拥有1,000个具有相同数据结构的表,其中每个表都以产品命名,对我来说似乎很可疑 .
话虽这么说,如果你需要保留你的1000个表(我真的很惊讶你没有达到Access的数据库最大阈值),有一些方法可以使它工作 . 我建议有一个查找表,将产品(如电子表格中显示的那样)与Access中的表格相匹配 . 然后,您将Excel数据导入到临时表中,并运行一些VBA代码以循环查找表,运行查询以将Excel中的所有数据附加到相应的Access表中 . 像这样的东西:
同样,我当然不是在鼓吹你采用这种方法:如果可以的话,我强烈恳请你重构你的数据库,不要有1000个几乎相同的表 .
扎克的答案提供了一种方法来做你所要求的,但建议你做其他事情 . 我将尝试证明他推荐的内容适用于您的情况,并向您展示如何实现它 .
您希望将Excel电子表格中的数据传输到包含相同数据的关系数据库中 - 通常是为了提供更好的访问/操作 . 数据位于一天的大表中,每个产品都有一个单独的行,并且您希望能够查看单个产品的整个历史记录,因此您已将表分开 .
这将显着减慢自动传输过程 - 重复写入和反复处理SQL的长循环 . 您可以在没有此设置的情况下以这种方式查看数据 . 让我们调用这个tblProductDetails
一张 table 上有你的产品信息 - 比如产品的名称,价格是多少......另一张表有买入和卖出的进/出记录,随时记录库存情况 . 第二张表将有很多记录,因为它是每天购买和/或销售的每种产品的新记录 . 我们可以称之为tblInOut .
使用
Select
查询可以保存在Access中,您可以随时查看任何一个产品的历史记录 - 您甚至可以将其设置为变量,这样当您打开保存的唯一查询时,它会提示您输入你想要查找的产品 .我已经为你查了一个4 product sample schema来查询显示所有数据,另一个只显示了一个产品's history. You can use the second query exactly as is in Access'查询构建器(SQL视图),其中
'125g Soap'
(在倒数第二行)在查询名称中提到了所以你知道哪个查询是哪个 .如果你只想使用一个查询,做同样的事情有一个例外:在倒数第二行,它说
'125g Soap'
用Product_Name
替换整个事物(没有引号),当你打开查询时,Access会给你一个消息框,要求您输入产品名称 .此功能仅在您完全键入名称时才有效,因此您可能更喜欢只构建一个表单,以便为用户提供一个组合框,用于选择确切的产品名称 .