невозможно редактировать запись, передавая текстовое значение через доступ к форме 2007

У меня есть первая таблица с именем "BreedingTable" с первичным ключом "ID" и "TransactionStatus" = "Active".

У меня есть данные «Шутливая форма», заполненные из поля со списком в текстовые поля Text2.value = "ID" из BreedingTable.

Когда я закончу со всем процессом, я хочу изменить TransactionStatus таблицы разведения = Closed.

Я использую приведенный ниже код, но он никогда не работает.

Примечание: если я укажу точный идентификатор транзакции, он работает нормально, но если я попрошу найти на основе text2, это не сработает.

Мой код выглядит следующим образом:

Private Sub exitprograme3()
    Me.Text2.SetFocus
    Dim i As Integer
    Dim db As Database
    Dim rs As Recordset
    Dim Trn As Integer
    Set db = CurrentDb
    Set rs = db.OpenRecordset("BreedingTable")
    For i = 0 To rs.RecordCount - 1
    Me.Text2.SetFocus    
    If rs.Fields("ID") = Me.Text2.Value Then
        rs.Edit
        rs.Fields("BreedingStatus") = "Closed"
        rs.Update
    End If
    rs.MoveNext
    Next i
    rs.Close
    Set rs = Nothing
    db.Close
    DoCmd.Close
End Sub

Пожалуйста помогите ...

Если я ввожу точный идентификатор транзакции в приведенном ниже выражении if, он работает

If rs.Fields("ID") = "323" Then

это работает нормально.

Но если я наберу, как показано ниже, это не сработает

If rs.Fields("ID") = Me.Text2.Value Then

person Javed Yusuf    schedule 05.10.2018    source источник
comment
Что это вам показывает? Debug.Print "'" & Me.Text2.Value & "'"   -  person HansUp    schedule 05.10.2018
comment
Измените For i = 0 To rs.RecordCount - 1 на Do While Not rs.EOF и измените Next i на Loop   -  person HansUp    schedule 05.10.2018
comment
Спасибо за ваш комментарий, но он все еще не работает   -  person Javed Yusuf    schedule 06.10.2018
comment
тем не менее, он работает так же, что означает, что если я изменю If rs.Fields (ID) = 323 (который является идентификатором транзакции, которую я хочу изменить, он отлично работает с обеими логиками (сделайте while и next i).. Я также пытаюсь получить msgbox перед циклом, и он правильно отображает значение Me.Text 2 ... Пожалуйста, помогите   -  person Javed Yusuf    schedule 06.10.2018


Ответы (1)


Цикл не нужен:

Private Sub exitprograme3()

    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("Select * From BreedingTable")

    rs.FindFirst "[ID] = " & Me!Text2.Value & ""
    ' If ID is text, then quotes:
    ' rs.FindFirst "[ID] = '" & Me!Text2.Value & "'"
    If Not rs.NoMatch Then
        rs.Edit
            rs.Fields("BreedingStatus").Value = "Closed"
        rs.Update
    End If
    rs.Close

    Set rs = Nothing
    Set db = Nothing

    DoCmd.Close

End Sub
person Gustav    schedule 06.10.2018
comment
я получаю ошибку в этой строке. rs.FindFirst [ID] = ' & Me!Text2.Value & '.. сообщение об ошибке похоже на это сообщение об ошибке времени выполнения 3251: операция не поддерживается для этого типа объекта - person Javed Yusuf; 07.10.2018