Синтаксическая проблема VB6, ошибка «нет текущей записи» - PullRequest
4 голосов
/ 11 июля 2011

Я пишу приложение в vb6, используя SQL Server 2005. Вот мой текущий код.

Dim Sqlstring As String
Dim rstCurrentTicket As Recordset

Sqlstring = "Select SubmiterName, LastViewDate, Department, Description, Urgency, SubmitDate, ResolvedDate from TroubleTickets where Title ='" + Trim(TicketComboBox.Text) + "'"
Set rstCurrentTicket = cnnSel.OpenRecordset(Sqlstring)


NameText.Text = rstCurrentTicket!SubmiterName
DeptText.Text = rstCurrentTicket!Department
Me.DescriptionText = rstCurrentTicket!Description
Me.UrgencyText = rstCurrentTicket!Urgency

Когда я запускаю этот код, я получаю код ошибки, говорящий:

"Выполнить-Время ошибки: «3021» «нет текущей записи»

, и она выделяет эту строку кода:

NameText.Text = rstCurrentTicket!SubmiterName

есть предложения, как это исправить?

Ответы [ 2 ]

9 голосов
/ 11 июля 2011

Ваш набор записей не имеет результатов.Вы можете проверить это следующим образом:

If Not rstCurrentTicket.EOF Then
    NameText.Text = rstCurrentTicket!SubmiterName
    DeptText.Text = rstCurrentTicket!Department
    Me.DescriptionText = rstCurrentTicket!Description
    Me.UrgencyText = rstCurrentTicket!Urgency
End If

EOF = End Of File = конец набора записей достигнут.

4 голосов
/ 18 июля 2011

Кит абсолютно прав, но я хотел бы дать немного больше деталей

Для ADO и DAO у вас есть маркер начала файла (BOF) и маркер конца файла (EOF). Записи возвращаются так:

[BOF]
[Record one] <-
[Record two]
...
[Record n]
[EOF]

Стрелка указывает на то, где находится курсор. Курсор указывает на какую запись в наборе записей, которая возвращается.

Когда записи не возвращаются, вы получаете это

[BOF]
[EOF]

Итак, если установлены оба флага, записи отсутствуют. Если установлен EOF, либо у вас нет записей, либо вы перешли последнюю запись. (Вы перемещаете этот курсор к следующей записи с помощью этой команды.)

rstCurrentTicket.MoveNext

Вы также можете проверить по

If (rstCurrentTicket.EOF and rstCurrentTicket.BOF) Then
     msgbox "There were no Trouble Tickets found."

Else
    'Do something here.

End If
...