![]() |
Feldexistenz überprüfen
Hallo,
wie kann ich prüfen ob in einer Datenbanktabelle ein bestimmtes Feld bereits existiert ? Danke für jede Hilfe. :?: |
Re: Feldexistenz überprüfen
Ist nicht die eleganteste Lösung, benötigt aber weder TTable, TDataSet - nur eine einfache Query.
Delphi-Quellcode:
Wenn du Oracle benutzt kannst du auch diese Lösung benutzten (ADO Query):
Var
i : Integer; Begin With Query Do Begin SQL.Text := Format( 'SELECT t.*' + #10 + 'FROM %s t' + #10 + 'WHERE RowNum <= 1' , [Edit1.Text]); Execute; ListBox1.Clear; For i := 0 To pred(FieldCount) Do ListBox1.Items.Add(Fieldname(i)); End; End;
Delphi-Quellcode:
With Query Do
Begin SQL.Text := 'SELECT t.Column_Name' + #10 + 'FROM All_Tab_Columns t' + #10 + 'WHERE t.Owner = :i_Owner And' + #10 + ' t.Table_Name = :i_Table'; Prepared := True; Parameters.ParamByName('i_Owner').Value := 'SCOTT'; Parameters.ParamByName('i_Table').Value := 'EMP'; Execute; ListBox1.Clear; While Not Eof Do Begin ListBox1.Items.Add(adoquery1.FieldValues[0]); End; End; |
Re: Feldexistenz überprüfen
Ich benutze eine Paradox-Tabelle.
Hab das 1. Beispiel versucht, komm aber nicht so ganz dahinter. Möchte einfach nur z. B. prüfen ob das Feld 'Proforma' in der Tabelle x schon vorhanden ist. Beim 1. Listin ist Fieldname kein def. Bezeichner. Bitte nochmals um Hilfe, Danke. |
Re: Feldexistenz überprüfen
Sorry, waren Eigenschaften einer TOracleQuery.
Das hier müsste mit der BDE-Query funktionieren. p.s.: Die ListBox war nur zur Demo... Edit1 enthält den Tabellenname, Edit2 das zu suchende Feld.
Delphi-Quellcode:
Var
i : Integer; Begin With Query Do Begin SQL.Text := Format( 'SELECT t.*' + #10 + 'FROM %s t' + #10 + 'WHERE RowNum <= 1' , [Edit1.Text]); Open; For i := 0 To pred(FieldCount) Do If uppercase(Fields[i].FieldName) = uppercase(Edit2.Text) then Begin ShowMessage('"' + Edit2.Text + '" gefunden...' ); Break; End; End; End; |
Re: Feldexistenz überprüfen
Ok Danke,
kannst Du mir bitte noch sagen, wo und wie ich meine Tabellennamen einsetze? Also meine Tabelle heißt 'Bieter.db' und das Feld nach dem ich suche heisst 'Proforma'. Tut mir leid, stell mich heute blöd an. |
Re: Feldexistenz überprüfen
Zitat:
Hier kommt dann dein Code rein, der mit dem gefundenen Feld irgendwas machen soll:
Delphi-Quellcode:
...
If uppercase(Fields[i].FieldName) = uppercase(Edit2.Text) then Begin // Hier... ShowMessage('"' + Edit2.Text + '" gefunden...' ); Break; End; ... |
Re: Feldexistenz überprüfen
Vielen Dank, werd ich jetzt gleich mal ausprobieren.
|
Re: Feldexistenz überprüfen
Bie mir kommt dann noch die Fehlermeldung :
Ungültiger Feldname 'Rownum' |
Re: Feldexistenz überprüfen
Dann gibt es diese Pseudospalte wohl nur in Oracle. :gruebel:
Sie sollte verhindern, dass mehr als ein Eintrag geholt wird. Dann musst du es wohl so machen:
Delphi-Quellcode:
...
'SELECT t.*' + #10 + 'FROM %s t' ... :oops: Sorry, dass ich dir lauter fehlerhafte Vorschläge gemacht habe. Ich arbeite nur mit Oracle, und ein paar Dinge sind halt immer DB-spezifisch... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 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-2025 by Thomas Breitkreuz