OpenSchema - Fehler
-
Hallo,
ich versuche mit OpenSchema(...) auf Schemainformationen zuzugreifen. Bei der Ausführung des Programms bekomme ich folgende Fehlermeldung:
"Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereichs oder sind miteinander unvereinbar."ADOConnection1->OpenSchema(siTables, NULL, NULL, ADODataSet1);Weiß jemand Rat?
Danke
-
wieso übergibst du NULL? der erwartet nen Typ OleVariant
-
Danke erstmal für die schnelle Antwort.
Du meinst als Filter?
Naja, ich möchte aber nichts filtern. Deshalb NULL. Jedenfalls habe ich es schon mit verschiedenen Parametern versucht, jedoch ohne Erfolg. Immer wieder taucht bei der Ausführung die genannte Fehlermeldung.OleVariant ol[4] = {NULL, NULL, "TABLE_NAME", NULL}; ADOConnection1->OpenSchema(siTables, ol, NULL, ADODataSet1);Was mache ich da falsch?
Danke
-
Question:
How do I pass the OleVariant array in TADOConnection::OpenSchema()?Answer:
int bounds[] = {0,3};
OleVariant A(bounds,1, varVariant);
A.PutElement(Unassigned,0);
A.PutElement(Unassigned,1);
A.PutElement(WideString(myADOTable->Name) ,2);
A.PutElement(Unassigned,3);
myADOConnection->OpenSchema(siColumns, A , EmptyParam, myADODataSet);Das oben Zitiert habe ich auf der Borlandseite gefunden:
http://bdn.borland.com/article/0,1410,20498,00.htmlWenn ich den Code compliere, dann bekomme ich den Fehler:
'const Variant &' kann nicht mit 'Variant()' intialisiert werden
und zwar in der Zeile u.a.
A.PutElement(Unassigned,0);Kann jemand helfen?
Danke
-
Keiner 'ne Idee?
akari! Wo bist du? Hilfe! :xmas1:
-
Hallo
Ich habe ADO nicht, kann also nur raten.
Laut der Fehlermeldung will OpenSchema eine Adresse auf ein Variant, also probier malmyADOConnection->OpenSchema(siColumns, &A , EmptyParam, myADODataSet);bis bald
akari
-
Hallo akari,
danke für deine Antwort.
Leider war es das aber nicht, denn der Fehler taucht schon früher auf, und zwar in der Zeile:A.PutElement(Unassigned,0);Womit ich leider nichts anfangen kann.
Wenn ich folgende Zeilen auskommentiere, dann wird der Code ohne Fehler compliert:
A.PutElement(Unassigned,0); A.PutElement(Unassigned,1); A.PutElement(WideString(myADOTable->Name) ,2); A.PutElement(Unassigned,3);Hättest du vielleicht noch einen andern Tip?
Oder wer kann da noch helfen?Danke!
:xmas1:
-
Hallo,
für "Unassigned" habe ich "NULL" genommen:
A.PutElement(NULL,0);Damit wird der Code ohne Fehler compliert.

Mal sehen, ob es auch funktioniert.
-
openschema schrieb:
Hallo,
für "Unassigned" habe ich "NULL" genommen:
A.PutElement(NULL,0);Damit wird der Code ohne Fehler compliert.
Womit wieder bei der Ausführung die Fehlermeldung:
Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereichs oder sind miteinander unvereinbar.
auftaucht, und zwar hier:
myADOConnection->OpenSchema(siColumns, A , EmptyParam, myADODataSet);Ich habe es auch mit folgendem Code versucht, jedoch ohne Erfolg:
myADOConnection->OpenSchema(siColumns, &A , NULL, myADODataSet);
-
openschema schrieb:
Wenn ich den Code compliere, dann bekomme ich den Fehler:
'const Variant &' kann nicht mit 'Variant()' intialisiert werden
und zwar in der Zeile u.a.
A.PutElement(Unassigned,0);Lösung dieses Problems:
A.PutElement(&Unassigned,0);Bleibt noch das Problem mit den Argumenten von OpenSchema:
Die Argumente sind vom falschen Typ, liegen außerhalb des Gültigkeitsbereichs oder sind miteinander unvereinbar.
-
probiere mal EmptyParam statt NULL. zumindest liefert google hunderte seiten wenn man nach ADOConnection OpenSchema. vielleicht solltest du auch selber mal danach schauen!
-
Habe ich schon, Sunday.
Ich bin dabei auch auf einen Tip gestossen, dass EmptyParam, NULL, Null und Unassigned zu verschiedenen Egebnissen führen, was ich vorher nicht wusste.
Du hast recht, der richtige Parameter an dieser Stelle ist EmptyParam. Doch da bekomme ich den Fehler:Undefiniertes Symbol 'EmptyParam'
In der Hilfe steht:
Die Variable EmptyParam gibt ein OleVariant-Objekt zurück, das einen nicht verwendeten, optionalen Parameter über eine duale Schnittstelle repräsentiert.
Unit
Variants
Aber das Includen von "Variants.hpp" beseitigt den Fehler nicht.

Ich stehe wieder auf'm Schlauch...
-
kann nur raten, da ich noch nie mit ADO gearbeitet habe...
// entweder den header inkludieren #include <olectrls.hpp> // oder das probieren Olectrls::EmptyParam // oder das Variants::EmptyParam
-
Sunday schrieb:
kann nur raten, da ich noch nie mit ADO gearbeitet habe...
// entweder den header inkludieren #include <olectrls.hpp>Das hat den Compilerfehler beseitigt. Danke!
Nun bekomme ich bei der Ausführung folgende Fehlermeldung:Das Objekt oder der Provider kann den angeforderten Vorgang nicht ausführen
Google lieferte mir leider keine hilfreiche Antwort.
Ich schätze, ich muss mich mit ADO und OpenSchema gründlicher beschäftigen.
-
Falls sich jemand dafür interessiert.
So geht es:myADOConnection->OpenSchema(siColumns, WideString(myADOTable->TableName), EmptyParam, myADODataSet);Beispiel:
AnsiString s = ""; Memo1->Clear(); myADOConnection->OpenSchema(siTables, EmptyParam, EmptyParam, myADODataSet); for(int i=0;i<myADODataSet->RecordCount;i++) { s = myADODataSet->FieldByName("TABLE_CATALOG")->AsString + "\t"; s += myADODataSet->FieldByName("TABLE_SCHEMA")->AsString + "\t"; s += myADODataSet->FieldByName("TABLE_NAME")->AsString + "\t"; s += myADODataSet->FieldByName("TABLE_TYPE")->AsString; Memo1->Lines->Add(s); myADODataSet->Next(); }Allen, die geholfen haben, danke!