Hallo,
ich suche nach einer Möglichkeit über Qt den PrimaryKey und sonstige Indizes einer Datenbank zu ermitteln. Die obige Funktion liefert mir einen QSqlIndex mit sinnfreien Werten zurück.
mit cursorName() den TabellenNamen und
mit name() je nach DB (bei MySql 'Primary' und bei Access '0')
Die einzige Information, die mich interessiert ist aber, auf welcher Spalte oder auf welchen Spalten sitzt der PrimaryKey. Informationen über andere Indizes wären auch nicht schlecht. Bei MySql oder SQLite kann ich über den Zugriff auf DB-interne Systemtabellen zur gewünschten Info kommen.
Aber wie geht das bei ODBC (mit Access).
Habe sämtliche Beispiele von Qt 4.6 nach dem Stichwort QSqlIndex gescannt. Null Einträge gefunden. Seufz !!
kennt jemand Möglichkeiten ?
tschüß
Troll.Soft
QSqlIndex PrimaryIndex = DB->primaryIndex ( TableName );
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
ähem,mgleich hat geschrieben:Ich denke Du wirst danach suchen müssen wie Du per SQL Abfrage in Access die Indizes abfragen kannst.
gesucht habe ich schon aber nur VisualBasic gefunden unter Windows.
Ich fahre C++, Qt und alles soll unter Windows, Linux etc laufen, möglichst ohne proprietäre Software.
Vielleicht hat noch jemand einen Tipp
Was bekommst Du denn, wenn Du folgendes ausprobierst?
Kann sein, dass vorher noch ein open notwendig ist.
Code: Alles auswählen
QSqlDatabase tDb=QSqlDatabase::addDatabase("QODBC");
tDb.setDatabaseName("ACCESS_DSN");
QSqlIndex tIndex=tDb.primaryIndex(sTableName);
QStringList tFields;
QList<bool> tOrders;
for(int i=0; i < tIndex.count(); ++i)
{
tFields.append(tIndex.fieldName(i));
tOrders.append(!tIndex.isDescending(i));
}-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
wenn ich den open noch ergänze liefert mir ein tDb.table() ordnungsgemäß die Tabellen. primaryIndex(TabellenName) liefert einen leeren QSqlIndex zurück indem nur der cursorName() einen Wert hat.mgleich hat geschrieben:Was bekommst Du denn, wenn Du folgendes ausprobierst?
...
Kann sein, dass vorher noch ein open notwendig ist.
MySql z.B. stellt Systemtabellen zur Verfügung aus denen ich alles rauslesen kann.
Hast Du noch eine Idee???
Schau mal hier:
http://www.pcreview.co.uk/forums/thread-2342556.php
Vielleicht kommst Du damit weiter.
Oder Du suchst selbst nach "Access odbc \"get index\"" in Google.
Sag aber bitte bscheid, wenn Du etwas hinbekommen hast.
http://www.pcreview.co.uk/forums/thread-2342556.php
Vielleicht kommst Du damit weiter.
Oder Du suchst selbst nach "Access odbc \"get index\"" in Google.
Sag aber bitte bscheid, wenn Du etwas hinbekommen hast.
-
Troll.Soft
- Beiträge: 190
- Registriert: 18. Juni 2008 09:52
- Wohnort: Hamburg
Klar sag ich Bescheid, wenn es läuft. Unter obiger Abfrage findet man inzwischen meine eigenen Frage in diesem Qt-Forum. Leider noch ohne die Lösung. Google wimmelt nur so von Lösungen für Visual Basic und DAO. Aber ich möchte es mit C++, Qt und Sql hinkriegen. Irgendwie werde ich das auch noch schaffen.mgleich hat geschrieben:Oder Du suchst selbst nach "Access odbc "get index"" in Google.
Sag aber bitte bscheid, wenn Du etwas hinbekommen hast.
bis dann
Troll.Soft