Probleme mit AdoQuery->GetFieldNames
-
Hallo zusammen,
ich habe ein Problem beim Abfragen der Tabellennamen einer Datenbank. Der Code sieht wie folgt aus :
TStringList* Liste=new TStringList(); this->ADOQuery->GetFieldNames(Liste);
Jedesmal wenn GetFieldNames aufgerufen wird erscheint die Execption :
"TFieldList kann nicht zu TStringList zugewiesen werden"
Kann mir jemand helfen ???
Ich arbeite mit dem C++ Builder 2007 unter Win XP SP3.Danke im Voraus
-
GetFieldNames erwartet einen Zeiger auf TStrings, also musst du deine StringList entsprechend casten.
ADOQuery1->GetFieldNames((TStrings*)Liste);
-
Ein Casting auf TStrings* oder TFieldList* bringt leider gar nichts. Der Fehler bleibt nach wie vor. Drehe hier langsam durch...
Trotzdem Danke
-
Sebastel schrieb:
... Abfragen der Tabellennamen einer Datenbank...
Vielleicht wäre die Abfrage der ADOConnection naheliegender.
TStringList* Liste=new TStringList(); ADOConnection1->GetTableNames(Liste, False); // anzeigen Memo1->Text = Liste->Text; delete Liste;
Wie lautet im übrigen der SQL-String deine ADOQuery?
-
Sorry, ich möchte eigentlich die Spaltennamen abfragen und nicht die Tabellennamen. Habe mich in meiner Problembeschreibung verschrieben. Das Abfragen der Tabellennamen geht in meiner dll.
Abgesehen von einem einfachen "SELECT * FROM Tabelle1" wird kein SQL-Code ausgeführt.
-
Hallo
Ich kann den Fehler nicht nachvollziehen. Mit TQuery kompiliert dieser Quellcode ohne Probleme
TStringList* Liste=new TStringList(); Query1->GetFieldNames(Liste);
Und da TQuery und TADOQuery ja mit TDataSet dieselbe Basisklasse haben, hat ja auch die Methode TDataSet::GetFieldNames den gleichen Prototyp. Auch eine explizite Konvertierung zu TStrings sollte nicht nötig sein.
Offenbar gibt es noch andere Faktoren außerhalb der gezeigten zwei Zeilen Quellcode, die für die Fehlermeldung verantwortlich sind.bis bald
akari
-
Hallo zusammen,
nach zahlreichen Testläufen und Analysieren der Vorgängerversionen habe ich festgestellt, dass die Fehlermeldung nur kommt, wenn man unter ->Optionen den Haken bei 'Laufzeitpackages verwenden' rausnimmt.
Kann mir jemand erklären warum das so ist? Irgendwie scheint doch da dann irgenein Package nicht richtig gelinkt worden zu sein, oder? Ich kann aber nicht auf jedem Rechner BCB instalieren auf welchen ich das Programm laufen lassen will. Hat jemand einen Tip ?
-
Kann mir wirklich niemand helfen? Kennt vielleicht einer von euch eine Alternative die Spaltennamen auszulesen?