![]() |
Datenbank: Access • Version: 2003 • Zugriff über: über ADO
Suche in einer Access Datenbank mit Delphi
Hallo, ich habe folgendes problem und zwar möchte ich in meiner Delphianwendung eine Access Datenbank durchsuchen. Habe dazu schon folgende Seite gefunden:
![]() leider habe ich es nicht geschafft, dass irgendetwas durchsucht wird auch wenn ich alles so schreibe, wie in diesem beitrag steht. Wenn ich auf den Knopf drücke, passiert einfach GAR NICHTS !! wenn ich ein paar Argumente wie '' oder '%' weglasse kommt ein Fehler der sagt dass die Parameter falsch gesetzt sind.. hoffe jemand kann mir helfen und vielleicht sagen woran es liegt! im Programm wird ADOConnection, ADOQuery, ADODataSet und DBGrid verwendet..alles ist richtig eingestellt und die Datenbank wird auch im DBGrid angezeigt..nur suchen lässt sich eben nicht :( |
Re: Suche in einer Access Datenbank mit Delphi
Ein bisserl Sourcecode wie du das machst und vor allem der SQL wären für eine LÖsungssuche extrem hilfreich!!! :zwinker:
|
Re: Suche in einer Access Datenbank mit Delphi
SourceCode und SQL Text sind die gleichen wie bei dem Link den ich in meinem ersten Post angeheftet habe..ausgenommen den Tabellennamen und die Spaltenbezeichnung ist alles gleich.
|
Re: Suche in einer Access Datenbank mit Delphi
hier der Quelltext des Buttons:
Delphi-Quellcode:
verwendet werden in der VCL Form nur TEdit, TButton, DataSource1, ADOConnection1 und ADODataSet1
procedure TForm1.Button1Click(Sender: TObject);
var Text : String; begin with ADODataSet1 do begin Close; Text := 'SELECT * FROM Datenbank WHERE Bezeichnung = "%' + Edit1.Text + '%" '; Open; end; end; end. so eingegeben tut sich nichts wenn man auf den Knopf klickt nachdem man in das Edit.Text Feld seine Eingabe gemacht hat. Ihr seht es ist somit so simpel, wie es eben nur sein kann und trotzdem geht es nicht. [edit=Sharky]Quote-Tags durch Delphi-Tags ersetzt Mfg, Sharky[/edit] |
Re: Suche in einer Access Datenbank mit Delphi
Tausche das Gleichheitssymbol durch den Operator LIKE, dann sollte es funktionieren.
Also:
Delphi-Quellcode:
Grüße
...
Text := 'SELECT * FROM Datenbank WHERE Bezeichnung LIKE "%' + Edit1.Text + '%" '; ... Mikhal |
Re: Suche in einer Access Datenbank mit Delphi
Zitat:
|
Re: Suche in einer Access Datenbank mit Delphi
Zitat:
|
Re: Suche in einer Access Datenbank mit Delphi
Danke für die Tipps...
leider tut sich auch nichts, wenn ich das Gleichzeichen durch Like ersetze sprich Zitat:
Weiss jemand wieso das immer noch nicht funktionieren mag ?? :( |
Re: Suche in einer Access Datenbank mit Delphi
[quote="Avax2k"]hier der Quelltext des Buttons:
Delphi-Quellcode:
Tausch mal
procedure TForm1.Button1Click(Sender: TObject);
var Text : String; begin with ADODataSet1 do begin Close; Text := 'SELECT * FROM Datenbank WHERE Bezeichnung = "%' + Edit1.Text + '%" '; Open; end; end; end.
Delphi-Quellcode:
gegen
Text := 'SELECT * FROM Datenbank WHERE Bezeichnung = "%' + Edit1.Text + '%" ';
Delphi-Quellcode:
aus
CommandText := 'SELECT * FROM Datenbank WHERE Bezeichnung = "%' + Edit1.Text + '%" ';
|
Re: Suche in einer Access Datenbank mit Delphi
Und mache aus den Quotes jeweils zwei Hochkommata:
Delphi-Quellcode:
Grüße vom marabu
... := 'SELECT * FROM Datenbank WHERE Bezeichnung = ''%' + Edit1.Text + '%'' ';
|
Re: Suche in einer Access Datenbank mit Delphi
Text ist aber wie auch CommandText lediglich eine Stringvariable, die vorher definiert wird.. somit könnte da auch Schrott := 'SELECT.... stehen wenn vorher var Schrott : String; als Variable definiert worden ist. Das mit den Hochkommas probiere ich jetzt mal.
|
Re: Suche in einer Access Datenbank mit Delphi
Zitat:
|
Re: Suche in einer Access Datenbank mit Delphi
Du könntest ein Volltext Filter einbauen.
Die Funktion CompareWildText findest du hier: ![]()
Delphi-Quellcode:
Jetzt musst du den Filter nur noch scharfmachen:
procedure TForm1.DoFilterRecord(DataSet: TDataSet;var Accept: Boolean);
var i : Integer; fields : TFields; begin fields := dataset.Fields; for i := 0 to fields.Count-1 do begin if CompareWildText(DeinSuchTextString, fields[i].Text) then begin Accept := True; Exit; end; end; Accept := False; end;
Delphi-Quellcode:
DeinSuchTextString := '*SEX*';
ADOQuery1.OnFilterRecord := self.DoFilterRecord; ADOQuery1.Filtered := True; |
Re: Suche in einer Access Datenbank mit Delphi
Zitat:
|
Re: Suche in einer Access Datenbank mit Delphi
tatsächlich hat es an dem CommandText Befehl gelegen..hab Text sofort gegen CommandText ausgetauscht und es funktioniert.. allerdings nicht so wie ich es haben wollte..
sprich, wenn ich in der Bezeichnung nach "Eimer" suche und jetzt in der tabelle auch Holzeimer, Metalleimer usw. eben andere Wörter mit Eimer drin sind..geht der Marker nur zu einem dieser Eimer und zeigt die restlichen nicht an...was kann ich dagegen machen ? habe nun einfach das erste ''%' durch ''' ersetzt dann sucht er mit dem Edit1.Text aber zeigt nunmehr die Zusammenhängenden Wörter nicht mehr an in denen Edit1.Text vorkommt ..hmm |
Re: Suche in einer Access Datenbank mit Delphi
Zitat:
Möchte man das Gleiche in SQL erreichen dann würde folgendes herauskommen:
SQL-Code:
Die SQL Anweisung müsste dynamisch zur Laufzeit erzeugt werden.
SELECT * FROM Kundenstamm WHERE (Name1 like :P1) or (Name2 like :P2) or (Name3 like :P3) or (PLZ like :P4) or ....
Ich denke mein Vorschlag hat durchaus seine Anwendungsmöglichkeiten. |
Re: Suche in einer Access Datenbank mit Delphi
Hallo Avax2k,
die Suche arbeitet case sensitive - "Eimer" ist nicht gleich "eimer". Hier noch eine Variante, wie du das SQL Statement auch aufbauen kannst:
Delphi-Quellcode:
Irgendwann wirst du dich dann für die Eigenschaft Parameters von TADODataSet interessieren und dir das entsprechende Kapitel in der Online Hilfe durchlesen.
const
sel = 'SELECT * FROM Datenbank WHERE UPPER(Bezeichnung) LIKE %s'; begin ... CommandText := Format(sel, [QuotedStr('%' + AnsiUppercase(Edit1.Text) + '%')]); ... end; marabu |
Re: Suche in einer Access Datenbank mit Delphi
danke für die zahlreiche Hilfe und die vielen Erläuterungen... sorry, wenn ich mich nicht all zu geschickt anstellen sollte
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:53 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 by Thomas Breitkreuz