我正在尝试使用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答案 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,我会更惊讶,这种方法仍然不起作用。