Найти значение поля рекордсета по имени поля, заданному текстовой переменной

IBL_512
Дата: 01.10.2005 14:04:14
Rst1 создан на основе перекрестного запроса.Поля имеют следующий вид 1,2,3....,10-А,11-Б,,, При обращении к Rst1 как Rst1(1) и Rst1("1") имеем один и тотже результат, но для Rst1(2) и Rst1("2") получаем два разных результата, так как вместо поля по имени "2" имеем поле с именем "10-A".Изменить перекрестный запрос не могу, а обращение к рекордсету как Rst1(mm) или Rst1("mm"), где mm текстовая переменная, описывающая имя поля приводит к ошибке .Значениями полей Rst1 заполняется Excel таблица.Число полей в рекордсете переменно и как только становится больше 10 возникает подобная ошибка. Как обойти???? Короче как обратится к рекордсету по имени поля, заданному текстовой переменной!!!!
Serge Gavrilov
Дата: 01.10.2005 15:53:10
автор
Rst1(mm) ..., где mm текстовая переменная
В общем-то так
Так должно работать. И для DAO и ADODB у Recordset свойством по умолчанию является Fields, т.е. вышеприведенный вызов эквивалентен правильному:
Rst1.Fields(mm)
Могу предположить, что имена полей другие.
Вы просто посмотрите их, использовав цикл:
Dim fld as Fields ' DAO.Fields или ADODB.Fields
For Each fld in Rst1.Fields
Debug.Print fld.Name
Next
IBL_512
Дата: 01.10.2005 18:00:17
Есть поле по имени 1 и по порядку 1 они совпадают. А есть поле по имени 2 и есть поле по порядку 2 они не совпадают, так как поле по имени 10-А идет по порядку вторым, а уж затем идет поле по имени 2.
Так что конструкция Rst1.Fields(mm) где mm="2" не работает. В отладочном окне , ?rst1(2) и ?rst1("2") имеют разные значения.Мне необходимо значение rst1("2"), но необходимо организовать цикл по mm, где mm строковая переменная имени поля. ?Rst1(mm) и ?Rst1("mm") выдают ошибку!!!Хотя
?mm="2"
Shuhard
Дата: 01.10.2005 18:39:01
IBL_512
Есть поле по имени 1 и по порядку 1 они совпадают. А есть поле по имени 2 и есть поле по порядку 2 они не совпадают, так как поле по имени 10-А идет по порядку вторым, а уж затем идет поле по имени 2.
Так что конструкция Rst1.Fields(mm) где mm="2" не работает. В отладочном окне , ?rst1(2) и ?rst1("2") имеют разные значения.Мне необходимо значение rst1("2"), но необходимо организовать цикл по mm, где mm строковая переменная имени поля. ?Rst1(mm) и ?Rst1("mm") выдают ошибку!!!Хотя
?mm="2"

дык Rst1("10-А")
Владимир Саныч
Дата: 01.10.2005 22:58:19
IBL_512
Мне необходимо значение rst1("2"), но необходимо организовать цикл по mm, где mm строковая переменная имени поля.

Цикл по строковой переменной сделать нельзя. Можно по числовой, а при обращении к полю превращать ее в строку.

for i=1 to 10
... rst(cstr(i)) ...
next
IBL_512
Дата: 02.10.2005 09:50:32
Б. спасибо.Все пошло!!!