Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL => zugriff auf Feld unbekannten Namen's (https://www.delphipraxis.net/19886-sql-%3D-zugriff-auf-feld-unbekannten-namens.html)

Klaus D. 10. Apr 2004 12:27


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

MarkusB 10. Apr 2004 14:27

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:
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;
Den Namen des Feldes kannst Du mit FieldDefs.Items[i].Name abfragen.
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]

Klaus D. 10. Apr 2004 18:14

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:
frmDataMod.SQLDetailQuery.Close;
frmDataMod.SQLDetailQuery.SQL.Clear;
frmDataMod.SQLDetailQuery.SQL.Text:=' SELECT * FROM '+V_Tabellenname+' WHERE UPPER( '+V_Spaltenname+' )like :p1';
frmDataMod.SQLDetailQuery.Open;
mit SELECT * From Tabelle ==> klappt es
WARUM?? das Problem ist biestimmt 'like';

Tschö Klaus

[edit=r_kerber]Code- durch Delphi-Tags ersetzt. Mfg, r_kerber[/edit]

MarkusB 10. Apr 2004 23:19

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

Robert_G 11. Apr 2004 00:04

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:

Klaus D. 11. Apr 2004 09:07

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 15:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz