Daten in Datenbank schreiben

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Daten in Datenbank schreiben

Re: Daten in Datenbank schreiben

von komma4 » Fr, 20.02.2009 09:47

uli38 hat geschrieben:ich habe schon versucht "null" oder "default" einzutragen
So eine Angabe ist von der genutzten Datenbank-engine abhängig.
Wie hast Du das geschrieben?

values('"default"' wäre falsch, hast Du auch values( DEFAULT (also ohne Anführungszeichen) probiert?

Re: Daten in Datenbank schreiben

von uli38 » Do, 19.02.2009 21:07

Okay.
ich habe meinen Code nun umgestellt.
Die Zeile schaut nun so aus:

Code: Alles auswählen

sSQL = "Insert into ""Einnahmen"" (""Einnahmen-ID"",""Datum"",""Buchungstext"", ""Betrag"", ""Kategorie"", ""Zahlender"", ""Objekt-ID"") values('""','01.04.2009', 'Miete incl. Nebenkosten', '550','Miete incl. Nebenkosten', '1','1')"
Aber ich erhalte eine Fehlermeldung:
Message: Wrong data type:java.lang.Numer.Format.exception:For input string

Es scheint an der Einnahmen-ID zu liegen - das ist der Primärschlüssel und wird automatisch erzeugt.
ich habe schon versucht "null" oder "default" einzutragen, aber das geht leider nicht.
Welchen Wert muss ich eintragen?

danke.
Gruß
uli

Re: Daten in Datenbank schreiben

von komma4 » Do, 19.02.2009 11:14

Wenn die Spalte "Objekt-ID" heisst, dann wird sie auch so geschrieben (und nicht "Objekt"-"Id") .


Wenn Du schon gefunden hast, dass hier ein Bug existiert, ... wie soll das dann bei Dir funktionieren?

Ich verwende keine UPDATEs, sondern nur INSERTs ....

Re: Daten in Datenbank schreiben

von uli38 » Mi, 18.02.2009 20:08

Hallo Winfried.
Vielen Dank für Deine Literatur-Tipps:-)
In der Tabelle, die abgefragt werden soll, gibt es eine Spalte mit dem Namen "Objekt-ID". Ist das ein Problem bei der Abfrage?

ich hbae mittlerweile die erbindung zur Tabelle aufbauen können.
ABER:
Beim Einfügen der neuen Zeile gibt es wieder einen Fehler:"The result-set is read-only". Und das, obwohl ich die Abfrage als UPDATABLE gesetzt habe:

Code: Alles auswählen

oStatement.ResultSetConcurrency=com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE
Im Forum habe ich von einem Bug gelesen, dass diese Funktion also nicht möglich ist.
Wenn dem so ist, wie kann ich trotzdem einen Datensatz einfügen??
In dem AndrewBase Dokument finde ich dazu auch keine Lösung.

Gruß
Uli

Re: Daten in Datenbank schreiben

von komma4 » Di, 17.02.2009 23:40

Siehe mal Andrews Base-Dokument ... oder andere Beispiele hier im Forumsbereich.

"Object-Id"?


Ich dachte nicht, dass man sooo sehr aufpassen muss.
doch, das ist so: => kopieren !

Mehr zu den Grundlagen in Andrews Makro-Dokument


Viel Erfolg!

Re: Daten in Datenbank schreiben

von uli38 » Di, 17.02.2009 20:27

Okay, ich bin jetzt bei der folgenden Zeile:

Code: Alles auswählen

oResultSet = oStatment.executeQuery ("SELECT Datum, Buchungstext, Betrag, Kategorie, Zahlender, Objekt-ID  FROM Einnahmen")
Mit folgender Fehlermeldung:
"Es ist eine Exception aufgetreten.
type:com.sun.star.lang.Illegal.ArgumentException.
Message: Table not found in Statement[SELECT "Datum", "Buchungstext", "Betrag", "Kategorie", "Zahlender", "Objekt"- "ID" FROM "Einnahmen"]

Ich habe die Objekt-ID schon heraus genommen, aber das hilft nichts. Wobei das wohl das nächste Problem wird: die Objekt-ID brauche ich unbedingt.
Meine Idee ist, alle Spalten bis auf die erste zu selktieren, weil sie erste Spalte eine automatische ID enthält, und das geht wohl laut Literatur nicht.

Gruß
Uli

Re: Daten in Datenbank schreiben

von uli38 » Di, 17.02.2009 19:35

Oh Mann, schon wieder ein Schreibfehler!
Es muss ja heißen:

Code: Alles auswählen

oConnection=oDataSource.getConnection(",")
Aber das bringt den nächsten Fehler:
"Es ist eine Exception aufgetreten.
type:com.sun.star.lang.Illegal.ArgumentException.
Message: arguments len differ!"

Was ist das schon wieder?

Uli

Re: Daten in Datenbank schreiben

von uli38 » Di, 17.02.2009 19:03

Hallo Winfried.
Ja, stimmt. Ich dachte nicht, dass man sooo sehr aufpassen muss.
Leider kommt das Makro zur 2 Zeilen weiter, nämlich bis:

Code: Alles auswählen

oConnection=oDataSoure.getConnection(", ")
Dann kommt ein Basic-Laufzeitfehler: "objekt-Variable nicht belegt"

Dabei HABE ich die Variable zuvor definiert - und den Text aus einem Grundlagenbuch abgeschrieben...
Weißt du die Lösung??

Danke
Gruß
Uli

Re: Daten in Datenbank schreiben

von komma4 » Di, 17.02.2009 10:04

"Variable nicht belegt" bedeutet, dass das verwendete Objekt nicht erzeugt wurde.
In Deinem Fall deswegen, weil Du zwei Tippfehler in der Anweisung hast:

oDatabasecontext=CreateUnoService("
Com.sun.star.sdb.oDatabaseContext")

Korrekt wäre:

Code: Alles auswählen

oDatabasecontext=CreateUnoService("com.sun.star.sdb.DatabaseContext")
Stimmt's?

Daten in Datenbank schreiben

von uli38 » Mo, 16.02.2009 21:37

Hallo.
Ich möchte per Makro Daten in eine Datenbank "Verwaltung" schreiben. Und da speziell in die Tabelle "Einnahmen".
Das Makro schaut so aus:

Code: Alles auswählen

Sub Kontoabgleich

Dim oDatabaseContext as Object
Dim oDataSource as object
dim oConnection as object
dim ostatement as object
dim oResult as object

oDatabasecontext=CreateUnoService("Com.sun.star.sdb.oDatabaseContext")
oDataSource=oDatabaseContext.getbyName("Verwaltung")
oConnection=oDataSoure.getConnection(",")
ostatement=oConnection.createstatement()
oStatementResultSetConcurrency=com.sun.star.odbc.resultsetConcurrency.updatable
oResultset=ostatementexecuteQuery("Select* FROM Einnahmen")
oResultset.moveToINsertRow()
Oresultset.updateString(2, "Miete incl. NK")
Oresultset.updateInt(3,525)
Oresultset.updateString(3, "Miete incl. NK")
Oresultset.updateInt(4,2)
Oresultset.updateInt(5,1)

End Sub
Leider bekomme ich in der Zeile
oDataSource=oDatabaseContext.getbyName("Verwaltung") immer den Fehler "Variable nicht belegt".
Aber es gibt die Datenbank.
Hat jemand eine Lösung??

Schon jetzt danek..
Grüße
Uli

Nach oben