Autor Beitrag
dragi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88



BeitragVerfasst: Do 17.07.03 08:41 
Hallo,

Ich bin totaler Newbie in Delphi und Access. Ich habe eine kleine Adressdatenbank die aus einer Access Tabelle(Name, Vorname, Strasse,etc.)besteht und ein Formular das jeweils ein DBEdit für dies Felder hat. Ich Navigiere durch die Tabelle mit dem DBNavigator. Das war ja alles ziemlich einfach doch möchte ich nun eine Suche integrieren. Dazu habe ich ein normales Edit Feld und einen Button. Dieser führt bei Button.click folgendes aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOQuery1.SQL.Add('Select * From Tabelle1 WHERE Name = "%'+edit1.text+'%"');
end;


Wie kann ich das aber nun in meien Edit Feldern anzeigen lassen, also woher weiss DBNavigator das er da hinspringen soll?

Gibt dieses ADOQuery1.SQL.Add irgendetwa zurück? Also das ich sowas wie
ausblenden Delphi-Quelltext
1:
2:
3:
4:
if
ADOQuery1.SQL.ADD = true 
then
...


machen kann?

Vielen Dank

dragi
ShadowThief
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Do 17.07.03 16:00 
hi,

ähm, als erstes wüde ich
ausblenden Quelltext
1:
like '%irgendwas%'					

schreiben, zumindest isses auf einer DB2 so.

das ADOQuery.SQL.ADD reicht nicht. ich würde
es so machen:

ausblenden Quelltext
1:
ADOQuery.SQL.Text := 'dein SQL';					


dann brauchst du noch ein

ausblenden Quelltext
1:
ADOQuery.Open					


und irgendwann wieder ein

ausblenden Quelltext
1:
ADOQuery.Close					


shadow.
Neuromancer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 42

WinNT 4.0 SP6a, WIN 2k Prof SP3, Win XP Prof SP1
D5 Ent, D6 Ent
BeitragVerfasst: Do 17.07.03 17:09 
Hallo,

für die Anzeige zu den Ergebnissen deiner Suche empfehle ich dir ein TDBGrid. Dadurch hast du den Vorteil gegenüber den TDBEdit-Komponenten, dass du gleich mehrere Datensätze auf einmal anzeigen lassen kannst und bei Bedarf einen vom User gewünschten Datensatz in deine Edit-Felder laden kannst. Ein Edit-Feld kann ja immer nur ein Feld eines Datensatzes anzeigen lassen. Wenn in deiner Suche jetzt mehrere Ergebnisse vorliegen, dann kann das Edit-Feld immer nur das Feld des ersten Satzes zurückliefern, das über die Query ermittelt wurde.

Um die Suche ausführen zu lassen, musst du die Query aufmachen (entweder mit .Open oder mit .Active := True)

Wenn du mit ADO arbeitest, dann empfehle ich dir die "-Hochkommas durch Delphi-Hochkommas zu ersetzen. Soviel ich weiß, orientiert sich die Access-SQL-Syntax sehr stark an der des MS SQL-Servers.

Das DBGrid würde ich auf ReadOnly schalten und die eventuelle Änderungsarbeiten in den Edits ausführen. Dadurch sperrst du nur einen Satz. Das kann wichtig werden, wenn mehrere Benutzer auf die Tabelle zugreifen wollen. Dazu muss aber genau dieser eine Satz geladen werden. Das erreichst du dadurch, indem du entweder über einen AutoIncrement-Wert, einen Unique-Identifier oder über einen Primärschlüssel selektierst.

Gruß
Armin