Hallo Gemeinschaft,
habe zwei Tabellen - Kunden und Buchungen
nun lese ich per VBA eine txt Datei aus mit diesem Inhalt
Frau
Kristin
Müller
kristin.2101@gmx.de
01734343420
Wacholderstraße 2
Rangsdorf
32232
Deutschland
€872,00
Ferienhaus – E17
03.07.2021
10.07.2021
4
nun sollen die Adressdaten in die Tabelle Kunden - der DS der dort angelegt wird bekommt eine K-ID - diese benötige ich, um dann die anderen Daten in die Tabelle Buchungen einzutragen
könnt ihr mir dabei helfen
der Kunde kann ruhig doppelt angelegt sein, dass ist egal
das Auslesen der daten bekomme ich hin nur nicht das mit dem Eintrag in die Kunden Tab und das holen der KundenID weil diese Nummer brauche ich für den Verweis in der Buchungen Tab
so klappt es wenn ich nur eine Tab Buchungen hätte - aber es sind eben zwei tabs
Sub Tabschreiben()
Set db = CurrentDb
Set rs = db.OpenRecordset("Buchungen", dbOpenDynaset)
rs.FindFirst "Buchungsnummer = '" & Buchungsnummer & "'"
If rs.NoMatch Then
GoTo anlegen
Else
MsgBox ("Buchumgsnummer: " & Buchungsnummer & " schon vorhanden. Abbruch!")
Exit Sub
End If
anlegen:
rs.AddNew
rs!Vorname = Vorname
rs!Nachname = Nachname
rs!Buchungsnummer = Buchungsnummer
rs!Buchungsdatum = Date
'rs!IhreKennung = IhreKennung
rs!datvon = datvon
rs!datbis = datbis
rs!AnzPersonen = AnzPersonen
rs!AnzHaustiere = Haustier
rs!Mietgutschrift = Preis
rs!Kinderhochstuhl = Kinderhochstuhl
rs!Kinderreisebett = Kinderreisebett
rs!Bettwaesche = Bettwaesche
rs!Frottee = Frottee
rs!frueh = frueh
rs!spaet = spaet
rs.Update
Vorname = ""
Nachname = ""
Buchungsnummer = ""
datvon = ""
datbis = ""
' ReDim AnzPersonen(1)
AnzPersonen = 0
Haustier = 0
Preis = 0
Kinderhochstuhl = 0
Kinderreisebett = 0
Bettwaesche = 0
Frottee = 0
frueh = 0
spaet = 0
End Sub
Hallo,
ich befürchte, da gibt es einige Stolperstellen und Fallgruben zu bereinigen...
-- Qualifiziere die Steuerelemente-Namen mit "Me!" (Referenz auf das aktuelle Form. Z. B.
rs!Vorname = Me!Vorname
) sofern es sich hier um Formular-Steuerelemente und nicht um globale Variablen handelt.
-- Bei Preis achte auf die Umwandlung des Dezimalkommas in den Dezimal-Punkt, sofern es sich bei rs!
Mietgutschrift um ein Tabellenfeld mit Datentyp Double oder Währung (sehr empfohlen) handelt.
-- Bei Datums-Zuweisungen sollte das ISO- oder USA-Format verwendet werden, also
rs!datvon = Format(Me!datvon, "\#yyyy-mm-dd\#")
-- Das resetten eines Steuerelementes sollte mit xxx = Null erfolgen, also
Me!Vorname = Null bzw. Me!Nachname = Null
-- Was haben denn "Vorname" und "Nachname" in der Tabelle "Buchungen" zu suchen? Solche Angaben gehören in "tblKunden".
-- Vermeide solche Sprünge:
GoTo anlegen --
Zitatnur nicht das mit dem Eintrag in die Kunden Tab und das holen der KundenID
Wenn die Kundentabelle mit einem recordset gefüllt wird, ergibt sich der Primärschlüsselwert so:
Dim lngKundenID as Long
.
.
rs!Addnew
rs!Vorname ="Max"
rs!Nachname = "Mustermann"
.
.
lngKundenId = rs!KundenID
rs!Update
.
.
Debug.Print lngKundenID
--
Zitatder Kunde kann ruhig doppelt angelegt sein, dass ist egal
nein, das ist nicht egal, das ist falsch.
Zeige mal den Screenshot des Beziehungsfensters mit allen Tabellen und sichtbaren Tabellenfeldern. Dazu die Datentypen der einzelnen Tabellenfelder.
Zeige zudem den kompletten Code, einschließlich der Einlese-Routine. Das Füllen der Kundentabelle zeigst Du auch nicht.
hi - lieben Dank für die Info
ich lese die daten ja von einem txt file ein, welches ich vorher ausgelesen habe und in Variablen gelegt habe - ich benötige die neue Kunden id - nachdem ich dort die Kundendaten eingepflegt habe - es ist wirklich nicht notwendig mit den Duplikaten in der Kundentab - ich möchte nur die Kunden_id haben, damit ich die Buchungsdaten samt Kunden_id dort eintragen kann
Hallo,
Zitatich möchte nur die Kunden_id haben
ja und, habe ich doch gezeigt.... nur Du nicht den Code, der die Kundentabelle füllt.
auch wenn´s wurstelcode ist - schau bitte einmal
bekomme Fehlermeldung bei datvon - obwohl die Variable einen datumswert hat
Update oder cancleudate ohne addnew oder edit
Sub Tabschreiben()
Dim lngKundenId, rsb
Set db = CurrentDb
Set rs = db.OpenRecordset("Kunden", dbOpenDynaset)
anlegen:
rs.AddNew
rs!Anrede = "Frau"
rs!Vorname = Vorname
rs!Name = Nachname
lngKundenId = rs![Kunden-Nr]
rs.Update
Set db = CurrentDb
Set rsb = db.OpenRecordset("Reservierungen", dbOpenDynaset)
rsb.FindFirst "'Reservierungs-Nr' = '" & Buchungsnummer & "'"
If rsb.NoMatch Then
GoTo anlegen1
Else
MsgBox ("Buchumgsnummer: " & Buchungsnummer & " schon vorhanden. Abbruch!")
Exit Sub
End If
anlegen1:
' rsb!ReservierungsnummerHP = Buchungsnummer
'rsb!Buchungsdatum = Date
'rsb!IhreKennung = IhreKennung
rsb!Anreisetag = datvon
rsb!datbis = datbis
rsb!AnzPersonen = AnzPersonen
rsb!AnzHaustiere = Haustier
rsb!Mietgutschrift = Preis
rsb!Kinderhochstuhl = Kinderhochstuhl
'rs!Kinderreisebett = Kinderreisebett
rsb!Bettwaesche = Bettwaesche
rsb!Frottee = Frottee
rsb!frueh = frueh
rsb!spaet = spaet
rsb.Update
End Sub
Hallo,
es gilt das vorher Gesagte nach wie vor ! ( und die Benamsung ist auch nicht wirklich optimal..)
ZitatSub Tabschreiben()
Dim lngKundenId as Long, rs as Dao.Recordset, rsb as Dao.Recordset, db as Database
Set db = CurrentDb
Set rs = db.OpenRecordset("Kunden", dbOpenDynaset)
anlegen:
rs.AddNew
rs!Anrede = "Frau"
rs!Vorname = Vorname
rs![Name] = Nachname
lngKundenId = rs![Kunden-Nr]
rs.Update
rs.Close
Set rs = Nothing
Set db = CurrentDb
Set rsb = db.OpenRecordset("Reservierungen", dbOpenDynaset)
rsb.FindFirst "[Reservierungs-Nr] = '" & Buchungsnummer & "'"
If rsb.NoMatch Then
rsb.Addnew
' rsb!ReservierungsnummerHP = Buchungsnummer
'rsb!Buchungsdatum = Date
'rsb!IhreKennung = IhreKennung
rsb!KundenNr_f = lngKundenID
rsb!Anreisetag = datvon
rsb!datbis = datbis
rsb!AnzPersonen = AnzPersonen
rsb!AnzHaustiere = Haustier
rsb!Mietgutschrift = Preis
rsb!Kinderhochstuhl = Kinderhochstuhl
'rs!Kinderreisebett = Kinderreisebett
rsb!Bettwaesche = Bettwaesche
rsb!Frottee = Frottee
rsb!frueh = frueh
rsb!spaet = spaet
rsb.Update
rsb.Close
Set rsb =Nothing
Else
MsgBox ("Buchungsnummer: " & Buchungsnummer & " schon vorhanden. Abbruch!")
End If
End Sub
klasse - liebe Dank