![]() |
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! |
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 :?:
|
Danke dür deine Antwort.
Es handelt sich um eine Paradox 7 Tabelle. |
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. |
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 ??? |
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: |
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:
Hoffentlich hilft es dir :mrgreen:
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; |
Danke !!!
Ich hoffe die Frage führt nicht zu weit. Wie bau ich den denn ein ??? :oops: Bin halt noch Anfänger :mrgreen: |
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? |
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. |
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? |
Ich muss dich jetzt gleich noch einmal nerven, sorry.
Wie passe ich die SGL-Anweisungen an die DB an ??? :angle2: |
Doppelpost Bitte löschen
|
Zitat:
|
Danke euch beiden.
Ich werde das gleich mal ausprobieren. Melde mich dann nochmal. Ich hoffe, ich hab was positives zu berichten :mrgreen: |
Hier nochmal der Source:
Delphi-Quellcode:
Oben habe ich die Stellen die du ersetzen musst mit Zahlen oder Buchstaben eingeschlossen(bitte nicht drinlassen, sonst gehts sicher nicht).
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; (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: |
Das ist gut, jetzt müsste ich das eigentlich kapieren *hoffnungsvoll*
Danke nochmal |
Hi Garby,
sollte das Ergebnis nicht auf "> 0" alternativ ">= 1" abgefragt werden (also: if FieldByName('ANZAHL').AsInteger > 0 then)? gruß, harrybo |
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