Seite 1 von 1

Firebird mit LO-Base über ODBC - Integer-Eingaben unmöglich

Verfasst: So 21. Jul 2013, 09:47
von RobertG
Hallo *,

ich versuche seit einiger Zeit, die externe Datenbank "Firebird" mit LO-Base erfolgreich zu verbinden. Mit dem JDBC-Connector bekomme ich das halbwegs hin. Da muss lediglich beim Erstellen von Tabellen darauf geachtet werden, dass die Formatierung des Feldes mit dem Feldtyp übereinstimmt (macht z.B. grundsätzlich bei allen Zahlentypen einen Währungstyp - wenn das nicht direkt bei der Tabellenerstellung drauf geachtet wird, dann steht da nicht ID = 1, sonder ID = 1,00 €).

Probleme habe ich bei der Verbindung mit ODBC. Ich habe hier einen Linux-Rechner (OpenSUSE 12.3 64bit rpm). Ich bekomme die Verbindung auf der Konsole mit isql anstandslos hin, kann dort auch Daten eingeben und auslesen. Sobald ich aber mit Base über ODBC auf Firebird zugreife erscheinen zwei der vier Tabellen schreibgeschützt. Die nicht schreibgeschützten Tabellen sind komplett in Großbuchstaben geschrieben. Scheint in der Beziehung also schon einmal ein Problem der Quotierung mit " " zu sein. Gehe ich in die nicht schreibgeschützten Tabellen und versuche dort Eingaben zu tätigen, so werde ich jedes Mal rausgeschmissen mit der Warnung, dass der Primärschlüssel Null wäre (value "*** null ***").
Möchte ich eine Tabelle zum Bearbeiten öffnen oder eine neue Tabelle gründen, so stürzt LO gnadenlos ab.
Noch schlimmer ist es, wenn ich den Kontakt zu Base mit einer LO-Version 3.* versuche zu öffnen (oder auch der AOO 4 rc). Dann dreht sich die Eieruhr und nichts passiert. Ich kann die Prozesse schließlich nur noch killen.

Meine odbc.ini sieht inzwischen so aus:

Code: Alles auswählen

[Firebird-libretest]
Description 	= Firebird database libreoffice test
Driver          = Firebird
Dbname          = localhost:libretest.fdb
# Client 		=
# Role            =
# CharacterSet    = UTF-8
# ReadOnly        = No
# NoWait          = No
# Dialect 	= 3
# QuotedIdentifier = Yes
# SensitiveIdentifier = No
# AutoQuotedIdentifier = No
Ich habe aus dem dem Treiber beiliegenden Vorschlag (Sourcecode → Linux) mit der Zeit alle Variablen entfernt. Mit isql läuft das Ganze weiter, mit Base leider auch keine Änderung.

Erste Ergänzung:

Code: Alles auswählen

SensitiveIdentifier = Yes
- diese Einstellungen zeigen alle Tabellen ohne Schreibschutz.
Das Einfügen ist mir bisher aber nur bei Primärschlüsseln des Typs VARCHAR gelungen. Andere Tabellen verweigern den Dienst mit der "*** null ***"- Warnung wie oben beschrieben.

Ich habe entsprechend den Betreff geändert.

Gruß

Robert

Re: Firebird mit LO-Base über ODBC - Integer-Eingaben unmögl

Verfasst: Mo 29. Jul 2013, 11:50
von pmoegenb
Hallo Robert,
ich habe mal versucht mittels ODBC (Version 2.0.2) auf eine Firebird_Embed-DB (Version 2.5.2) zu zugreifen. Mit der folgenden Einstellung hat es dann letztendlich geklappt:
2013-07-29 11_53_34-Firebird ODBC Setup.gif
2013-07-29 11_53_34-Firebird ODBC Setup.gif (17.65 KiB) 4157 mal betrachtet
Die Datei ODBC.ini habe ich dabei nicht angefasst.

Nach der Beschreibung muss bei einem FB-Server die Datei services im Verzeichnis C:\Windows\System32\drivers\etc den Eintrag
  • gds_db 3050/tcp #Firebird-Datenbank
aufweisen. Vielleicht hilft Dir das weiter.

Re: Firebird mit LO-Base über ODBC - Integer-Eingaben unmögl

Verfasst: Mo 5. Aug 2013, 19:55
von RobertG
Hallo Peter,

hast Du auch einmal probiert, ob Du Werte in ein Integer-Feld eintragen kannst? Das scheint bei mir erst einmal der Hauptknackpunkt zu sein.

Gruß

Robert

Re: Firebird mit LO-Base über ODBC - Integer-Eingaben unmögl

Verfasst: Di 6. Aug 2013, 09:02
von pmoegenb
Hallo Robert,
ich habe einen Datensatz, der ein Integer-Feld aufweist, in der Datenbank-Ansicht eingefügt und anschließend mit IBExpert überprüft. Der Datensatz samt Inhalt des Integer-Feldes ist vorhanden.

Re: Firebird mit LO-Base über ODBC - Integer-Eingaben unmögl

Verfasst: Di 6. Aug 2013, 10:23
von RobertG
Hallo Peter,

ich habe den Eindruck, dass wir aneinander vorbei schreiben. Ich meine die Integer-Eingaben von Base mittels ODBC. Mit JDBC kann ich Eingaben über Base machen. Mit ODBC klappt das nicht für Integer-Felder, wenn ich Base nutze. Ich kann aber über das Tool "isql" und ODBC auch Integer-Werte schreiben.
Das sieht dann wie in der angehängten Datei aus.
Firebird hat da auch ein etwas anderes Verständnis, die Zahlen anzugeben. So ist die Längenangabe für Integer 32. Steht für 2^32 → 10 Stellen, nämlich 4294967296 als Maximum.
Small-Integer und Big-Integer gehen übrigens - wie auch ersichtlich.

Gruß

Robert

Re: Firebird mit LO-Base über ODBC - Integer-Eingaben unmögl

Verfasst: Di 6. Aug 2013, 10:33
von pmoegenb
Hallo Robert,
RobertG hat geschrieben: ich habe den Eindruck, dass wir aneinander vorbei schreiben. Ich meine die Integer-Eingaben von Base mittels ODBC.
Nichts anderes habe ich geschrieben. In LibO heißt es natürlich korrekter Weise Datenquellenansicht (F4) und nicht Datenbank-Ansicht
Firebird_ODBC.gif
Firebird_ODBC.gif (7.82 KiB) 4098 mal betrachtet

Re: Firebird mit LO-Base über ODBC - Integer-Eingaben unmögl

Verfasst: Di 6. Aug 2013, 11:33
von RobertG
Hallo Peter,

ich habe jetzt weiter recherchiert. Das ganze ist wohl ein Definitionsproblem, was unter allen Linux-64bit-Varianten auftaucht:
http://tracker.firebirdsql.org/browse/ODBC-141
und hier die Erklärung
https://bugs.freedesktop.org/show_bug.cgi?id=45881

Der ODBC-Treiber von Firebird liefert nicht die erforderliche Information für eine Unterscheidung von Integer und Long ...

Gruß

Robert