Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi In der Tabelle suchen (https://www.delphipraxis.net/160219-der-tabelle-suchen.html)

Kleine 3. Mai 2011 10:53

Datenbank: Advantage Data Architect • Version: 8.1 • Zugriff über: AdsConnection

In der Tabelle suchen
 
Also wenn man ein Suchbegriff in das vorgesehen Editfeld schreibt und auf suchen klickt, soll er die datenbank danach absuchen und mit nur die datensätze anzeigen, auf die es zutrifft.
und wenn man das editfeld leer lässt und auf suchen klickt, soll er alle wieder anzeigen.

leider weiß ich überhaupt nicht wie ich das realisieren soll.
Kann jemand mir vielleicht ein kleinen tipp geben, welche befehle ich mir anschauen sollte oder so?

Lg Kleine :)

DeddyH 3. Mai 2011 11:02

AW: In der Tabelle suchen
 
Schau einmal hier.

Kleine 3. Mai 2011 11:03

AW: In der Tabelle suchen
 
danke das schau ich mir erstmal an :)

p80286 3. Mai 2011 11:07

AW: In der Tabelle suchen
 
Eine Alternative wäre eine Query?

Gruß
K-H

DeddyH 3. Mai 2011 11:12

AW: In der Tabelle suchen
 
Würde ich eigentlich auch bevorzugen, aber wie ich anhand der bisherigen Fragen den Wissensstand beurteile ist das noch etwas hoch gegriffen.

rainerg 3. Mai 2011 11:18

AW: In der Tabelle suchen
 
Bei SyBase gibt es ein PDF für Delphi:
http://www.sybase.de/files/White_Pap...-080409-WP.pdf

nuclearping 3. Mai 2011 12:09

AW: In der Tabelle suchen
 
AdsQuery mit AdsConnection verbinden und öffnen. Danach kannst du zB mit AdsQuery.SQL.Add('SELECT * FROM <Tabelle> WHERE <FeldX> LIKE '#39'%' + EditSuchFeld.Text + '%'#39) die Tabelle durchsuchen. Wenn das Edit leer ist, lässt du einfach die "... WHERE ..."-Klausel weg.

Alternativ solltest du aber parametrisierte Query-Parameter nutzen, ist sicherer und effizienter.

Kleine 3. Mai 2011 12:38

AW: In der Tabelle suchen
 
uh danke, ich werds versuchen :)

p80286 3. Mai 2011 15:12

AW: In der Tabelle suchen
 
Ich würde erst den Edit.Text prüfen
Delphi-Quellcode:
if length(trim(edit.Text))>0 then
und dann
Code:
Select * from Tabelle where Wert=:Editwert
für ein nicht leeres Editfeld
oder
Code:
Select * from Tabelle
für ein leeres Editfeld nutzen.

Gruß
K-H

Kleine 3. Mai 2011 16:03

AW: In der Tabelle suchen
 
Beim suchen vergeleich ich jetzt bestimmte spalten mitdem editfeld und lass den datensatz dann in einem memo ausgeben :)

nur hab ich jetzt ein weiteres problem..
wenn ich ein datensatz im grid auswähle,soll er mir die zusätzlichen kontaktdaten wie telefon usw in einer list box ausgeben.

Vorher war das grid auch eine list box und da sah der quelltext so aus
Delphi-Quellcode:
procedure TFormMain.AdresseListBoxClick(Sender: TObject);
var
  Adresse : tAdresse ;
begin
  Adresse := tAdresse( AdresseListBox.Items.Objects[ Adresselistbox.ItemIndex ] ) ;
  RefreshKontaktListe( adresse ) ;
end;
jetzt wollte ich das umändern und hab bisjetzt das
Delphi-Quellcode:
procedure TFormMain.GridAdressenCellClick(Column: TColumn);
var
   lAdresse : tAdresse;
   i : Integer;
begin

  for I := 0 to GridAdressen.SelectedRows.Count - 1 do
    begin
      lAdresse := tAdresse (GridAdressen.DataSource.DataSet[GridAdressen.SelectedRows[i]]);

      RefreshKontaktListe( lAdresse ) ;
    end;

end;
Nur leider hab ich überhaupt keine ahnung, wie er die kontaktdaten speziell zu dem ausgewählten datensatz ausgeben soll :?

Deep-Sea 3. Mai 2011 16:07

AW: In der Tabelle suchen
 
Dafür ist wohl das Event AfterScroll der Table/Query besser geeignet. Und darin dann z.B. mit
Delphi-Quellcode:
MeineTable.FieldByName('xyz')...
weiterarbeiten :wink:

Kleine 3. Mai 2011 16:13

AW: In der Tabelle suchen
 
hast du vielleicht ein beispiel quelltext?

Kleine 4. Mai 2011 08:38

AW: In der Tabelle suchen
 
damit komme ich nun nicht wirklich weiter :|

als ich noch die listbox hatte so der code so aus
Delphi-Quellcode:
procedure TFormMain.AdresseListBoxClick(Sender: TObject);
var
  Adresse : tAdresse ;
begin
  Adresse := tAdresse( AdresseListBox.Items.Objects[ Adresselistbox.ItemIndex ] ) ;
  RefreshKontaktListe( adresse ) ;
//   FormAdresse.Adresse := Adresse ;
end;
theoretisch müsste nur die zeile
Adresse := tAdresse( AdresseListBox.Items.Objects[ Adresselistbox.ItemIndex ] ) ;

geändert werden.
Nur weiß ich nicht genau wie

Deep-Sea 4. Mai 2011 09:02

AW: In der Tabelle suchen
 
Sry, ich weiß nun mal nicht wie deine Software aufgebaut ist.
Aber rein aus der Beschreibung "Beim wählen eines Datensatzes sollen gewisse Felder in einer ListBox angezeigt werden" würde ich es als Beispiel so machen:
Delphi-Quellcode:
procedure TForm1.Table1AfterScroll(DataSet: TDataSet);
begin
  ListBox1.Items.BeginUpdate;
  try
    ListBox1.Items.Clear;
    ListBox1.Items.Add('Telefon: ' + Table1.FieldByName('Telefon').AsString);
    ListBox1.Items.Add('E-Mail: ' + Table1.FieldByName('EMail').AsString);
  finally
    ListBox1.Items.EndUpdate;
  end;
end;
(Falls die Einträge in der ListBox aber wirklich so - mit Name-Werte-Paaren - sein sollten, wäre eine ListView imho praktischer. Naja, anderes Thema.)

DeddyH 4. Mai 2011 09:13

AW: In der Tabelle suchen
 
Vor allem musst Du Dich von Deinen Adressklassen gedanklich verabschieden (es sei denn, Du willst gleich eine Art OPF schreiben, aber das ist schon hohe Kunst).

[edit] BTW: Crossposts sollten verlinkt werden, sonst macht man sich auf Dauer keine Freunde. [/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:40 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-2025 by Thomas Breitkreuz