AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADODataSet Suche

Ein Thema von hirnstroem · begonnen am 7. Sep 2006 · letzter Beitrag vom 7. Sep 2006
Antwort Antwort
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#1

ADODataSet Suche

  Alt 7. Sep 2006, 13:39
Datenbank: Microsoft Access • Version: kA • Zugriff über: ADO
'loha Folks,

über ein ADODataset setze ich folgenden Query ab, dessen Ergebnis über eine DataSource in einem DBGrid angezeigt wird:

SQL-Code:
SELECT * FROM LoginUser, LoginRight, LoginUser_Right
WHERE Username = :Username
OR Forename = :Forename
OR Surname = :Surname;
Die Prozedur, welche den Query im Programm aufruft ist diese hier:

Delphi-Quellcode:
procedure Tfrm_Main.btnOkClick(Sender: TObject);
begin
  with ADODataSet_LoginUser do
  begin
    Close;
    Active := False;
    Parameters.ParamByName('Username').Value :=
      edtUsername.Caption;
    Parameters.ParamByName('Forename').Value :=
      edtForename.Caption;
    Parameters.ParamByName('Surname').Value :=
      edtSurname.Caption;
    Active := True;
    Open;
  end;
end;
Ich suche also nach den in den Edit angegebenen Zeichen in der Datenbank. Dies funktioniert soweit auch ganz gut. Nun möchte ich aber beim Suchen nicht immer den exakten Begriff eingeben. Die Suche soll also zumindest so intelligent sein, dass in der Datenbank nach Einträgen gesucht wird, welche mit den selben Buchstaben beginnen.

Bsp.

Ich suche nach dem Buchstaben "a".

In der Datenbank gibt es 100 Einträge, welche mit a beginnen. Genau diese möchte ich jetzt alle sehen.

Prinzipiell wird dies ja mit

WHERE Username = 'a%' gemacht. Da ich aber den Tokken drin habe, weiss ich nicht wie das nun geschrieben wird :-/

Bin für Input sehr empfänglich -.-

Mit WebObjects habe ich die Strings immer mit zwei senkrechten Strichen zusamensetzen können (||), in Delphi scheint dies nicht zu funktionieren.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ADODataSet Suche

  Alt 7. Sep 2006, 13:51
Moin Hirnstroem,

also ich würde es so machen:

Parameters.ParamByName('Username').Value := edtUsername.Caption + '%'; BTW:
Für mich sieht der Prefix edt so aus, als wäre es ein Editfeld.
Das hat allerdings keine Caption
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#3

Re: ADODataSet Suche

  Alt 7. Sep 2006, 14:01
Hallo Christian,

vielen Dank, jetzt bekomme ich zwar keine Ergebnisse mehr zurück, aber die Vorgehensweise klingt logisch. edt ist i.d.T ein Editfeld. Leider kann ich zwischen edt und dem Rest kein Underline (_) setzen, IntraWeb will dies nicht zulassen. Das mit der Caption hingegen funktioniert einwandfrei, aber wenn du das so sagst...nehmen wir halt Text.

thx und Grüsse
hirnstroem
  Mit Zitat antworten Zitat
Benutzerbild von KalZakath
KalZakath

Registriert seit: 22. Feb 2006
Ort: Nordhorn
3 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: ADODataSet Suche

  Alt 7. Sep 2006, 14:06
Hi Hirnstroem,

versuchs doch mal so...

SQL-Code:
SELECT * FROM LoginUser, LoginRight, LoginUser_Right
WHERE Username LIKE :Username
OR Forename = :Forename
OR Surname = :Surname;
und...

Delphi-Quellcode:
...
Parameters.ParamByName('Username').Value := QuotedStr(edtUsername.Caption + '%');
...
Wenn es sich bei edtUsername um ein TEdit Feld handelt, sollte es eigentlich so aussehen:

Delphi-Quellcode:
...
Parameters.ParamByName('Username').Value := QuotedStr(edtUsername.Text + '%');
...
  Mit Zitat antworten Zitat
hirnstroem

Registriert seit: 21. Sep 2005
297 Beiträge
 
Delphi 2006 Professional
 
#5

Re: ADODataSet Suche

  Alt 7. Sep 2006, 14:43
Hmm, komisch.

Wenn ich nach exakt übereinstimmenden Ausdrücken suche, wird anstandslos das gewünschte Ergebnis zurückgegeben. Alles andere hingegen will nicht wirklich funktionieren, sprich, nur leere Ergebnisse werden zurückgeliefert. Verzichte ich allerdings auf die Attribute Forename und Surname, funktioniert die Sache wieder.

Ich habe gehofft, diese Suche liesse sich mit einem Query realisieren, stattdessen werde ich jetzt wohl einfach drei verwenden.

Vielen Dank für die Hilfe.

Grüsse
hirnstroem
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: ADODataSet Suche

  Alt 7. Sep 2006, 15:05
Moin Hirnstroem,

Du solltest bei Forename und Surname mal das = durch ein LIKE ersetzen, sonst funktioniert die Verwendung des % nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 10:26 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