Date: prev next · Thread: first prev next last
2020 Archives by date, by thread · List index


Hallo users,

ich hatte schon mal ein ähnliches Problem und stecke jetzt wieder einmal
fest, sodass ich eure Hilfe brauche.

Zur Realisierung eines Makros, das beim Update einer Datenbank die
vorhandenen Daten der alten Version in die Tabelle "Mitglieder" der
neuen Version überträgt habe ich das u.a. Makro erstellt.

Mein Problem:

Alle Daten werden importiert, nur die Spalte 20 (sp20) macht mir Probleme.

Dort steht das Geburtsdatum der Vereinsmitglieder.

Da dies aber nicht bei allen Mitgliedern benötigt wird, sind auch
Datensätze in der Datenbank enthalten, die in diesem Feld keine Einträge
enthalten.

Wenn ich das Makro mit dem INSERT für die Spalte 20 so ausführe, wie es
unten enthalten ist, ('"+sp20+"') importiert es die Daten bis zum ersten
Datensatz, der kein Datum in "Geburtstag" enthält und bleibt dann stehen
mit der Meldung "Wrong data type".

Wenn ich das Makro mit dem INSERT für die Spalte 20 so ausführe (" &
sp20 & ") importiert es Datensätze, die im Feld "Geburtstag" keinen
Eintrag enthalten, bleibt aber beim ersten Datensatz mit Datumseintrag
in diesem Feld stehen.  (Zum Test hatte ich in den ersten Datensätzen
die Datums-Inhalte gelöscht).

Ich hab das schon mal in einer anderen Datenbank mit eurer Hilfe
erfolgreich angewendet. Das o.a. Problem ist dort aber nicht
aufgetaucht, da in dieser Datenbank alle Datensätze im Feld Datum einen
Eintrag hatten.


Vielleicht hat ja jemand einen Tipp, wie ich die Sach noch lösen kann.


Vielen Dank im Voraus

Gruß  L-H


Hier das Makro:

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 ""Mitglieder"""
oAbfrageergebnisQuell = oSQL_AnweisungQuell.executeQuery(stSql)
WHILE oAbfrageergebnisQuell.next
inID = oAbfrageergebnisQuell.getint(1)         'ID (Integer)
sp2 = oAbfrageergebnisQuell.getString(2)     'Text
sp3 = oAbfrageergebnisQuell.getString(3)     'Text
sp4 = oAbfrageergebnisQuell.getString(4)     'Zahl
IF sp4="" THEN
    sp4="NULL"
END IF
sp5 = oAbfrageergebnisQuell.getString(5)    'Text
sp6 = oAbfrageergebnisQuell.getString(6)    'Zahl
IF sp6="" THEN
    sp6="NULL"
END IF
sp7 = oAbfrageergebnisQuell.getString(7)    'Text
sp8 = oAbfrageergebnisQuell.getString(8)    'Text
sp9 = oAbfrageergebnisQuell.getString(9)    'Text
sp10 = oAbfrageergebnisQuell.getString(10)    'Text
sp11 = oAbfrageergebnisQuell.getString(11)    'Text
sp12 = oAbfrageergebnisQuell.getBoolean(12)    'Ja/Nein
sp13 = oAbfrageergebnisQuell.getString(13)    'Text
sp14 = oAbfrageergebnisQuell.getString(14)    'Text
sp15 = oAbfrageergebnisQuell.getString(15)    'Text
sp16 = oAbfrageergebnisQuell.getString(16)    'Text
sp17 = oAbfrageergebnisQuell.getString(17)    'Text
sp18 = oAbfrageergebnisQuell.getString(18)    'Text
sp19 = oAbfrageergebnisQuell.getString(19)    'Text
sp20 = oAbfrageergebnisQuell.getString(20)    'Datum
IF sp20="" THEN
    sp20="NULL"
END IF

oSQL_AnweisungZiel = oVerbindung.createStatement()
stSql = "SELECT ""ID"" FROM ""Mitglieder"" 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 ""Mitglieder""
(""ID"",""Nachname"",""Vorname"",""Eintritt"",""Ehrennadel"",""Ehrenmitglied"",""Vorstand"",""passiv
seit"",""alte
Passive"",""Aktivzeiten"",""Funktion"",""Marke"",""Bemerkungen"",""telnr"",""email"",""IBAN"",""BIC"",""BName"",""Mand-ID"",""Geburtstag"")
VALUES ('"+inID+"','"+sp2+"','"+sp3+"','"+sp4+"','"+sp5+"'," & sp6 &
",'"+sp7+"','"+sp8+"','"+sp9+"','"+sp10+"','"+sp11+"','"+sp12+"','"+sp13+"','"+sp14+"','"+sp15+"','"+sp16+"','"+sp17+"','"+sp18+"','"+sp19+"','"+sp20+"')"
oSQL_Anweisung.executeUpdate(stSqlZiel)
END IF
WEND

MsgBox("Daten wurden übernommen")
end sub


-- 
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


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.