Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Suchergebnis aus DB ausgeben - Datensatz wählen - Wie? (https://www.delphipraxis.net/35989-suchergebnis-aus-db-ausgeben-datensatz-waehlen-wie.html)

stoermi 14. Dez 2004 14:23


Suchergebnis aus DB ausgeben - Datensatz wählen - Wie?
 
Hallo zusammen!

Ich suche ein Beispiel (Code-Schnipsel, Tuturial), wie man folgendes realisieren könnte:

Ich möchte über ein Edit etwas einlesen. Damit soll in der Tabelle gesucht werden und alle passenden Datensetze in ein Grid ausgegeben werden.
Dann soll man eine Zeile markieren können.
Klickt man dann auf einen Button, soll der entsprechende Datensatz übernommen werden.

Das dürfte doch eigentlich möglich sein.
Leider bekomme ich es nicht hin...

Habt ihr vielleicht einen Vorschlag bzw. einen Hinweis auf eine gute Quelle...?

Schuster 14. Dez 2004 14:46

Re: Suchergebnis aus DB ausgeben - Datensatz wählen - Wie?
 
zuerst mal zur suche:

ins keypress ereigniss eines Edit Feldes:

Delphi-Quellcode:
procedure TForm1.Edt_FamNameKeyPress(Sender: TObject; var Key: Char);
var temp : string;
var pruefEingabe: integer;
begin
    pruefEingabe:=ord(key);
    if pruefEingabe=13 then  //Enter-Taste gedrückt??

    begin
      with query do
        begin
          sql.clear;
          sql.add('Select * from Table where Feld= ' + quotesdstr(edit_Feld.text + '%'));
          open;
        end;
     end;
end;
Das Query muß mit dem DBGrid als Datasource verbunden sein.

Zitat:

Dann soll man eine Zeile markieren können.
Eigenschaften des DBGrid:
Options --> dgrowselect = true !!!
Zitat:

Klickt man dann auf einen Button, soll der entsprechende Datensatz übernommen werden.
Die Daten bekommst du per:

Delphi-Quellcode:
EditFeld2.text:= Query.FieldByName ('Feld').asString;

stoermi 14. Dez 2004 15:17

Re: Suchergebnis aus DB ausgeben - Datensatz wählen - Wie?
 
Danke für deine Schnelle Antwort!

Doch da hab ich noch Probleme:

Du sagts, dass das DBGrid mit dem Query verbunden werden muss.
Das geht doch aber gar nicht direkt. DataSoure verlangt doch ein TDataSource!

So hab ich noch ein TDatasource eingefügt. Und dort als DataSet den Query eingefügt.
Doch jetzt ist mein Problem: Query verlangt einen DataBaseNamen. Was muss darein?

Ich verwende keinen Alias, sondern nur Tabellen mit relativen Pfad...

Schuster 14. Dez 2004 15:46

Re: Suchergebnis aus DB ausgeben - Datensatz wählen - Wie?
 
Datasource gehört natürlich in DBGrid eingefügt und nicht ein Query hast recht :-D

Welche DB verwendest den :?:
Wie verbindest du dich zur DB :?:

Ich hab bis dato nur ein bischen mit MySql und Firebird gespielt.

Hier mal ein Beispiel für eine Verbindung zu MySql mit den Zeos-Komponenten:


Delphi-Quellcode:
with ZConnection1 do
  begin
          HostName:='90.0.0.5';
          User:='root'
          Protocol:='mysql-4.1';
          Port:=3306;
          Database:='nachrichten';
          Password:= edt_Passwort.text;
          Connected:=true;
  end;
Zitat:

Doch jetzt ist mein Problem: Query verlangt einen DataBaseNamen. Was muss darein?
Der Name der Datenbank die du angelegt hast.

stoermi 14. Dez 2004 16:02

Re: Suchergebnis aus DB ausgeben - Datensatz wählen - Wie?
 
Zitat:

Zitat von Schuster
Datasource gehört natürlich in DBGrid eingefügt und nicht ein Query hast recht :-D
Welche DB verwendest den :?:
Wie verbindest du dich zur DB :?:

Mittlerweile habe ich das Problem gelöst. Man gibt bei Query gar keinen DataBaseName an.
In der SQL-Anfage gibt man dann einfach den relativen Pfad zur Tabelle an.

Ich verwende eine Delphi-Datenbank Paradox 7 für mein Projekt.

Was jedoch aus deinem Beispiel nicht klappt, ist in dem SQL-Text folgendes:
SQL-Code:
('Select * from Table where Feld= ' + quotesdstr(edit_Feld.text [b]+ '%'[/b]))
Lasse ich dies weg, funktioniert die Abfrage. Jedoch muss ich dann ja immer den kompletten Suchbegriff eingeben. Das % steht ja bei SQL für fehlende Zeichen...

Müsste man nicht eigentlich dann schreiben: ...WHERE Feld LIKE 'string%'
Jedoch funktioniert das bei mir auch nicht.

Kenne das auch nur von MySQL. Kann natürlich sein, dass dieser Paradox-Interpreter das noch nicht kennt. Aber wie lösst man dann so eine ungenaue Suche?

stoermi 14. Dez 2004 16:38

Re: Suchergebnis aus DB ausgeben - Datensatz wählen - Wie?
 
Die Lösung:

Delphi-Quellcode:
procedure btnSuchenClick(Sender: TObject);
var s: String;
begin
  with KundenQuery do
  begin
    active := false;
    sql.clear;
    s := edSuche.Text + '%';
    sql.add('SELECT Name, Vorname, PLZ, Ort, Strasse, Hausnummer as HNr FROM daten\kunden.db WHERE LOWER(Name) LIKE :suche');
    ParamCheck := true;
    ParamByName ('suche').AsString := LowerCase(s);
    active := true;
    open;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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