Autor Beitrag
MaxN
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 15.03.16 00:49 
Hey Leute,

habe ein Problem und zwar bin ich gerade dabei ein Vokabeltrainer mit einer Access-Datenbank zu erstellen. Jedoch bleibe ich bei ein Problem stecken, und zwar wie prüfe ich z.b das, dass Deutsche Wort mit dem Lateinischen übereinstimmt? (Halt Zeilen überprüfung oder per ID).
Habe schon vieles probiert, jedoch ohne Erfolg. Meine Datenbank sieht wie Folgt aus. (ID(Primärschlüssel),Deutsch,Latein). Und ich versuche es per Textboxen zu prüfen.
Hoffe jemand hat eine Idee.

Gute Nacht und Danke im vorraus. :)

Mfg
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 15.03.16 09:56 
Hi, ich kenn mich zwar nicht mit AccessDatenbanken aus, aber wie du an deine Werte in der Datenbank kommst, weißt du hoffentlich. Denn dann ist es ja nicht mehr schwer, diese Werte per Index/per Id zu vergleichen.
Vielleicht solltest du noch mal erklären, wo genau dein Problem liegt.

Gruß
Neuling

EDIT: Ich würde es zum Beispiel so machen, dass nach dem Start die komplette Tabelle in ein 2-dimensionales Array a´la string[][] Vokabeln = new String[2][...] geladen wird, so hättest du alle Vokabeln gleich als Päärchen parat.
MaxN Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 15.03.16 15:48 
Hey,
danke für die Antowrt.
Um das mal zu veranschaulichen zeige ich mal mein Layout und die Db.

Das Layout:

www.directupload.net...294/e9fvhaq8_png.htm

Die Datenbank:

www.directupload.net...294/5kvtl85k_png.htm

Wie man sieht sind die Spalten "Deutsch,Latein" in einer seperaten Spalte.

Im Layout wird mir das Deutsche Wort in der rechten TextBox ausgegeben (ReadOnly) und die Lateinische übersetzung muss Manuell in der linken TextBox eingegeben werden.
Meine Frage war, wie man die Abfrage in C# gestaltet um die beiden nebeneinander liegenden Attribute zu vergleichen und zu Prüfen ob sie auch in der gleichen Reihe sind um sie als richtig oder falsch zuzuordnen.

Mfg :)
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Di 15.03.16 16:19 
Moin,

zu dem Zeitpunkt wo du die Vokabel in deiner GUI abfragst, hast du ja sicherlich schon die ganze Zeile aus der Datenbank abgefragt. Du hast also schon ein Objekt, welches Deutsch, Latein und ID enthält. Jetzt musst du doch lediglich prüfen, ob die Nutzereingabe mit deinem zwischengespeicherten Objekt übereinstimmt. Ein erneuter Zugriff auf die Datenbank ist da nicht wirklich erforderlich.

Gruß
Finn
erfahrener Neuling
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 233
Erhaltene Danke: 19

Win 7, Win 10
C#, ASP-MVC (VS 2017 Community), MS SQL, Firebird SQL
BeitragVerfasst: Di 15.03.16 16:26 
genau, wie Finn schon sagte, musst du die Daten ja nur einmal aus der Datenbank holen, dann kannst du sie auch gleich Gruppiert abspeichern (zB in ein Array)

zB so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
private String[][] Vokabeln = new String[2][AnzahlVokabeln];

private void ladeVokabeln (...) 
{
    for(int i=0; i<Vokabeln[0].Length; i++) 
    {
        Vokabeln[0][i] = getVokabelnVonWoAuchImmer();   //deutsch
        Vokabeln[1][i] = getVokabelnVonWoAuchImmer();   //latein
    }
}

dann musst du nur noch Vokabel[0][i] mit Vokabel[1][i] vergleichen.

Wieso speicherst du die überhaupt in einer Datenbank ab?
Für so etwas würde auch locker eine txt-Datei reichen ;)
MaxN Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Di 15.03.16 17:09 
user profile iconerfahrener Neuling hat folgendes geschrieben Zum zitierten Posting springen:
genau, wie Finn schon sagte, musst du die Daten ja nur einmal aus der Datenbank holen, dann kannst du sie auch gleich Gruppiert abspeichern (zB in ein Array)

zB so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
private String[][] Vokabeln = new String[2][AnzahlVokabeln];

private void ladeVokabeln (...) 
{
    for(int i=0; i<Vokabeln[0].Length; i++) 
    {
        Vokabeln[0][i] = getVokabelnVonWoAuchImmer();   //deutsch
        Vokabeln[1][i] = getVokabelnVonWoAuchImmer();   //latein
    }
}

dann musst du nur noch Vokabel[0][i] mit Vokabel[1][i] vergleichen.

Wieso speicherst du die überhaupt in einer Datenbank ab?
Für so etwas würde auch locker eine txt-Datei reichen ;)


Natürlich würde es reichen, wollte es jedoch als Übung haben, da ich gerade mit Datenbanken angefangen habe zu Arbeiten.

Habe mein Problem eben nach langem tüffteln gelöst.

Simpel:
ausblenden SQL-Anweisung
1:
"SELECT Deutsch,Latein FROM Vokabeln WHERE ID = @id"					

dann die aus dem Reader gelesenen Daten in einer Variable abspeichern und in einer If-Anweisung mit der LateinTextBox prüfen.

Manchmal scheint alles um einiges schwerer als es ist :)

Trotzdem danke für eure Mühe.

Moderiert von user profile iconTh69: SQL-Tags hinzugefügt