我被卡住了,需要帮助/建议。我很确定我不是第一个遇到这个问题的人,但我似乎在网上找不到答案。
我们正在从许多工厂收集各种数据。这主要是年度峰值产量等的预测值。这种数据收集每年都会重复。
我们目前在Excel中跟踪此数据,Excel具有以下结构:
Factory | 2010 | 2011 | 2012 | ..
----------------------------------
A | 20 | 30 | 28 | ..
B | | 39 | 55 | ..在这个例子中,工厂B在2011年才开始生产。如果我们收集额外一年的数据,我们只需添加一列。如果预测数据发生变化,我们只需输入新值并丢失旧值即可。您可以想象这种工作方式有其局限性:对于丢失的数据,表变得相当稀疏。旧值无法追溯。没有对值的来源的引用。
为了满足我们对更好系统的需求,我运用了我古老的数据库知识。在Access 2007中,我创建了以下结构:
表:工厂
FacID | FactoryName
---------------------
1 | A
2 | B表:来源
SouID | Source | SourceDate
---------------------------------
1 | DocumentX | Sep. 2009
2 | DocumentY | Jan. 2010表:参数
ParID | FacID | SouID | ParamType | Year | Value
------------------------------------------------------
1 | 1 | 1 | PeakProduction | 2010 | 20
2 | 1 | 1 | PeakProduction | 2011 | 30
3 | 1 | 1 | PeakProduction | 2012 | 28
4 | 2 | 1 | PeakProduction | 2011 | 39
5 | 2 | 2 | PeakProduction | 2012 | 55对于每个新的数据集合,我们只需添加一个新的源文档并附加Parameters表。通过这种方式,我们可以随时恢复到旧数据。此外,如果收集了额外的年份,则不需要向任何表添加额外的列。
虽然实际设置比较复杂,但上面的示例足以说明我遇到的问题:要将数据输入数据库,我希望有一个类似于原始Excel工作表布局的表单,即:
Factory | 2010 | 2011 | 2012 |
------------------------------
A | | | |
B | | | |当然,此表单将有一些下拉菜单来选择源文档和参数类型(在本例中为“PeakProduction”)。
我的问题是:使用交叉表查询很容易基于数据库中的现有数据创建这样的视图,但是不允许输入新值。我可以做些什么来使其工作,以及如何进行?
我应该重新考虑数据库的设计吗?我应该使用VBA吗?是否将Access数据库与Excel工作表链接?
谢谢!
发布于 2012-03-02 05:45:02
在处理规范化为表的二维数据时,用户使用Access进行维护是有问题的。我的方法是使用适当的工具来完成这项工作,在本例中,该工具类似于Excel。我有一个数据录入的excel电子表格模板。用户在其中输入数据。然后在VBA中,我将电子表格作为嵌入对象打开,检索单元格内容并将其插入到表中。类似于下面的内容。
dim myRec as recordset
dim xlApp as Excel.application
dim xlWrksht as Excel.worksheet
set myRec=currentdb.openrecordset("NameOfTable")
set xlApp=createobject("Excel.Application")
set xlWrksht=xlApp.Open("PathOfWorksheet").Worksheets( "WorksheetNumber")
myrec.addnew
myrec.fields("NameOfFields")=xlWrkSht.cells(1,"A")
......
myRec.update https://stackoverflow.com/questions/9516758
复制相似问题