Как получить доступ к значениям в наборе записей - PullRequest
4 голосов
/ 13 мая 2011

Возьмите для примера этот код:

sSQL = "select CtyMarket from Market where Country = '" & Country.Value & "'"
Set rec = CurrentDb.OpenRecordset(sSQL)

Этот оператор может возвращать более одного значения. Как я могу получить доступ к этим значениям?

Ответы [ 2 ]

4 голосов
/ 13 мая 2011

хорошо, чтобы получить все значения, вы можете просматривать поля и записи в вашем наборе записей.Это может выглядеть так:

'You'll need to declare a new variable
Dim i as long

If rec.EOF and rec.BOF then
Else
    do while not rec.EOF
        for i = 0 to rec.fields.count - 1
            debug.print rec.fields(i).value
        next i
        rec.movenext
    loop
endif

Другие способы получить ваши данные - использовать методы getrows и \ или gettring объекта набора записей, но я не помню, доступны ли они для наборов записей DAO.Вы также можете установить фильтр для определенного значения в определенном поле и т. Д.

3 голосов
/ 16 мая 2011

Я использую эту функцию, чтобы не обращать внимания на значения NULL при чтении наборов записей:

Public Function toStr(pVar_In As Variant) As String
    On Error Resume Next
    toStr = CStr(pVar_In)
End Function

Никогда не доверяйте точному количеству rec.recordcount, но rec.RecordCount>0 безопасно.Вот почему вы должны никогда использовать цикл for при использовании набора записей.Если вы хотите узнать количество записей в любом случае, сначала вам нужно набрать rec.movelast, а затем rec.movefirst

Я знаю два разных способа:

While not rec.eof
    msgbox toStr(rec!CtyMarket)
    rec.moveNext
Wend

или

While not rec.eof
    msgbox toStr(rec.fields("CtyMarket").value)
    rec.moveNext
Wend
...