Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Access Datenbank mit Eingegebenem Vergleichen (https://www.delphipraxis.net/85849-access-datenbank-mit-eingegebenem-vergleichen.html)

hasserwahn 5. Feb 2007 21:40

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

mkinzler 5. Feb 2007 21:44

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?

hasserwahn 5. Feb 2007 21:47

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.

mkinzler 5. Feb 2007 21:53

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Eine genau Suche sieht in SQL so aus:
SQL-Code:
Select <feldliste> from <tabelle> where <feld> = <wert>;
als

Delphi-Quellcode:
Adoquery.sql.Text := 'select id from Tabelle where memo = '+QuotedStr( memo.text);
AdoQuery.Open;
oder noch besser unter Verwendung von Parametern:
Delphi-Quellcode:
Adoquery.sql.Text := 'select id from Tabelle where memo = :such';
...
AdoQuery.Parameters.ParamByName('such').Value : Memo.Text;
AdoQuery.Open;

hasserwahn 6. Feb 2007 18:49

Re: Access Datenbank mit Eingegebenem Vergleichen
 
:wiejetzt:

also ich hab das so gemacht:
Delphi-Quellcode:
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;
aber wenn ich den Button dann klicke, dann kommt diese Meldung:
'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?

mkinzler 6. Feb 2007 19:38

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.

hasserwahn 6. Feb 2007 19:44

Re: Access Datenbank mit Eingegebenem Vergleichen
 
ok durch was muss ich 'tabelle' denn ersetzten? durch den namen wie XY.mdb oder wie?

mkinzler 6. Feb 2007 19:51

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Nein, xy.mdb ist ja die Datenbank, diese besteht aus Tabellen.

hasserwahn 6. Feb 2007 20:03

Re: Access Datenbank mit Eingegebenem Vergleichen
 
ja ich habs gecheckt
jetzt hab ich das so eingegeben:

Delphi-Quellcode:
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;
aber dann kommt eine meldung,dass für mindestens einen erforderlichen parameter der wert fehlt.

was jetzt?

mkinzler 6. Feb 2007 20:14

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Was für einen Wert hat .ParamCheck?

hasserwahn 6. Feb 2007 20:17

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Die Eigenschaft .ParamCheck von dem ADOQuery hat true

hasserwahn 6. Feb 2007 20:55

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.

mkinzler 6. Feb 2007 20:57

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Er muß True sein. Zeigt er noch mehr Parameter an?

hasserwahn 7. Feb 2007 15:37

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Ja hier sind alle Eigenschaften von ADOQuery:
  • AutoCacheFields : true
    CacheSize: 1
    commndTimeout: 30
    ConnectionString:
    CursorLocation: clUseClient
    CursorType: ctKeyset
    Datasource:
    ExecuteOptions: []
    eoAsyncExecute: false
    eoAsyncFetch: false
    eoAsyncFetch: false
    eoExecuteNoRecords: false
    Filter:
    Filtered: false
    LockType: ltOptimistic
    MarshalOptions: moMarshalAll
    MaxRecords: 0
    Paramcheck: true
    Parameters:(TParameters)
    prepared: false
    SQl:(TWideStrings)
    Connection:DataModule2.ADOConnection1
    DataSource:
    Active: false
    EnableBCD: true
    Name: ADOQuery
    Tag:0

mkinzler 7. Feb 2007 15:40

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Delphi-Quellcode:
Parameters:(TParameters)
Gibt es hier noch weitere Parameter?

hasserwahn 7. Feb 2007 15:47

Re: Access Datenbank mit Eingegebenem Vergleichen
 
nein da steht kein einziger parameter drin

mkinzler 7. Feb 2007 16:13

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Weise mal das Statement im OI zu

hasserwahn 7. Feb 2007 16:19

Re: Access Datenbank mit Eingegebenem Vergleichen
 
welches statement zu was für einem 'OI' ?

hasserwahn 7. Feb 2007 17:28

Re: Access Datenbank mit Eingegebenem Vergleichen
 
OI(Objektinspektor) is jetzt klar. aber was für ein statement meintest du?

mkinzler 7. Feb 2007 17:29

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Die SQL-Abfrage

hasserwahn 7. Feb 2007 17:37

Re: Access Datenbank mit Eingegebenem Vergleichen
 
soll ich jetzt bei
Delphi-Quellcode:
SQl:(TWideStrings)
was eintragen?
wenn ja dann was?
und wenn nein dann wo?

mkinzler 7. Feb 2007 17:42

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Ja genau die Abfrage, die du bisher im Programm mit .SQL.Text eingetragen hast.

hasserwahn 7. Feb 2007 18:29

Re: Access Datenbank mit Eingegebenem Vergleichen
 
also mein quelltext sieht so aus:
Delphi-Quellcode:
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;
und jetzt soll ich bei
Delphi-Quellcode:
SQl:(TWideStrings)
eintragen:
'select id from Test where memo = :such'
oder wie?

mkinzler 7. Feb 2007 18:38

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Genau

hasserwahn 7. Feb 2007 18:46

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?

mkinzler 7. Feb 2007 18:48

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Schau mal welche Parameter erzeugt wurden.

hasserwahn 7. Feb 2007 18:50

Re: Access Datenbank mit Eingegebenem Vergleichen
 
ich weiß jetz grade nich, was du meinst. :gruebel:

in welchen parameter was reingeschrieben wurde oder wie?

mkinzler 7. Feb 2007 18:52

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.

hasserwahn 7. Feb 2007 19:07

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

mkinzler 7. Feb 2007 19:20

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Hat die Tabelle die Spalten ID und memo?

hasserwahn 7. Feb 2007 19:28

Re: Access Datenbank mit Eingegebenem Vergleichen
 
die tabelle hat die spalten ID und test 1 bis test 12

mkinzler 7. Feb 2007 19:38

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Dann ersetze mal memo mit test1 (oder jeweiliges Memofeld)

hasserwahn 8. Feb 2007 18:39

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?

mkinzler 8. Feb 2007 18:43

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Nein, aber man kann nur Felder einer tabelle durchsuchen, welche auch Teil dieser Tabelle sind.

hasserwahn 10. Feb 2007 17:48

Re: Access Datenbank mit Eingegebenem Vergleichen
 
jetzt habe ich den text etw. geändert:

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;
aber wie kann ich mir den inhalt von feld8 dann anzeigen lassen(z.B. in nem memo feld)?

mkinzler 10. Feb 2007 17:51

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Zitat:

aber wie kann ich mir den inhalt von feld8 dann anzeigen lassen(z.B. in nem memo feld)?
Delphi-Quellcode:
Memo.Text := Adoquery.FieldByName('feld8').Value;
oder eine DBMemo verwenden.

hasserwahn 10. Feb 2007 17:53

Re: Access Datenbank mit Eingegebenem Vergleichen
 
und wie geht es mit nem DBMemo?

mkinzler 10. Feb 2007 17:59

Re: Access Datenbank mit Eingegebenem Vergleichen
 
Zitat:

Zitat von hasserwahn
und wie geht es mit nem DBMemo?

dataSource auf AdoQuery setzten und dann das DBMemo mit der DataSource verbinden und Feld auswählen.

hasserwahn 10. Feb 2007 18:07

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.

mkinzler 10. Feb 2007 18:13

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:

und bei nem dbmemo weis ich net, wie ich ein feld auswählen soll.
Über die Eigenschaft .DataField
BTW. Lese dir mal ein Tutorial über die Datenbankschnittstelle von Delphi durch


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr.
Seite 1 von 2  1 2      

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