具有可变数量的列的VBA Access 2003表

时间:2008-11-19 10:00:48

标签: vba ms-access access-vba

我在Access 2003 VBA中有一个包含164列的表,但我得到的数据有181列,未来它可能会变大。 我需要知道如何调整表的大小以在运行时添加额外的列 我知道如何检查我需要多少列,所以我只需要知道如何调整自己的表格。

感谢

7 个答案:

答案 0 :(得分:3)

另一种选择;而不是有一个包含大量列的“ short-fat <​​/ em>”表,有一个包含大量行的“ tall-skinny ”表:

<强>短发

   ID
   FirstName
   LastName
   ...
   Amount

   1 Joe Smith   ... $123
   2 Bob Roberts ... $214
   3 Jim Black   ... $500

<强> TALL-瘦:

   RecordID
   FieldNumber
   FieldName
   FieldValue

   1 1 FirstName Joe
   1 2 LastName  Smith
   ...
   1 n Amount $123
   2 1 FirstName Bob
   2 2 Lastname  Roberts
   ...
   2 n Amount    $214
   3 1 FirstName Jim
   3 2 LastName  Black
   ...
   3 n Amount    $500

如果你有一个不需要与其他表连接的“独立”表,这是很好的,否则你就会陷入痛苦的世界。

答案 1 :(得分:3)

没有太多基础,但这听起来像是一个设计问题。我会查看驱动这些附加列的数据,看看是否可以创建一个列来存储它。

如果数据真的那么不稳定,我会考虑创建一个以Key, FieldName, FieldValue为列的新表。这样,每次数据更改时,您都不必更改报表,查询和导入例程。

答案 2 :(得分:2)

我没有评论的声誉,但是为了扩展短发和长篇大论,我认为从一开始就是一个好主意。然后,您可以使用具有旧字段名称作为列标题的字段创建交叉表查询。然后从该查询中写下一个make-table,你将获得你的表。

答案 3 :(得分:1)

可能是here。我可能会根据旧表创建一个新表,并使用数据源中的额外列。然后我将从两个数据源填充新表。如果没有其他原因,我会这样做,这意味着我在制作新数据时保持旧数据安全。

答案 4 :(得分:1)

如果您遇到这种糟糕的设计,可以根据需要使用SQL添加列:

strSQL="ALTER TABLE tblTable ADD COLUMN NewCol Text (25)"
CurrentDB.Execute strSQL,dbFailOnError

或者您可以使用TableDef。

答案 5 :(得分:0)

问题是我无权更改设计 已经创建了完整的数据库,我的工作只是为了破坏csv数据的读取,但这些大坝...数据需要更多的colums而不是previos程序员所建议的 这就是为什么我不能只删除表 此外,大约有30或40个表,就像我在问题中所描述的那样 这就是为什么我要求某种算法来改变列数

但感谢快速的芒果

答案 6 :(得分:0)

那么您是否正在寻找改变MDB中表格的VB / VBA代码?这听起来像是你所追求的 - 基于传入数据自动化的东西。如果你没有MDB文件的权限,那将很难做到,但我认为你真正说的是你没有选择在Access中打开MDB并修改它。