VBA zugreifen auf eine Tabelle, den höchsten Wert aus einer Spalte vergleichen mit einem Textfeld im Formular
Hallo Leute,
Ich habe in Access eine Datenbank erstellt, in der Neukunden erfasst werden sollen.
Wie vergleiche ich ein Textfeld (Text1) aus einem Formular mit einer Spalte (KdNr) aus der Tabelle (tbl_Kunden)?
Wie kann ich die letzte Kundennummer die in der Tabelle vergeben wurde anwählen und + 1 rechen lassen?
Hier der momentane Code:
LG BumBum
[Edit Biber] Code-Tags nachgetragen. [/Edit]
Ich habe in Access eine Datenbank erstellt, in der Neukunden erfasst werden sollen.
Wie vergleiche ich ein Textfeld (Text1) aus einem Formular mit einer Spalte (KdNr) aus der Tabelle (tbl_Kunden)?
Wie kann ich die letzte Kundennummer die in der Tabelle vergeben wurde anwählen und + 1 rechen lassen?
Hier der momentane Code:
Private Sub Befehl24_Click()
DoCmd.SetWarnings False
If Text1.Value = **SPALTE AUS TABELLE** Then
Frage = MsgBox("Die Kundennummer " & Text1.Value & " ist schon vergeben, bitte verwenden sie die Kundennummer " & **LETZTE KUNDENNUMMER + 1** , vbOKOnly, "Fehler")
Else
DoCmd.RunSQL ("insert into tbl_Kunden (KdNr, Anrede, Name, Vorname, Straße, PLZ, Ort, Telefon, Fax, Handy, EMail) values (Text1.value, Text2.value, Text3.value, Text4.value, Text5.value, Text6.value, Text7.value, Text8.value, Text9.value, Text10.value, Text11.value)")
End If
End Sub
LG BumBum
[Edit Biber] Code-Tags nachgetragen. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 123576
Url: https://administrator.de/forum/vba-zugreifen-auf-eine-tabelle-den-hoechsten-wert-aus-einer-spalte-vergleichen-mit-einem-textfeld-im-formular-123576.html
Ausgedruckt am: 05.02.2025 um 12:02 Uhr
8 Kommentare
Neuester Kommentar
Indem man eine SQL Abfrage macht?
BTW:
Warnings auschalten, dann ein Insert machen ohne zu Prüfen ob der geklappt hat, ist kein guter Programmierstil.
Dim rs As Recordset
Dim i As Integer
Set rs = Application.CurrentDb.OpenRecordset("Select max(KdNr) as Max from tbl_kunden")
rs.MoveFirst
i = rs!Max + 1
BTW:
Warnings auschalten, dann ein Insert machen ohne zu Prüfen ob der geklappt hat, ist kein guter Programmierstil.
Die 6 Zeilen sollten sich doch auch so noch in den Code integrieren lassen.
Aber ich bin heute guter Laune:
Aber ich bin heute guter Laune:
Private Sub Befehl24_Click()
Dim rs As Recordset
Dim i As Integer
DoCmd.SetWarnings False
Set rs = Application.CurrentDb.OpenRecordset("Select max(KdNr) as Max from tbl_kunden")
rs.MoveFirst
i = rs!Max
rs.close
If Text1.Value = i Then
Frage = MsgBox("Die Kundennummer " & Text1.Value & " ist schon vergeben, bitte verwenden sie die Kundennummer " & cstr(i) , vbOKOnly, "Fehler")
Else
DoCmd.RunSQL ("insert into tbl_Kunden (KdNr, Anrede, Name, Vorname, Straße, PLZ, Ort, Telefon, Fax, Handy, EMail) values (Text1.value, Text2.value, Text3.value, Text4.value, Text5.value, Text6.value, Text7.value, Text8.value, Text9.value, Text10.value, Text11.value)")
End If
End Sub
Natürlich prüft
nur auf Gleichheit, nicht ob die Zahl eventuell kleiner ist. Was in der Beschreibung auch nicht zu entnehmen war, daß auch das passieren soll.
In dem Fall auf kleiner gleich prüfen. Oder sich die Frage stellen, warum man nicht automatisch eine 1 höhere Kundennummer nimmt, was wiederum auf den Begriff Autowert führt, den man in der Access Hilfe mal nachschlagen könnte.
If Text1.Value = i Then
In dem Fall auf kleiner gleich prüfen. Oder sich die Frage stellen, warum man nicht automatisch eine 1 höhere Kundennummer nimmt, was wiederum auf den Begriff Autowert führt, den man in der Access Hilfe mal nachschlagen könnte.