Hallo Users,
ich habe eine Datenbank für die Imkerei als eingebettete HSQLDB in Base
erstellt.
Um den kommenden Nutzern bei Updates die Datenübernahme von einer
Vorversion in die Neuversion zu erleichtern, habe ich ein Makro auf der
Grundlage des Handbuchs (SUB Datenkopie) erstellt.
Mein Makro kopiert nun die Daten von mehreren Tabellen der
Vorgängerdatenbank in die gleich strukturierten Tabellen der Neuen
Datenbank, die z.B. aktualisierte Abfragen, Berichte, oder Formulare
enthält.
Das funktioniert soweit ohne Probleme.
Zwei Fehler treten allerdings auf, die ich trotz zahlreichen Versuchen
und Recherchen nicht lösen könnte.
1. In Zahlen-Felder, die in der Ursprungstabelle keine Einträge
enthalten, wird in die Zieltabelle immer die Zahl 0 (Null) importiert.
2. Datensätze mit Beziehungsfeldern, die auf ID-Felder von
Vorgabe-Tabellen verweisen, werden nur dann importiert, wenn in der
Vorgabe-Tabelle ein Vorgabedatensatz mit der ID 0 (Zahl Null) erstellt
wird, und als Vorgabewert kein Eintrag enthalten ist. Auch hier werden
dann aber in die Zieltabelle als Wert die Zahl 0 (Null) eingetragen.
Dies ist so der Fall, obwohl weder in den Zahlenfeldern, noch in den
Beziehungsfeldern zu ID-Werten in der Tabellenstruktur Einträge
erzwungen werden.
Gibt es für diese Importvariante irgend einen Typ, der auch leere
Datenfelder überträgt?
Hier als weitere Erläuterung mein auf den Import einer Tabelle gekürztes
Makro mit meinen Kommentaren:
SUB Datenkopie
dim dbname as string
dbname = InputBox("Datenbankname der Quelldatenbank eingeben")
if dbname = "" then
exit sub
end if
DIM oDatabaseContext AS OBJECT
DIM oDatenquelle AS OBJECT
DIM oDatenquelleQuell AS OBJECT
DIM oVerbindung AS OBJECT
DIM oVerbindungQuell AS OBJECT
DIM oDB AS OBJECT
DIM oSQL_Anweisung AS OBJECT
DIM oSQL_AnweisungQuell AS OBJECT
DIM oAbfrageergebnis AS OBJECT
DIM oAbfrageergebnisQuell AS OBJECT
DIM stSql AS String
DIM stSqlZiel AS STRING
DIM inID AS INTEGER
DIM inIDZiel AS INTEGER
oDB = thisDatabaseDocument
oDatenquelle = thisDatabaseDocument.CurrentController
If NOT (oDatenquelle.isConnected()) THEN
oDatenquelle.connect()
END IF
oVerbindung = oDatenquelle.ActiveConnection()
oDatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
stDir = Left(oDB.Location,Len(oDB.Location)-Len(oDB.Title))
stDir = ConvertToUrl(stDir & ""+dbname+"")
'Quell-Datenbankpfad erstellen
oDatenquelleQuell = oDatabaseContext.getByName(stDir)
'Quell-Datenbankpfad einlesen
oVerbindungQuell = oDatenquelleQuell.GetConnection("","")
'Quell-Datenbankverbindung einlesen
oSQL_AnweisungQuell = oVerbindungQuell.createStatement()
'SQL-Statement für Quelldatenbank erstellen
stSql = "SELECT * FROM ""tbl_Auswinterung"""
oAbfrageergebnisQuell = oSQL_AnweisungQuell.executeQuery(stSql)
WHILE oAbfrageergebnisQuell.next
inID = oAbfrageergebnisQuell.getint(1) 'ID (Integer)
sp2 = oAbfrageergebnisQuell.getLong(2) 'Integer
sp3 = oAbfrageergebnisQuell.getLong(3) 'Zahl' Long Double und int =
0 bei leer, String bricht ab bei leer, Currency Numeric Single Other Var
Varchar bricht sofort ab
sp4 = oAbfrageergebnisQuell.getString(4) 'Text
sp5 = oAbfrageergebnisQuell.getLong(5) 'Dezimalzahl
sp6 = oAbfrageergebnisQuell.getLong(6) 'Dezimalzahl
sp7 = oAbfrageergebnisQuell.getString(7) 'Datum
sp8 = oAbfrageergebnisQuell.getLong(8) 'Zahl
sp9 = oAbfrageergebnisQuell.getLong(9) 'Zahl
oSQL_AnweisungZiel = oVerbindung.createStatement()
stSql = "SELECT ""ID"" FROM ""tbl_Auswinterung"" WHERE ""ID"" = '"+inID+"'"
oAbfrageergebnis = oSQL_AnweisungZiel.executeQuery(stSql)
inIDZiel = - 1
WHILE oAbfrageergebnis.next
inIDZiel = oAbfrageergebnis.getInt(1)
WEND
IF inIDZiel = - 1 THEN
stSqlZiel = "INSERT INTO ""tbl_Auswinterung""
(""ID"",""StockNr"",""Brutwaben"",""Bemerkung"",""Futterwaben"",""Totenfall"",""Datum"",""Jahr_ID"",""Stärke_ID"")
VALUES
('"+inID+"','"+sp2+"','"+sp3+"','"+sp4+"','"+sp5+"','"+sp6+"','"+sp7+"','"+sp8+"','"+sp9+"')"
oSQL_Anweisung.executeUpdate(stSqlZiel)
END IF
WEND
MsgBox("Daten wurden übernommen")
end sub
MfG L-H
--
www.lkhome.de
--
Liste abmelden mit E-Mail an: users+unsubscribe@de.libreoffice.org
Probleme? https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy
Context
- [de-users] Import von leeren Zellen nicht möglich · Leo-Hubert Kappes
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.