Datenbank: Dbase • Zugriff über: SQL
SQL Master/Detailabfrage mit Teilstrings
Hallo,
ich komme in Bezug auf eine Master Detailabfrage nicht weiter. Eine Query2.SQL.Text := 'SELECT * From "IO.DBF" Where "IO.DBF"."NAME" =:"Name"'; Abfrage läuft über 2 Gridfenster in Beziehung sauber, d.h. wenn der Name in Query1 = Query2 ist werden die Daten im 2 Fenster sauber ausgewählt. Nun möchte ich aber, dass nur ein Teil des Namens von Query1 richtig sein muss, damit im Query2 die Daten ausgewählt werden. z.B. Der gewählte Name im Grid1 ist "Müller" nun sollen im Grid 2 alle Namen, z.B. "Müller Gerd", "Müller Gabi" über die SQL-Master/Detailbezehung ausgegeben werden. Hierzu nutze ich Query2.SQL.Text := 'SELECT * From "IO.DBF" as vio Where "IO.DBF"."NAME" LIKE '+s+TRIM(Query1.FieldByName('NAME').AsString)+'%'+ s; wobei hier s := CHR(39) ist um die Apos abzubilden Leider wird nun keine Relation mehr zum Query1 hergestellt, mein Grid 2 bleibt statisch mit dem letzten Wert Würde mich über ´nen Professionellen Tipp freuen. mfg Tom |
Re: SQL Master/Detailabfrage mit Teilstrings
Hallo,
Wie sind deine Tabellen aufgebaut. Wenn ich das richtig sehe, dann hast Du den Name und Vorname in einem Feld zu stehen? Hast Du mal versucht das Trim wegzulassen, da werden doch dann die Leerzeichen weggekürzt oder irre ich da jetzt? Ich würde das jetzt ganz spontan ohne es getestet zu haben so machen.
Code:
Query2.SQL.Text := 'SELECT * From "IO.DBF" Where "IO.DBF"."NAME" LIKE :iName+'%'
ParamCheck:= true; ParamByName('iName').value:= FieldByName('Name').AsString |
Re: SQL Master/Detailabfrage mit Teilstrings
Hallo,
danke für den Tipp, funktioniert etwas besser, aber leider noch nicht so wie ich will. Der Wert wird zwar jetzt sauber in die Variable iName geschrieben, bleibt aber dann konstant. Ich denke, ich muss diesen über ein AfterScroll in query1 immer aktualisieren. Nun flackert zwar der Grid 2 aber ich erhalte das gewünschte Ergebnis. Bin noch ein Delphianfänger, geht bestimmt auch anders, aber aufs Ergebnis kommt´s an. Danke !!! Tom |
Re: SQL Master/Detailabfrage mit Teilstrings
Ich würde mal versuchen, die Tabellen auf deine Bedürfnisse anzupassen, sodass die Master-Detail Beziehung nicht über ein 'LIKE' führt, sondern über eine echte 1:n-Beziehung (also über '='). Mittlerweile biege ich mir meine DBs so um, das die Funktionalität der GUI optimal umgesetzt wird.
|
Re: SQL Master/Detailabfrage mit Teilstrings
Zitat:
Delphi-Quellcode:
Grüße vom marabu
procedure TMainForm.dsMasterDataChange(Sender: TObject; Field: TField);
var Nachname: string; begin with qDetail do begin DisableControls; SQL.Text := 'select * from io where name like :filt'; Nachname := qMaster.FieldByName('Name').AsString; SetLength(Nachname, Pos(' ', Nachname)); ParamByName('filt').Value := Nachname + '%'; Open; EnableControls; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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