AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL Master/Detailabfrage mit Teilstrings
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Master/Detailabfrage mit Teilstrings

Ein Thema von waldforest · begonnen am 3. Jun 2005 · letzter Beitrag vom 5. Jun 2005
Antwort Antwort
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

SQL Master/Detailabfrage mit Teilstrings

  Alt 3. Jun 2005, 23:23
Datenbank: Dbase • Zugriff über: SQL
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
  Mit Zitat antworten Zitat
Albi

Registriert seit: 4. Mai 2003
Ort: Berlin
458 Beiträge
 
Delphi 7 Professional
 
#2

Re: SQL Master/Detailabfrage mit Teilstrings

  Alt 4. Jun 2005, 07:36
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
Gruß

Albi
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: SQL Master/Detailabfrage mit Teilstrings

  Alt 4. Jun 2005, 11:23
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
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: SQL Master/Detailabfrage mit Teilstrings

  Alt 4. Jun 2005, 22:31
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: SQL Master/Detailabfrage mit Teilstrings

  Alt 5. Jun 2005, 08:37
Zitat von waldforest:
Nun flackert zwar der Grid 2 aber ich erhalte das gewünschte Ergebnis.
Das kann man auch noch ändern:

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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