vb通过变量引用列

时间:2011-04-26 19:23:34

标签: sql-server-2005 ms-access vbscript ms-access-2003

我正在尝试使用vb脚本更新Access数据库,方法是将足球得分线放入列中,具体取决于目标何时得分。

所以我有一个表,tblScoreLinesByMinute,列

matchID 1 2 3 4.... 89 90

在我的剧本中我设置了

Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("tblScoreLinesByMinute", dbOpenTable)

让我们说主队在第3分钟有进球 我用变量numTime = 3捕获了它,并创建了一个变量strScoreline = 10。 我想更新表格

rst![numTime] = strScoreline

但如果我尝试这个或CStr(numTime)我收到运行时错误“此集合中找不到项目”。硬编码

rst![3] = strScoreline确实有效

我也热衷于将其他列设置为相关的得分线。让我们说客队在第88分钟扳平比分。我所追求的是让这个特定比赛的行显示'00'的第1,2列,第3栏到第87栏'10'和第88-90''11'栏的分数线

如果有一个更简单的方法

,我也可以使用mssql

1 个答案:

答案 0 :(得分:1)

如果我理解你问题的第一部分,我想你应该试试这个:

rst.Fields(numTime) = strScoreline

我对你问题的第二部分一无所知。

编辑:您的评论让我觉得您的numTime文本值被rst.Fields解释为数字而不是字符串值。但是,这似乎并非如此。

基于相同的表和字段名称打开记录集,此代码会抛出错误(“此集合中找不到该项目”):

numTime = "0"
Debug.Print rst.Fields(numTime)

但是这段代码打印了名为“2”的列的值:

numTime = "2"
Debug.Print rst.Fields(numTime)

所以我仍然不明白为什么它不适合你。但我从未使用数字作为列名;这对我来说似乎不对。如果您将列重命名为MatchID,f1,f2,f3,我会更惊讶,这种方法仍然不起作用。