Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Eingabe mit Daten aus der Datenbank vergleichen (https://www.delphipraxis.net/3797-eingabe-mit-daten-aus-der-datenbank-vergleichen.html)

Flo 30. Mär 2003 18:05


Eingabe mit Daten aus der Datenbank vergleichen
 
Hallo,
ich bin blutiger Anfänger in Sachen Delphi.

Ich möchte ein einfaches Vokabelprogramm programmieren. Ich hab mir soweit schon alles aufgebaut. Jetzt möchte ich aber, dass er mich die vorher eingeben Vokabeln (deutsch-englisch) abfragt. Das heißt: Es erscheint das deutsche Wort und ich muss dann das dazugehörige englische Wort eingeben. Anschließend soll er mir sagen, ob die Eingabe richtig oder falsch war.

Ich habe mir alles bis auf die Abfrage aufgebaut.

Hoffe ihr könnt mir helfen. Danke im voraus!

Hansa 30. Mär 2003 18:15

Du mußt die eingegebenen Werte vergleichen. Also : Es muß überprüft werden, daß Edit1.Text in der Datenbank vorhanden ist. Jetzt weiß ich aber nicht, um welche DB es sich handelt :?:

Flo 30. Mär 2003 18:34

Danke dür deine Antwort.

Es handelt sich um eine Paradox 7 Tabelle.

czapie 30. Mär 2003 21:35

ich kenn mich zwar nicht mit paradox aus, aber
vom Prinzip her guckst du nur noch ob ein Eintrag vorhanden ist, bei dem Deutsch gleich deiner "Abfrage-Vokabel" und englisch gleich deiner "Eingabe-Vokabel" ist, wenn ja richtig und wenn nicht dann eben nicht ;-)

Czapie.

Flo 31. Mär 2003 13:23

Danke für deine Antwort.

Mein Problem ist ja, dass ich den code nicht habe.
Ich hab auch keinen Ansatz, wie ich anfangen könnte.
Hat vielleicht einer'n Tipp ???

Flo 1. Apr 2003 17:48

