Seite 1 von 1

Tabellenname in Result Object

BeitragVerfasst: Mo 7. Mär 2016, 16:06
von Lookover
Hallo

Ich habe ein recht eigenartiges Problem.
Ich verwende SQLite und bin damit sehr glücklich.

Nun installiere ich mein Gambas Programm auf einem anderen Computer und dort bekomme ich die Fehlermeldung:

Unknown Field Table.Column

Nach langem Debugen komme ich drauf, dass auf dem anderen PC der Gambas Interpreter das Resultobject ohne den Tabellennahmen erwartet.
also

Code: Alles auswählen
dim tmp as Result
tmp["Tabelle.Spalte"]

bzw.
tmp["Spalte"]



Das eine Gerät akzeptiert beide Varianten und das neue Gerät akzeptiert NUR die schreibweise ohne Tabellennamen.
Die Gambas Versionen weichen nicht ab, obwohl ich nicht glaube, dass ein derart elementare Änderung von Version zu Version unterschiedlich ist.

Das wäre nun ein riesen Aufwand das im gesamten Programm umzuschreiben.

BZW: Was kann der Grund dafür sein ?


Danke und lg

Re: Tabellenname in Result Object

BeitragVerfasst: Di 8. Mär 2016, 12:35
von tux_
Die Datenbank-Komponente in Gambas basiert auf Treibern. Wenn du dich zu einer SQLite3-DB verbindest, wird intern der SQLite3-Treiber mit der Connection und allen aus der Connection hervorgehenden Objekten assoziiert. Die Result-Klasse tut dann nichts weiter als Aufrufe an sich in Aufrufe an den Treiber zu konvertieren, der seinerseits stark von der Programmbibliothek des DMBS abhaengt. Ist denn die SQLite3-Version auf beiden Systemen verschieden?

Tabellenname in Result Object

BeitragVerfasst: Fr 18. Mär 2016, 08:54
von Lookover
Hallo.
Ja, ich habe nun nachgesehen.

Das sind ganz geringfügig unterschiedliche sqlite3 Versionen.
Warum aber ändert sich in SQLite ein derartig grosses Element grundsätzlich ?

Ich habe viel und in alle Richtungen recherchiert , konnte leider keinen Lösungsansatz finden.
Ich fand beispielsweise diesen "Sqlite-Befehl"
Code: Alles auswählen
.headers ON


Ich nehme an, dieser greift nur wenn ich auf der Shell direkt in die SQLite Datenbank verbunden bin.
BZW:
Grundsätziche andere Frage:
Gibt es eine Möglichkeit direkt aus gambas diese SQlite Befehle, die mit "." beginnen auszuführen.
Also zb ".schema"

Wobei ich fürchte dass wird mir nichts helfen, weil wie gesagt ich annehme sich dieses ".headers ON" nur auf die SQLIte Console bezieht.

Hast du eine Idee, wie ich das nun lösen könnte.
Ich muss mittelfristig mein Programm auf andere Distros portieren können.
Das bedeutet, ich müsste alle querys umschreiben.

querys umschreiben deswegen, weil:
Wenn ich
Code: Alles auswählen
select * from Table angebe

angebe, habe ich mein beschriebenes Problem

gebe ich allerdings
Code: Alles auswählen
select Column1.Table,Column2.Table,Column3.Table,Column4.Table from Table

an, bekomme ich das Resultobject so wie ich es brauchen würde.

Vielen Dank und
lg aus Wien

Re: Tabellenname in Result Object

BeitragVerfasst: Di 7. Jun 2016, 22:33
von Lookover
Nach einer sehr sehr langen Reise konnte ich die Lösung selbst finden:
Unmittelbar nach dem vebinden, muss man diesen Aufruf durchführen:

Code: Alles auswählen
PRAGMA short_column_names = OFF


Detailierte Informationen dazu fiondet man hier:
https://www.sqlite.org/pragma.html#pragma_full_column_names

Re: Tabellenname in Result Object

BeitragVerfasst: Sa 25. Feb 2017, 20:10
von Honsek
Hallo Lookover,

mich würde sehr interessieren, wie und wo man diesen Aufruf im Quelltext umsetzt: PRAGMA short_column_names = OFF?, denn mich plagt gegenwärtig das selbe Problem mit den Feldnamen in meinem Datenbank-Report.

Mit freundlichem Gruß

Honsek

Re: Tabellenname in Result Object

BeitragVerfasst: Sa 25. Feb 2017, 20:59
von 4tionov
Normalerweise genauso wie ein "Select ... ".

Also, wenn DB das Datenbank-Objekt ist, dann:
DB.Exec("PRAGMA short_column_names = OFF")

(schätze ich jetzt mal ...)

Re: Tabellenname in Result Object

BeitragVerfasst: Sa 25. Feb 2017, 23:45
von Honsek
Hallo,

das war der richtige Hinweis: cDBVerbindung.Exec("PRAGMA short_column_names = ON") . Kaum macht man es richtig - schon geht es! (Aber leider ist nicht Alles richtig, was so geht ...).

Vielen Dank Christof für die gute Schätzung. Mit freundlichem Gruß

Honsek

sc_report.png
DB-Report (WebPage)
sc_report.png (57.07 KiB) 220-mal betrachtet