![]() |
SQL => zugriff auf Feld unbekannten Namen's
Ostern wünsch ich !!
folgendes Problem: Ich weise einer Query nach Bedarf verschiedene Tabellen zu, möchte aber auf ein bestimmtes Feld zugreifen ohne den konkreten Namen zu wissen, weiß nur das es sich um ein TAutoInc-Field handelt. ..achso es handelt sich um ADS-Tabellen. Ich möchte den Wert der sich gerade in jenem Feld(TAutoInc) befindet in eine andere Tabelle schreiben.wie kann ich das bewerkstelligen ?? :gruebel: Danke im voraus Klaus |
Re: SQL => zugriff auf Feld unbekannten Namen's
Hallo Klaus!
Ich denke Du brauchst den Namen deines unbekannten Feldes. Um ihn herauszufinden musst Du den Aufbau der Query untersuchen und nach einem Feld suchen das vom Typ „ftAutoInc“ ist. Ich würde das so machen:
Delphi-Quellcode:
Den Namen des Feldes kannst Du mit FieldDefs.Items[i].Name abfragen.
with Query do
for i := 0 to FieldCount -1 do case FieldDefs.Items[i].DataType of ftString : // Zeichen- oder String-Feld ftInteger: // 32-Bit-Integer-Feld ftAutoInc: // 32-Bit-Integer-Zählerfeld end; end; So! Wenn man schon den Namen kennt, dann ist der Zugriff auf sein Wert kein Problem mehr! Gruß Markus [edit=r_kerber]Delphi-Tags gesetzt. Mfg, r_kerber[/edit] |
Re: SQL => zugriff auf Feld unbekannten Namen's
Danke für Deine Antwort.
ich habe aber das Problem, wenn ich der Query.SQL: einen String mit einen 'Like' zuweise findet die Case-Schleife kein AutoInc Field.
Delphi-Quellcode:
mit SELECT * From Tabelle ==> klappt es
frmDataMod.SQLDetailQuery.Close;
frmDataMod.SQLDetailQuery.SQL.Clear; frmDataMod.SQLDetailQuery.SQL.Text:=' SELECT * FROM '+V_Tabellenname+' WHERE UPPER( '+V_Spaltenname+' )like :p1'; frmDataMod.SQLDetailQuery.Open; WARUM?? das Problem ist biestimmt 'like'; Tschö Klaus [edit=r_kerber]Code- durch Delphi-Tags ersetzt. Mfg, r_kerber[/edit] |
Re: SQL => zugriff auf Feld unbekannten Namen's
Hi Klaus!
Soweit ich weiß verwendet man "LIKE" um alle Strings aus einer Datenmenge rauszufischen, die einem Muster entsprechen. Du untersuchst ein Feld, das als vom Typ ftAutoInc (also 32-Bit-Integer -> kein String) ist. Ich glaube, dass es deswegen mit dem "LIKE" nicht klappt. Versuch einmal bitte statt "LIKE" einfach "=" zu verwenden. Gruß Markus |
Re: SQL => zugriff auf Feld unbekannten Namen's
Rein theoretisch könnte Markus recht haben.
Die WHERE-Clause läuft im Query-Plan vor der SELECT-Clause. In der WHERE-Clause gibt es einen Typcast auf String um den Like Operator verwenden zu können. Das Problem ist dabei, dass der Wert im SELECT davon nicht abhängig sein darf. Teste das mal mit mehreren Tabellen und unterschiedlichen Abfragen. Kommt dabei immer wieder so ein Schwachfug raus, würde ich eine Mail an den Hersteller der DB schreiben oder im allwissenden Internet nach einem Work around suchen. Waidmann's heil :mrgeen: |
Re: SQL => zugriff auf Feld unbekannten Namen's
Moin
Ihr habt meinen Verdacht bestätigt. Danke und noch ein schönes Osterfest :dancer: Tschö Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz