AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Abfrage per Eingabe

Ein Thema von abi · begonnen am 17. Jun 2004 · letzter Beitrag vom 18. Jun 2004
Antwort Antwort
Seite 2 von 4     12 34   
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#11

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 15:25
Scheint, dass LIKE hier nicht unterstützt wird, dann nimm mal 'Geber_Bezeichnung = ''' +Edit1.Text+ '*''';
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#12

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 15:33
Jetzt bekomme ich zwar keine Fehler meldung, aber es passiert nicht.

Ich muss doch bestimmt meine Tabelle neu aufbauen lassen.

Ich glaub ich steh im Wald.
abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Albi

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

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 15:48
Hast Du die Dataset mit der entsprechenden DB verbunden? Und sie auch geöffnet, dann must Du auch noch die entsprechende Datasource mit der Dataset verbinden, wenn ich mich nicht irre, und das Grid oder was auch immer du zum anzeigen verwendest.

Das mit gleich dem schauen ob der Name schon da ist oder nicht, ist genau das was wir meinten. Wenn du ein Wort mit 10 Buchstaben hast, wird deine Abfrage an die DB genau 10 mal gestellt spricht für jeden Buchstaben den du eingibst. Und das % am Ende ist nicht weiter als ein Joker den du einsetzt. Das heißt wenn du z.B. Mü eingibst wird alles in deiner DB herausgesucht was mit Mü beginnt, also Müller, Mütter usw.. Du hast somit eine sehr ungenaue Suche und beansprucht die DB unnötigt.

Wenn ich soetwas verwende, dann suche ich erst, wenn ich das Feld verlasse, somit wird die Abfrage nur einmal an die DB gestellt.
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#14

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 15:58
Hallo Albi
das mit dem 10 mal abfragen hab ich schon verstanden, vielleicht mach ich auch die Abfrage nach jedem 3 Buchstabe. Aber des sehe ich ja dann, wies läuft.

In Meine TQuery, heisst qrSuchen, steht folgendes drin
SQL
Code:
 
  SELECT
 G.Nummer,
 G.Geber_Bezeichnung,
 G.Device_Name,
 G.Knotennummer,
 G.BaudrateID,
 B.Baudrate,
 H.Hw_Version As Hardware_Version,
 S.Sw_Version As Software_Version,
 G.Auflösung,
 G.Preset_Wert,
 G.Min_Toleranz,
 G.Max_Toleranz,
 G.Nocken_Position_1,
 G.Nocken_Position_2,
 G.Hysterese_1_Nocken,
 G.Hysterese_2_Nocken,
 G.Cyclic_Zeit,
 G.Seriennummer,
 G.Producer_Heart_Time,
 G.Consumer_Heart_Time,
 G.Datum_Uhrzeit,
 A.Nachname || ' ' || A.Vorname As Arbeiter,
 A.Abteilung,
 G.Bemerkung

 
 
FROM "Geber Datenbank.db" G
LEFT OUTER JOIN Baudrate B
 ON (G.BaudrateID = B.Nummer)
LEFT OUTER JOIN "Hw Version.db" H
 ON ((G.HwVersionID) = H.Nummer)
LEFT OUTER JOIN "Sw Version.db" S
  ON (G.SwVersionID = S.Nummer)
LEFT OUTER JOIN Arbeiter A
 ON (G.ArbeiterID = A.Nummer)
DataSource ist leer, muss da auch noch was rein.

und in meiner DataSource, heisst dsSuchen, steht
für DataSet qrSuchen

Hab des bis jetzt so gemacht.
Diese Query soll nur fürs Suchen sein.

Ich benute auch TGrid um meine Werte anzuzeigen.

abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 16:06
Hi Abi,

um dein problem mit der suche pro buchstabe zu lösen nimm die on key press funktion von deinem edit feld

