VB ссылки на столбец через переменную - PullRequest
0 голосов
/ 26 апреля 2011

Я пытаюсь обновить базу данных Access с помощью vb-скрипта, помещая футбольный счет в столбец в зависимости от того, когда забит гол.

Итак, у меня есть таблица 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-й минуте. В результате я получаю строку для этого конкретного матча, показывающую счетную строку для столбцов 1,2 «00», столбцов с 3 по 87, включая «10» и столбцов 88–90 «11»

.

Я мог бы также использовать mssql, если есть более простой метод для этого

1 Ответ

1 голос
/ 27 апреля 2011

Если я правильно понимаю первую часть вашего вопроса, я думаю, вы должны попробовать это:

rst.Fields(numTime) = strScoreline

Я не имею ни малейшего понятия о второй части вашего вопроса.

Edit : Ваш комментарий заставил меня думать, что ваши текстовые значения numTime интерпретировались как числа, а не строковые значения rst.Fields.Однако здесь это не так.

При открытии набора записей на основе тех же имен таблиц и полей этот код выдает ошибку («Элемент не найден в этой коллекции»):

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

Но этот код печатает значение столбца с именем "2":

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

Так что я до сих пор не понимаю, почему он не работает для вас.Но я никогда не использовал числа в качестве имен столбцов;это просто кажется мне неправильным.Я был бы более удивлен, если бы вы переименовали свои столбцы в MatchID, f1, f2, f3, и этот подход все еще не работает.

...