【发布时间】:2013-09-17 16:03:45
【问题描述】:
我有一个使用 MS Access 作为前端并使用 VB 编码的 SQL 数据库。每天从 Excel 电子表格中导入数据,格式为:
期刊日期、IO 帐户、金额、发布日期、行描述、用户 ID、检查日期、凭证
凭证数据在 Excel 电子表格中采用如下格式: 1111111;2222222;3333333
凭证可以有任意数量的凭证编号(通常为 1 到 13 个不同的编号),每个编号用分号分隔。此外,每个数字的物理长度可能不同。然后我需要将这些凭证号链接到多个不同的表。我接手这个项目时使用的数据结构以分号分隔的形式存储凭证,并解析字符串以链接到其他表。我正准备改造这个数据库,我不想像这种格式存储数据,因为我知道它违反了 1NF。
我知道我可能应该使用外键,但我不确定如何使用不同的 Voucher 数据。当数据来自 Excel 时,我能够在 Access 中使用 VB 以任何可能的方式解析数据,我只是不知道如何存储它以关联我的表。
该项目的目标是匹配与每张不同凭证相关的所有内容,并查看金额是否匹配。目前,该过程需要 5 到 10 分钟来拆分凭证并跨表比较数据。
如果您需要更多信息,请告诉我。任何意见,将不胜感激。 谢谢!
编辑-让我更清楚:
这是一个示例凭证:2988670;2990020;2989130;2991597;ONL112382
表中有多个条目(称为 T1),此凭证具有不同的金额。每个数值(不包括 ONL 编号)对应于另一个表(称为 T2)。如果这 4 个数字中的每一个都在 T2 中,则称它们为“匹配”。如果它们匹配并且 T2 中的金额之和等于 T1 中的金额之和,则它们是“匹配没有差异”。
有时凭证如下所示:ED414596
在这种情况下,我必须将此值与一个完全不同的表(称为 T3)进行比较。它包括与上述相同的匹配过程。
*假设凭证以多种方式出现,需要与多个表格进行比较。
【问题讨论】:
-
您的问题是什么?如果您的问题是“我应该”,答案可能是否定的。将凭证数据解析为单独的值,并将其放入自己的表中,并通过外键链接到 Journal 表。
-
您可以有 13 个
voucher字段,或者您可以有一个包含FK_ID和Voucher数字的查找表。两者都优于在一个字段中存储多个值,后者优于前者。 -
所以是代金券表?一张有 13 个不同数字的代金券怎么样?我需要 13 个不同的列吗?
-
如果我需要存储超过 13 个数字怎么办?代金券中的代金券编号不应有上限,因为它一直在变化。
标签: sql sql-server vb.net ms-access data-structures