![]() |
Datenbank: Access • Zugriff über: ADO
Access Datenbank mit Eingegebenem Vergleichen
Hi
ich will wissen, wie ich etwas, das ich z.B. in einem Memo-Feld eingegeben habe, mit einzelnen Feldern einer Access-Datenbank vergleichen kann. vielen Dank im voraus :-D mfg hasserwahn |
Re: Access Datenbank mit Eingegebenem Vergleichen
Willst du wissen, ob die Eingabe in irgendeinem Record in der Tabelle vorkommt? Ist eine 100%ige Übereinstimmung erwümscht?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Ich will ein Feld auslesen, und den Inhalt dann in ein anderes Memo-Feld schreiben.
Außerdem will ich auch eine Suchfunktion einbauen, bei der aber eine 100%ige Übereinstimmung erforderlich ist. |
Re: Access Datenbank mit Eingegebenem Vergleichen
Eine genau Suche sieht in SQL so aus:
SQL-Code:
als
Select <feldliste> from <tabelle> where <feld> = <wert>;
Delphi-Quellcode:
oder noch besser unter Verwendung von Parametern:
Adoquery.sql.Text := 'select id from Tabelle where memo = '+QuotedStr( memo.text);
AdoQuery.Open;
Delphi-Quellcode:
Adoquery.sql.Text := 'select id from Tabelle where memo = :such';
... AdoQuery.Parameters.ParamByName('such').Value : Memo.Text; AdoQuery.Open; |
Re: Access Datenbank mit Eingegebenem Vergleichen
:wiejetzt:
also ich hab das so gemacht:
Delphi-Quellcode:
aber wenn ich den Button dann klicke, dann kommt diese Meldung:
procedure TForm1.Button1Click(Sender: TObject);
begin Adoquery.sql.Text := 'select id from Tabelle where memo = :such'; AdoQuery.Parameters.ParamByName('such').Value := Memo.Text; AdoQuery.Open; end; 'Im Projekt Projekt1.exe ist eine Exception der Klasse EOleException mit der Meldung 'Das Microsoft Jet-Datenbankmodul findet die Eingngstabelle oder Abfrage 'Tabelle' nicht. Stellen Sie sicher, dass sie existiert und der Nme richtig geschrieben ist' aufgetreten' kann mir einer helfen? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Tabelle war auch als Platzhalter gedacht, habe es nicht richtig markiert. Du mußt hier den Namen deiner Tabelle einfügen.
|
Re: Access Datenbank mit Eingegebenem Vergleichen
ok durch was muss ich 'tabelle' denn ersetzten? durch den namen wie XY.mdb oder wie?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Nein, xy.mdb ist ja die Datenbank, diese besteht aus Tabellen.
|
Re: Access Datenbank mit Eingegebenem Vergleichen
ja ich habs gecheckt
jetzt hab ich das so eingegeben:
Delphi-Quellcode:
aber dann kommt eine meldung,dass für mindestens einen erforderlichen parameter der wert fehlt.
procedure TForm1.Button1Click(Sender: TObject);
begin Adoquery.sql.Text := 'select id from Test where memo = :such'; AdoQuery.Parameters.ParamByName('such').Value := Memo.Text; AdoQuery.Open; end; was jetzt? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Was für einen Wert hat .ParamCheck?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Die Eigenschaft .ParamCheck von dem ADOQuery hat true
|
Re: Access Datenbank mit Eingegebenem Vergleichen
und wenn ich den Wert con ParamCheck auf false stelle, dann kommt eine
Fehlermeldung, dass er den Parameter 'Such' nicht gefunden hat. |
Re: Access Datenbank mit Eingegebenem Vergleichen
Er muß True sein. Zeigt er noch mehr Parameter an?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Ja hier sind alle Eigenschaften von ADOQuery:
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Delphi-Quellcode:
Gibt es hier noch weitere Parameter?
Parameters:(TParameters)
|
Re: Access Datenbank mit Eingegebenem Vergleichen
nein da steht kein einziger parameter drin
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Weise mal das Statement im OI zu
|
Re: Access Datenbank mit Eingegebenem Vergleichen
welches statement zu was für einem 'OI' ?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
OI(Objektinspektor) is jetzt klar. aber was für ein statement meintest du?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Die SQL-Abfrage
|
Re: Access Datenbank mit Eingegebenem Vergleichen
soll ich jetzt bei
Delphi-Quellcode:
was eintragen?
SQl:(TWideStrings)
wenn ja dann was? und wenn nein dann wo? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Ja genau die Abfrage, die du bisher im Programm mit .SQL.Text eingetragen hast.
|
Re: Access Datenbank mit Eingegebenem Vergleichen
also mein quelltext sieht so aus:
Delphi-Quellcode:
und jetzt soll ich bei
procedure TForm1.Button1Click(Sender: TObject);
begin Adoquery.sql.Text := 'select id from Test where memo = :such'; AdoQuery.Parameters.ParamByName('such').Value := Memo.Text; AdoQuery.Open; end;
Delphi-Quellcode:
eintragen:
SQl:(TWideStrings)
'select id from Test where memo = :such' oder wie? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Genau
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Ok so habe ich das gemacht. Aber es kommt immernoch die Meldung, dass für mindestens einen erforderlichen Parameter kein Wert gesetzt wurde.
was tun? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Schau mal welche Parameter erzeugt wurden.
|
Re: Access Datenbank mit Eingegebenem Vergleichen
ich weiß jetz grade nich, was du meinst. :gruebel:
in welchen parameter was reingeschrieben wurde oder wie? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Wenn ParamCheck True ist, wird beim Setzten eines Abfragestrings, die Parameter angelegt. Wenn du das im OI setzt, kannnst du sehen, welche Parameter aus der Abfrage resultieren.
|
Re: Access Datenbank mit Eingegebenem Vergleichen
beim adoquery stehen in der params eigenschaft keine werte. dann starte ich das programm und drück den button. dann kommt eine meldung, dass er den parameter such nicht gefunden hat. wenn ich dann 'fortsetzten' drücke, und das projekt beende. dann steht in der eigenschaft params die parameter memo und ?. dann habe ich noch den parameter such
hinzugefügt, und wenn ich jetzt starte und den button drücke, dann kommt keine Fehlermeldung, aber auch sonst sehe ich nicht, dass irgendwas passiert. z.B. an dem memo-feld |
Re: Access Datenbank mit Eingegebenem Vergleichen
Hat die Tabelle die Spalten ID und memo?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
die tabelle hat die spalten ID und test 1 bis test 12
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Dann ersetze mal memo mit test1 (oder jeweiliges Memofeld)
|
Re: Access Datenbank mit Eingegebenem Vergleichen
es is nix neues passiert.
was soll eig. passieren? is das eine prozedur zum durchsuchen einer datenbank? wenn ja wie kann ich eingeben, was er suchen soll und wie kann ich ausgeben, ob er es gefunden hat? und wenn nein was macht es dann? |
Re: Access Datenbank mit Eingegebenem Vergleichen
Nein, aber man kann nur Felder einer tabelle durchsuchen, welche auch Teil dieser Tabelle sind.
|
Re: Access Datenbank mit Eingegebenem Vergleichen
jetzt habe ich den text etw. geändert:
Delphi-Quellcode:
aber wie kann ich mir den inhalt von feld8 dann anzeigen lassen(z.B. in nem memo feld)?
procedure TForm1.Button1Click(Sender: TObject);
begin Adoquery.sql.Text := 'select feld8 from Test where feld1 = :servus'; AdoQuery.Parameters.ParamByName('servus').Value := Memo.Text; AdoQuery.Open; end; |
Re: Access Datenbank mit Eingegebenem Vergleichen
Zitat:
Delphi-Quellcode:
oder eine DBMemo verwenden.
Memo.Text := Adoquery.FieldByName('feld8').Value;
|
Re: Access Datenbank mit Eingegebenem Vergleichen
und wie geht es mit nem DBMemo?
|
Re: Access Datenbank mit Eingegebenem Vergleichen
Zitat:
|
Re: Access Datenbank mit Eingegebenem Vergleichen
also:
bei einem normalen memo sagt er, dass er den parameter servus nicht gefunden hat. und bei nem dbmemo weis ich net, wie ich ein feld auswählen soll. |
Re: Access Datenbank mit Eingegebenem Vergleichen
Versuch mal
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin Adoquery.sql.Text := 'select feld8 from Test where feld1 = ?servus'; AdoQuery.Parameters.ParamByName('servus').Value := Memo.Text; AdoQuery.Open; end; Zitat:
BTW. Lese dir mal ein Tutorial über die Datenbankschnittstelle von Delphi durch |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 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