将链接的DBF转换为具有记录号的Access

问题描述 投票:0回答:2

我有一个旧的dbase数据库(由使用clipper 5.2编程的程序制成),它由多个表(文件)组成。这些表与某种记录号链接,但是在源表中找不到记录号字段。我想将此数据库转换为Access并重新建立链接。我已经阅读了有关dbf记录指针(?)的内容,但我不知道如何从DBF中提取它。

ms-access dbf dbase
2个回答
0
投票

嗯,如果正在使用recno()或其他类似方法,则表明该表从1开始。记住,您无法在Access中更新PK自动编号,但可以对此类表格附加查询!!!>

因此链接到dBase表。在Access中查看此表时,它是否显示该递增列?

它应该并且对我有用。

您尚未清楚上述详细信息。

因此,假设您看到此列增加且未标记为PK?

这很好(并且可以预期)。正如您在链接表中看到的递增数字一样长,那么就很好。

然后,此导入过程变得非常快速和容易。

在创建功能区选项卡上,只需选择查询设计。

拖放到该链接表中。

从功能区中选择制作表。输入新的本地表名称。

将表中的*拖动到查询网格中(网格的第一列)。

您有这个:

enter image description here

现在运行以上查询查询(点击功能区中的运行按钮。

退出(抛出该查询-无需保存)。

结果将是带有该数字列的新本地表。

现在,从该本地表中清空数据。

(使用Ctrl-g调试窗口)

Currentdb.execute“从NewLocalTable中删除*”

现在执行压缩+修复(这将重置空表中的所有自动编号列-可能不是必需的-但无论如何都要这样做)。并且它回收了我们刚刚清空的那个表的空白空间。

确定,现在在设计模式下打开该新本地表。选择该第一个数字id列,然后将其删除。 (点击该行-可能是第一行-按下del键)。

现在,单击第一行以选择第一列。点击插入键将其全部按下,然后输入您刚删除的编号列的名称。 Tab键,自动编号,然后从功能区中敲击PK按钮(主键按钮)。

关闭表设计师。保存设计更改。

我们现在有一个空表,其PK自动编号列与以前的名称相同。

现在,创建新查询,在链接表中下垂。

从功能区中选择追加查询,然后输入新的本地空表的名称。

将*拖动到查询网格中。

运行它。

我们现在有了一个具有PK自动编号的本地表,并且这些列将匹配链接的表。

要进行10秒钟的测试?

Ctrl-g(跳至调试窗口)。

输入:

? dcount("*","linkeddBaseTabble name")
? dcount("*","NewlocalTable name")

记录数应该相同。

此时,您的本地表具有相同的列+ PK ID自动编号列。

您可以重复上述步骤。进行得很快。 20-30张桌子不会花很长时间。

结果现在是本地表,并且每个表将具有一个具有相同列名的自动编号PK列。

我认为作为链接表的列是“ ID”,但可能是RECNO。 (因此,请将其用于本地PK列名称。)>

所以你:

链接到数据库表。

查询生成器–生成表。

Ctrl-g清空本地表:

Currentdb.execute "delete * from local table name"

在设计中打开本地表-删除数字列,将其重新添加为PK自动编号。

查询构建器,放入链接表。从功能区中选择追加查询,输入本地表的名称。

拖动“ *”以查询网格–运行它。

您现在有了一个本地表,其PK自动编号与链接表相同。

移至要导入的下一个表(通过上述几个步骤,将自动编号添加到要导入的每个表中。

您可以只将表导入Access中,然后使用它们作为蓝图来工作。只要确保“表关系”是正确的...我知道没有一个,而是采用“逻辑”路径...如果您的表的fieldName为“ FaxBookID”,而您的表为“ FaxBook”。 ..您知道它们是相关的


0
投票

您可以只将表导入Access中,然后使用它们作为蓝图来工作。只要确保“表关系”是正确的...我知道没有一个,而是采用“逻辑”路径...如果您的表的fieldName为“ FaxBookID”,而您的表为“ FaxBook”。 ..您知道它们是相关的

© www.soinside.com 2019 - 2024. All rights reserved.