Metoda Recordset.Addnew

Addnew to jedna z metod obiektu Recordset, służaca do dodawania nowych rekordów w tabeli. 

kliknij, aby powiększyć

Ja zawsze używam tej metody przy dodawaniu nowych rekordów. 
Stosuję do tego specjalny formularz, z niezwiązanymi polami.

kliknij, aby powiększyć

Pod przyciskiem Zapis jest procedura sprawdzająca, czy wszystkie wymagane pola zostały wypełnione i jeżeli tak, otwierany jest Recordset i dane są zapisywane do tabeli.  Jeżeli pola wymagane są puste (w tym przypadku – Autor i Tytuł) – następuje wyjście z procedury, wyświetlenie komunikatu i przeniesienie fokusu do tego pola..
Przycisk Anuluj zamyka formularz bez zapisywania. 

Przykład procedury:

Private Sub PolecenieZapisz_Click()
Dim RST As ADODB.Recordset
Dim RAutor As String
Dim RTytul As String
Dim RDzial As Long
Dim RCena As Currency
Dim RBestseller As Boolean
If IsNull(Me.TAutor) Then ’pole wymagane
   MsgBox „Wpisz autora!”, vbCritical, „Brak wymaganych danych”
   Me.TAutor.SetFocus
   Exit Sub
 Else
   RAutor = Me.TAutor
End If
If IsNull(Me.TTytul) Then ’pole wymagane
   MsgBox „Wpisz Tytuł!”, vbCritical, „Brak wymaganych danych”
   Me.TTytul.SetFocus
   Exit Sub
 Else
   RTytul = Me.TTytul
End If
If IsNull(Me.TDzial) Then ’jeżeli brak – to dział Różne
   RDzial = 11
 Else
   RDzial = Me.TDzial
End If
If IsNull(Me.TBestseller) Then ’jeżeli brak – to fałsz
   RBestseller = False
 Else
   RBestseller = Me.TBestseller
End If
Set RST = New ADODB.Recordset
RST.Open „TabelaKsiazki”, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
RST.AddNew
With RST
   !Autor = RAutor
   !Tytul = RTytul
   !Dzial = RDzial
   !Bestseller = RBestseller
   If Not IsNull(Me.TCena) Then !Cena = Me.TCena
   .Update
   .Close
End With
Set RST = Nothing
DoCmd.Close
End Sub
 

To naprawdę dobry sposób na dodawanie rekordów. Unika się w ten sposób generowania błędnych rekordów, z niepełnymi danymi i opuszczoną częścią pól. 


A tu możesz mi postawić kawę: 

buycoffee.to/marzatela

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *