4.4k Aufrufe
Gefragt in Datenbanken von Mitglied (335 Punkte)
Hallo Accperten,

ich bräuchte mal wieder Euren kompetenten Rat.

Ich habe ein Formular, in das ich via VBA neue Datensätze anlegen kann.

Nun geht es aber daran auch bereits bestehende Datensätze zu ändern.

Ich stelle mir dabei vor, dass wenn ich eine Bestellnummer in das Textfeld txt_From eingebe, anschließend ein VBA-Code die Tabelle Tbl_Sales_Data nach dieser Bestellnummer durchsucht.

Sollte VBA diese Bestellnummer finden, sollen die Werte wie Listenpreise und Rabatte in die entsprechenden Textfelder auf dem Formular geschrieben werden.

!List_price_per_unit_EUR = Nz(Forms!Frm_Sales_Data!txt_List_price_per_unit_EUR)
!Special_handling_costs_per_unit_EUR = Nz(Forms!Frm_Sales_Data!txt_Handling_costs_per_unit_EUR)
!Estimated_freight_costs_per_unit_EUR = Nz(Forms!Frm_Sales_Data!txt_Freight_costs_per_unit_EUR)
!Insurance_costs_per_unit_EUR = Nz(Forms!Frm_Sales_Data!txt_Insurance_costs_per_unit_EUR)
!Contracted_value_per_unit_EUR = Nz(Forms!Frm_Sales_Data!txt_Contracted_value_per_unit_EUR)

Leider schaffe ich es nicht mal, dass er die Bestellnummer aus dem Textfeld txt_From sucht, so dass ich diesen Wert fest vorgeben musste (123456).

Private Sub txt_From_LostFocus()

Dim Comar As String
Dim rst As ADODB.Recordset

Set rst = New ADODB.Recordset
rst.Open "Tbl_Sales_Data", CurrentProject.AccessConnection, adOpenKeyset, adLockOptimistic

ID = Forms!Frm_Sales_Data!txt_From
Bestnr = "Bestellnummer='123456'"
rst.Find Bestnr

Könnt Ihr mir vielleicht erklären, was ich ändern muss?

Bis dahin schöne Ostern.

Peter

12 Antworten

0 Punkte
Beantwortet von rahi Experte (1.5k Punkte)
Hallo Peter,

ich setze in der Regel nach den Exit-Label direkt den Befehl [/code]On Error resume next[/code]da ich ab hier nur noch
aufräumen möchte. Würde dein rst.close aus welchem Grund auch immer einen Fehler verursachen, hättest du eine
Endlosschleife durch die Fehlerbehandlung.
Deine Sprungmarke am Anfang kannst du umgehen, wenn du auf not isnull(...) abfragst und das endif hinter den requery-Befehl
setzt.

Gruß Ralf
0 Punkte
Beantwortet von Mitglied (335 Punkte)
Hallo Ralf,

habe Deine Funktion und Dein on error erfolgreich bei mir eingebaut.

Danke für den Tipp.

Gruß

Peter
...