Kann mir denn keiner helfen :cry:
Hab noch nicht einmal ne Ahnung, wie ich anfangen soll (code,...)
Ich hab schon das halbe Inet durchsucht, aber nichts gefunden. :(

Bitte helft mir :oops:

Garby 1. Apr 2003 18:11

Hallo,

ich hoffe du erwartest nicht, dass dir hier jemand den Source eines kompletten Programms postet. :wink:

Mal angenommen du hast eine Tabelle in Paradox die folgedermassen ausschaut:

ENGLISCH_DEUTSCH
ENLFNR // laufende Nummer
ENENGLISCH // englischer Text
ENDEUTSCH // deutscher Text

Die Abfrage schaut dann so aus:
Delphi-Quellcode:
with qryAbfrage do begin
  Close;
  SQL.Text := 'Select Count(*) as ANZAHL From ENGLISCH_DEUTSCH';
  SQL.Add('Where ENENGLISCH = :Englisch and ENDEUTSCH = :Deutsch');
  ParamByName('Englisch').AsString := edtEnglisch.Text; // Parameterwerte aus 2 Edit-Feldern
  ParamByName('Deutsch').AsString := edtDeutsch.Text;
  Open;
  if FieldByName('ANZAHL').AsInteger > 1 then
    ShowMessage('Richtig')
  else
    ShowMessage('leider Falsch');

  Close;
end;
Hoffentlich hilft es dir :mrgreen:

Flo 1. Apr 2003 18:30

Danke !!!
Ich hoffe die Frage führt nicht zu weit.
Wie bau ich den denn ein ??? :oops:
Bin halt noch Anfänger :mrgreen:

Garby 1. Apr 2003 18:35

Versteh ich jetzt nicht :spin:

Es wär vielleicht besser, wenn du mal schreiben würdest, was du bereits hast.

Die Datenbank, und die Verbindung dazu über Delphi ist vorhanden?

Flo 1. Apr 2003 18:38

Ich habe alles, bis auf die Abfrage. Also die DB-Felder,Datenbanken und ich kann neue Datensätze in die Datenbank übernehmen.

Die Verbindung habe ich mit DataSource und TTable hergestellt.

Garby 1. Apr 2003 18:54

OK,

du ziehst einfach eine TQuery-Komponente auf den Formular.
Dann stellst du die Database-Eingenschaft der Query gleich ein, wie bei deiner TTable-Komponente.
Danach erstellst du z.B. einen Button, in dessem Click-Ereignis du o.g. Code reinstellst.
Die Tabelle und die Felder der o.g. SQL-Anweisung musst du natürlich deiner DB anpassen.

Dann sollte alles laufen, OK?

Flo 1. Apr 2003 19:05

Ich muss dich jetzt gleich noch einmal nerven, sorry.

Wie passe ich die SGL-Anweisungen an die DB an ??? :angle2:

Flo 1. Apr 2003 19:09

Doppelpost Bitte löschen

Hansa 1. Apr 2003 19:13

Zitat:

Zitat von Flo
...wie passe ich die SGL-Anweisungen an die DB an ???

Es geht um die Bezeichner. Die müssen im Programm und der DB übereinstimmen. Sonst wird eben gar nichts gefunden.

Flo 1. Apr 2003 19:17

Danke euch beiden.
Ich werde das gleich mal ausprobieren.
Melde mich dann nochmal. Ich hoffe, ich hab was positives zu berichten :mrgreen:

Garby 1. Apr 2003 19:24

Hier nochmal der Source:
Delphi-Quellcode:
with qryAbfrage do begin
  Close;
  SQL.Text := 'Select Count(*) as ANZAHL From (1)ENGLISCH_DEUTSCH(1)';
  SQL.Add('Where (2)ENENGLISCH(2) = (P):Englisch(P) and (3)ENDEUTSCH(3) = (P):Deutsch(P)');
  ParamByName('Englisch').AsString := (4)edtEnglisch.Text(4); // Parameterwerte aus 2 Edit-Feldern
  ParamByName('Deutsch').AsString := (5)edtDeutsch.Text(5);
  Open;
  // (PE)
  if FieldByName('ANZAHL').AsInteger > 1 then
    ShowMessage('Richtig')
  else
    ShowMessage('leider Falsch');

  Close;
end;
Oben habe ich die Stellen die du ersetzen musst mit Zahlen oder Buchstaben eingeschlossen(bitte nicht drinlassen, sonst gehts sicher nicht).
(1) = dein Tabellenname
(2) = der Feldname in dem der Englische Text in der Tabelle steht
(3) = der Feldname des Deutschen Textes
(4) = Irgendwo in deinem Formular wirst du eine Variable oder ein Edit haben, wo der englische Text steht --> hier einsetzen
(5) = das selbe mit dem vom User eingegebenen deutschen Text
(P) sind Parameter. Die kannst du benennen wie du willst. Sie dienen nur als Platzhalter für die Werte, die du dann unter (PE) den Parametern zuweisen musst.

So, einfacher krieg ichs nicht hin. Experimentier doch einfach mal damit herum, dann kommst du bestimmt drauf.

Etwas hab ich noch vergessen. Dein TQuery-Objekt muss natürlich auch qryAbfrage heissen :lol:

Flo 1. Apr 2003 19:31

Das ist gut, jetzt müsste ich das eigentlich kapieren *hoffnungsvoll*

Danke nochmal

harrybo 1. Apr 2003 21:32

Hi Garby,
sollte das Ergebnis nicht auf "> 0" alternativ ">= 1" abgefragt werden (also: if FieldByName('ANZAHL').AsInteger > 0 then)?

gruß, harrybo

Flo 2. Apr 2003 16:08

Danke nochmal an alle. Es hat geklappt.

Hab noch eine Frage (mehr optisch)
Wie erziele ich, dass bei Richtg- oder Falschergebnis nicht Projekt1 sonder ''blabla'' steht ???


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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-2025 by Thomas Breitkreuz