Мой код VBA работает нормально, или я еще не нашел проблему ... У меня была проблема, когда я использовал rs.movelast
, где recordcount = 0
. Поэтому я прокомментировал rs.movelast
, и мой код работает нормально.У меня есть проблемы с этим .recordcount() без .movelast?
Но, я знаю, что при использовании recordcount()
это хорошая практика, чтобы сделать .movelast
, потому что recordcount
учитывает только то, к чему обращались.
Мой код:
Set rs = db.OpenRecordset(varSQL0, dbOpenDynaset)
' rs.MoveLast
Debug.Print rs.RecordCount
If rs.RecordCount = 0 Then
'----create new-----
Set rs1 = CurrentDb.OpenRecordset(Name:="Supplier_Dnotes", Type:=RecordsetTypeEnum.dbOpenDynaset)
With rs1
.AddNew
![Supplier_Dnote_Ref] = varDnoteRef
![Supplier_Dnote_date] = Forms!delivery_Note_Ex.Supplier_Dnote_date
![Created_By] = gLoggedIn
![Created_Date] = Date
.Update
End With
rs1.Close
Set rs1 = Nothing
Else
.....
будет я когда-либо проблемы с моей recordcount
, если исключить .movelast
?
Есть ли альтернативный метод, чтобы попытаться избежать этой потенциальной проблемы?
Я должен добавить, что я проиндексировал supplier_dnote_ref
, поэтому если возникла проблема, новая запись не должна добавляться, потому что она уже завершается. Кроме того, теперь я проиндексировал свою таблицу, recordcount()
не должен превышать 1, я думаю.
ах, я вижу, это интересный способ взглянуть на него. Я попробую! Поэтому мне больше не нужно 'rs.movelast', потому что я не использую' rs.recordcount'? – LiamH
Да, это правильно. Я отредактировал свой ответ, надеясь, что теперь это станет более ясным. – asdev
Я изменил свой код, и он отлично работает! Мне было легче использовать 'If (rs.EOF и rs.BOF)', чем использовать 'not'. То же самое, я думаю, я просто не хотел менять код 'then' и' else'. – LiamH