von Stephan » So, 14.01.2018 16:28
Hallo,
meine Datenbank (interne HSLQB) enthält zwei Tabellen mit folgender Beziehung. Dabei sind FID (nur in Firmen) und MID Primärschlüssel mit Autowerten.
- Tabellen-Beziehungen.gif (9.72 KiB) 7345 mal betrachtet
Die Datenbank-Tabellen sollen nur aus einem Basic-Dialog (kein Formular) mit Daten befüllt werden, hierzu enthält der Dialog alle nötigen Felder (Firma, Abteilung, PLZ, Ort, Strasse, Name, Vorname, Email, Durchwahl).
Der Eintrag in die Datenbank erfolgt nun zuerst in die Tabelle "Firmen" mittels:
Code: Alles auswählen
Sub neuer_datensatz()
'Testdaten (zukünftig aus Dialog auslesen)
x1 = "Firma1"
x2 = "Abteilung1"
x3 = "12345"
x4 = "Testort"
x5 = "Teststrasse"
oDatenquelle = thisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "INSERT INTO ""Firmen"" (""Firma"", ""Abteilung"", ""PLZ"", ""Ort"", ""Strasse"") " _
& "VALUES ('"+x1+"','"+x2+"','"+x3+"','"+x4+"','"+x5+"')"
oSQL_Anweisung.executeUpdate(stSql)
End Sub
anschliessend würde ich den für diesen Datensatz automatisch erzeugten Wert für "FID" ermiteln indem ich per SQL für den gerade eingetragenen Datensatz die "FID" abfrage.
Die ermittelte "FID" kann ich nun für die zweite Tabelle ("Mitarbeiter") nutzen um dort die restlichen Werte einzutragen.
Ist dieses Vorgehen der einzig mögliche Weg komplette Datensätze per Makro einzutragen, wenn "FID" und "MID" als Autowerte definiert sein sollen, d.h. muss ich immer erst in Tabelle "Firmen" schreiben damit Base den Autowert für "FID" erzeugt, dann den Autowert auslesen und kann dann erst, in Kenntnis von "FID" in der zweiten Tabelle die zugehörigen Werte eintragen? Oder geht das auch anders?
(ich hoffe ich gehe richtig in der Annahme das das Einbeziehen einer Abfrage prinzipiell nicht helfen kann, weil ja eine Abfrage immer nur Daten aus Tabellen 'zieht' aber nicht Daten in Tabellen übergeben kann)
Gruß
Stephan
Hallo,
meine Datenbank (interne HSLQB) enthält zwei Tabellen mit folgender Beziehung. Dabei sind FID (nur in Firmen) und MID Primärschlüssel mit Autowerten.
[attachment=0]Tabellen-Beziehungen.gif[/attachment]
Die Datenbank-Tabellen sollen nur aus einem Basic-Dialog (kein Formular) mit Daten befüllt werden, hierzu enthält der Dialog alle nötigen Felder (Firma, Abteilung, PLZ, Ort, Strasse, Name, Vorname, Email, Durchwahl).
Der Eintrag in die Datenbank erfolgt nun zuerst in die Tabelle "Firmen" mittels:
[code]Sub neuer_datensatz()
'Testdaten (zukünftig aus Dialog auslesen)
x1 = "Firma1"
x2 = "Abteilung1"
x3 = "12345"
x4 = "Testort"
x5 = "Teststrasse"
oDatenquelle = thisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oSQL_Anweisung = oVerbindung.createStatement()
stSql = "INSERT INTO ""Firmen"" (""Firma"", ""Abteilung"", ""PLZ"", ""Ort"", ""Strasse"") " _
& "VALUES ('"+x1+"','"+x2+"','"+x3+"','"+x4+"','"+x5+"')"
oSQL_Anweisung.executeUpdate(stSql)
End Sub
[/code]
anschliessend würde ich den für diesen Datensatz automatisch erzeugten Wert für "FID" ermiteln indem ich per SQL für den gerade eingetragenen Datensatz die "FID" abfrage.
Die ermittelte "FID" kann ich nun für die zweite Tabelle ("Mitarbeiter") nutzen um dort die restlichen Werte einzutragen.
Ist dieses Vorgehen der einzig mögliche Weg komplette Datensätze per Makro einzutragen, wenn "FID" und "MID" als Autowerte definiert sein sollen, d.h. muss ich immer erst in Tabelle "Firmen" schreiben damit Base den Autowert für "FID" erzeugt, dann den Autowert auslesen und kann dann erst, in Kenntnis von "FID" in der zweiten Tabelle die zugehörigen Werte eintragen? Oder geht das auch anders?
[size=85](ich hoffe ich gehe richtig in der Annahme das das Einbeziehen einer Abfrage prinzipiell nicht helfen kann, weil ja eine Abfrage immer nur Daten aus Tabellen 'zieht' aber nicht Daten in Tabellen übergeben kann)
[/size]
Gruß
Stephan