![]() |
TSQLQuery mit verschiedenen Tabellen benutzen
Ich hab eine TSQLQuery mit der ich zuerst eine SELECT Abfrage an eine Tabelle table1 und lese ein paar Werte per FieldValue aus.
Dann mach ich eine SELECT Abfrage an eine andere Tabelle table2 und immer wenn ich FieldValue ausführe kommt die Fehlermeldung: Feld nicht gefunden. Wenn ich aber eine 2. TSQLQuery nehme funktioniert es einwandfrei. Gibt es eine Möglichkeit mit einer TSQLQeury auszukommen?? |
Hallo MadMason,
hast du die Felder der ersten SQL Query über den Feldeditor als persistente Felder der Anwendung hinzugefügt? Dann gibt es nämlich Probleme. Ansonsten versuch doch einmal FieldByName, das funktioniert bei mir imer recht gut. |
Nein hab ich nicht
|
TSQLQuery
Sei versichert, dass das funktioniert, wenn Du keine persistenten Felder erzeugst. Vielleicht kennt die Tabelle das Feld nicht, oder Du überschreibst an irgendeiner Stelle das SQL.
|
Hallo MadMason! 8)
Die Ursache für Dein Fehle kann verschieden Grunde haben... aber... falls Du vielleicht gar keine Komponente TQuery auf Dein Formular „ziehen“ möchtest kannst Du dein Query dynamisch erzeugen...so...das habe ich auf die „Schnelle“ für Dich gebastelt: Gruß Paul Jr.
Code:
// Erzeugt dynamisch eine Query-Componente
FUNCTION CreateQuery(VAR Query: TQuery; Frm: TForm; sDatabaseName : STRING): Boolean; BEGIN Result := True; TRY Query := NIL; Query := TQuery.Create(Frm); Query.DatabaseName := sDatabaseName; Query.SQL.Clear; // muß nicht sein... EXCEPT ON E:Exception DO BEGIN Result := FALSE; IF Query <> NIL THEN BEGIN Query.Free; Query := NIL; END; ShowMessage( E.Message + #10 + 'Dynamisches Query konnte nicht erzeugt werden!'); Sysutils.Abort; END; END; END; PROCEDURE TfrmMain.Button1Click(Sender: TObject); VAR Query : TQuery; BEGIN IF CreateQuery(Query, Self, 'MeinDataBase') THEN BEGIN // hier bestücke die SQL-Anweisung usw... mach was Du willst :-) // also z.B.: Query.SQL.Add('SELECT * FROM KUNDE'); TRY Query.Open; (... weitere Anweisungen...) EXCEPT (* dummy *) END; Query.Close; END; // Und nicht vergessen: IF Query <> NIL THEN Query.Free; END; |
TSQLQuery
Ist das Problem vielleicht, dass Du SQL.Clear vergessen hast.
Dann srteht nämlich das alte Select-Statement noch in der Query und Du erlebst Böses, wenn Du einfach mit SQL.ADD(MySelectString) Deine neue Abfrage hinzufügst. Ich schreibe gerne SQL.Text := MySelectString In Delphi 7 gibt es ein TSimpleDataSet mit CommandText vom Typ String statt SQL. Der Vorschlag von MadMason ist natürlich auch nicht zu verachten, nur ist die Nachprogrammierung der visuellen Komponenten nicht so ganz einfach, insbesondere bei persistenten Feldern. Meine Erfahrung eines Wochenendes vor meinem Notebook stelle ich aber gerne zur Verfügung. |
Hallo DKamps, 8)
... nun sollte er SQL.Clear vergessen haben...und eine neue SQL-Anweisung dazu addieren dann, wie ich meine, würde sich schon ganz stark die Datenbank selbst mit einem SQL-Fehler melden...oder...?... aber alles ist Möglich... :lol: ... vielleicht fügt er gar keine neue SQL-Anweisung hinzu... nun dann wäre deine Vermutung richtig... Gruß Paul Jr. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:48 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