Delphi-Quellcode:
procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then // key 13 entertaste
  begin // nachfolgend dein suchcode bei mir der anmeldevorgang
        try
                with Datamodule2.ibdatabase1 do
                begin
                Connected := false;
                Params.Add('user_name='+Edit1.Text+'');
                Params.Add('password='+Edit2.Text+'');
                Params.Add('lc_ctype=WIN1252');
                SQLDialect := 3;
                Connected := true;
                end
                except
                on EIBInterBaseError do
                begin
                MessageDlg('Benutzer oder Passwort falsch'#13'bitte neu eingeben oder abbrechen',
                        mtConfirmation,
                        [mbOK],0);
                        exit;
                end;
        end;
        Form1.StatusBar1.Panels[1].Text := Edit1.Text;
        Form4.StatusBar1.Panels[1].Text := Edit1.Text;
        close;
        key := #0; // key #0 am schluss, damit das dumme pling nicht kommt beim tastendruck
        end
        else;

end;
das is der code von meinem login fenster für meine datenbank sobald ich enter key #13 drücke führt er den anmeldevorgang aus

ich hab auch nen suchvorgang mal geschrieben, ich such mir das projekt raus und melde mich wieder!

Gruß

michael
  Mit Zitat antworten Zitat
Albi

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

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 16:07
Was verwendest Du nun Query oder Dataset? Also eigentlich sollte es reichen, wenn du einfach diese Abfrage um den Punkt erweiterst den ich oben schon mal gepostet habe.

[sql]Select ... from DB ..deine Joins Where Bezeichnung Like '''+Edit1.Text+'%'''[code]

Wenn Du ein Dataset verwendest, dann mußt du glaub ich das % durch ein * ersetzen. Bin mir da aber nicht ganz sicher.
  Mit Zitat antworten Zitat
Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 16:20
Delphi-Quellcode:
begin
        DataModule2.IBQuery1.Filtered := false;
        DataModule2.IBQuery1.Close;
        DataModule2.IBQuery1.SQL.Clear;
        DataModule2.IBQuery1.SQL.Add('SELECT * FROM DEINETABELLE WHERE DEINSUCHFELD like ''%'+Edit1.Text+'%'' ');
        DataModule2.IBQuery1.Open;
        DataModule2.IBQuery1.Active := true;
end;
diese suche arbeitet mit wildcards,

also wenn du Mü eingibst zeigt er dir alles wo irgendwo mü vorkommt.

wenn du es anders willst musst du mit dem ''%' experementieren. das % ist das wildcard,
der rest wird für den sql string benötigt.


ein normaler aufbau sollte sein

DB ---- QUERY --- im query muss unter database die DB stehen

um die daten noch anzuzeigen brauchst noch eine datasource. in dieser muss unter dataset das query stehen. im db grid dann unter datasource die entsprechende datasource.

erzähl uns mal genau was für ne datenbank und was du noch alles in deinem projekt hast!


gruß

michael
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.007 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#18

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 16:20
Der Ansatz ist schon richtig, aber (mein Fehler ):
- deine Datenbank (welche verwendest du?) versteht kein LIKE
- der Trick mit dem * funktioniert scheinbar nur mit ClientDataSets!?

Deshalb mein Vorschlag:
- ClientDataSet benutzen und in diesem die Suche implementieren.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  DataSetProvider1.DataSet := ZQuery1;
  ClientDataSet1.ProviderName := DataSetProvider1.Name;
  ZQuery1.Open;
  ClientDataSet1.Open;
  ClientDataSet1.Data := DataSetProvider1.Data;
  DataSource1.DataSet := ClientDataSet1;
  DBGrid1.DataSource := DataSource1;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  DBGrid1.DataSource.DataSet.Filtered := CheckBox1.Checked;
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  DBGrid1.DataSource.DataSet.Filter := 'Bezeichnung = ''' + Edit1.Text + '*''';
end;
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Albi

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

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 16:23
Macht es ihm nicht so schwer. Er arbeitet sich gerade in das Thema ein, wenn es so weiter geht versteht er nur noch Bahnhof. Und weiß gar nicht mehr was er machen soll.
  Mit Zitat antworten Zitat
abi

Registriert seit: 20. Apr 2004
Ort: Köln
143 Beiträge
 
#20

Re: Abfrage per Eingabe

  Alt 17. Jun 2004, 16:25
Mercy für die Hilfe
ich hoffe ihr seit mir nicht böse.

Aber irgendwie komme ich mir vor als währe ich irgendwo dagegen gelaufen.

Werde des morgen auf jedenfall mal testen, aber auf den erste Blick sicht gut aus.

Genau des was ich habe wollte.

Wünsch euch noch was.
mfg
abi
Wer nicht fragt, bleibt dumm.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:59 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