Autor Beitrag
Austria88
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 11.04.11 13:24 
Hallo.

Ich habe eine Datenbank erstellt und zeige sie mithilfe von DataGridView an.

Jetzt hab ich mir überlegt eine Benutzer und Passwort Abfrage zu erstellen und zwar mit den Benutzer und dem dazugehörigen Passwort das in der Datenbank bzw. im DataGrid vorhanden ist.

Meine Frage wie bekomme ich die Daten aus einer Zelle vom DataGrid und kann sie als Text auslesen.


Meine Idee wäre dann ungefähr so:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
if (textBoxPasswort.text == Der Text vom DataGrid)

{
messageBox.show("Richtiges Passwort")
}

else

{
messageBox.show("Passwort Falsch")
}


Danke schon mal im voraus.


Lg Austria

Moderiert von user profile iconKha: C#-Tags hinzugefügt
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Mo 11.04.11 14:33 
Habe ich gerade beantwortet bekommen die Frage (wenn auch völlig anders gestellt :) )

www.c-sharp-forum.de....php?p=637604#637604

_________________
Gruß Markus
Austria88 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 11.04.11 23:31 
Danke für die Antwort :)

ittlerweile habe ich ein neues Problem:



Ich hab ein PasswortAbfrage Fenster wo man den Benutzernamen und das Passwort eingeben muss und die Daten werden von der Tabelle pass entnommen. Die Tabelle kann ich nach belieben mit dataGridView ändern bzw. einen neuen benutzer mit passwort anlegen.


Bei dem Passwort Abfrage Fenster hab ich den "OK-Button" wie folgt programmiert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
if (textBox1.Text == this.dataGridView1.Rows[0].Cells[1].Value.ToString() & textBox2.Text == this.dataGridView1.Rows[0].Cells[2].Value.ToString() || 
                textBox1.Text == this.dataGridView1.Rows[1].Cells[1].Value.ToString() & textBox2.Text == this.dataGridView1.Rows[1].Cells[2].Value.ToString()
            {
                Form7 Form7 = new Form7();
                Form7.Show();

                this.Close();
            }

            else
            {
                MessageBox.Show("Passwort Falsch");
            }




Wenn aber jetzt aber eine Zeile nicht vorhanden is bzw NULL ist bekommen ich eine Fehlermeldung.

Diese Form wie ich programmiert habe ist nicht wirklich die effektivste weil ich ja eigentlich unendlich viele IF Abfragen einfügen müsste.

Ich hätte die Idee eine Art Schleife einzufügen, aber hab nicht wirklich eine Plan wie ich da rangehe.



Ist die Lösung hierbei eine Schleife oder ist eine andere Methode besser?


Ich hoffe du verstehst annähernd was ich haben möchte. :)

Lg Austria
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Mi 13.04.11 13:08 
Mal so ohne konkret :)
Wenn Du den Namen in Deiner Tabelle eindeutig machst, dann brauchst Du ja eigentlich "nur" nach dem Namen (der im Textfeld steht) in der Tabelle suchen und vergleichen ob das Passwort stimmt. Ist Name nicht vorhanden oder Passwort falsch gibst Du eine Meldung aus.

Hilft das weiter?

_________________
Gruß Markus
Austria88 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 13.04.11 14:33 
Hmm.. Ein interessanter Aspekt.

Die Idee ist wirklich gut. :) Logischerweise dürfte dann keine Fehlermeldung mehr bzw. ein einfrieren möglich sein.


Die Frage ist jetzt wiederum wie ich an die Sache rangehe.

:arrow: Meine Idee nach deinem Lösungsvorschlag wäre dann wie folgt:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
//Erste Abfrage ob der Benutzer vorhanden ist
if (textBoxBenutername.Text = Irgendein BenutzerFeld im Datagrid in der Spalte "Benutzername")
 {
                // Zweite Abfrage ob das Passwort für den ausgewählten Benutzer stimmt.
                if (TextBox2.Text = Passwort des jenigen Benutzerfeld in der Spalte "Passwort")
                {
                    MessageBox.Show("Richtig");
                }
                else
                {
                   messageBox.show("Benutzer nicht vorhanden oder Passwort falsch");
                }
}

else
{
messageBox.show("Benutzer nicht vorhanden oder Passwort falsch");
}


Das würde genügen. Den Benutzer mitzuteilen was genau an der Eingabe falsch ist möchte ich nicht machen, um einen missbrauch vorzubeugen. :idea:


Wie genau setzte ich das jetzt um. Die Befehle in C# sind mir leider noch nicht sehr vertraut, da ich erst seit 2 Wochen damit arbeite.




LG Austria
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Mi 13.04.11 15:34 
So richtig Fit bin ich leider auch nicht.

Mal so nebenbei, bei den Vergleichen (If Abfrage) fehlt Dir ein = Zeichen, sonst weist Du etwas zu ;)

Aber im Prinzip wurde das ja im o.g. Link beantwortet.

Vor der If Abfrage gehst Du in Deine Datenbank und suchst den entsprechenden Datensatz. Dann hast Du die Propertys für den Vergleich
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
var produktRow = antiviruslizenzDataSet.produkt.First(x => x.id == Convert.ToInt32(produktComboBox.SelectedValue));
var kundenRow = antiviruslizenzDataSet.kunde.First(x => x.id == Convert.ToInt32(kundeComboBox.SelectedValue));

//alternativ kannst Du auch das schreiben, wenn der Wert, über den gesucht wird, der Primärschlüssel ist
//var produktRow = antiviruslizenzDataSet.produkt.Find(Convert.ToInt32(produktComboBox.SelectedValue));

string regtext = produktRow.regtext; //ist doch ein typisiertes DataSet, also greife dierekt auf die Properties zu!

In Deinem Fall musst Du denn eben nach dem Namen suchen.

_________________
Gruß Markus
Austria88 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 14.04.11 00:38 
Soooo.. Thema erledigt :)

Ich habs auf eine andere Art hinbekommen.





Für alle die auch danach suchen und zufällig hier gelandet sind hier die Lösung.

Ich durchsuche die DataGridView nach dem eingegebenen Benutzernamen und dem dazugehörigen Passwort und benutze dazu eine Schleife.

Das Passwort kommt in eine TextBox die aber versteckt ist und wird dann mit dem eingebenen Passwort verglichen. Ist es gleich kommt man weiter, wenn nicht kommt eine Fehlermeldung. Ist zwar nicht die Beste Lösung, funktioniert aber. :wink:



ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
string eingegebenerText = textBox1.Text;

                
                DataGridViewRow row;
                for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                {
                    row = dataGridView1.Rows[i];
                    if (row.Cells[1].Value.ToString().Equals(eingegebenerText))
                    {
                        dataGridView1.CurrentCell = row.Cells[1];
                        textBox2.Text = row.Cells[2].Value.ToString();
                       
                         if (textBox2.Text == textBox3.Text)
                        {
                            Form7 Form7 = new Form7();
                            Form7.Show();

                            this.Close();
                        }

                        else if (textBox2.Text != textBox3.Text)
                        {
                            MessageBox.Show("Benutzername oder Passwort falsch!");
                        }

                    }





Danke nochmal für eure Hilfe. :!:


Lg Austria
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 14.04.11 11:26 
Ich habe das jetzt nicht wirklich probiert, aber müsste das nicht so gehen, oder so ähnlich?

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
                DataGridViewRow row;
                for (int i = 0; i < dataGridView1.Rows.Count - 1; i++)
                {
                    row = dataGridView1.Rows[i];
                    if (row.Cells[1].Value.ToString().Equals(textBox1.Text))
                    {                       
                         if (row.Cells[2].Value.ToString() == textBox3.Text)
                        {
                            Form7 Form7 = new Form7();
                            Form7.Show();

                            this.Close();
                        }

                        else
                        {
                            MessageBox.Show("Benutzername oder Passwort falsch!");
                        }
                    }
          else
            {
              MessageBox.Show("Benutzername oder Passwort falsch!");
            }

_________________
Gruß Markus
Austria88 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 14.04.11 13:40 
Ja das Problem ist nur, wenn ich es jetzt so mach wie du und ein falsches Passwort eingebe, kommt 3 mal eine Fehlermeldung.

Lg Austria
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 14.04.11 13:57 
Welche Meldung kommt denn?

_________________
Gruß Markus
Austria88 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 14.04.11 15:00 
OK ich hab mich falsch ausgedrückt.

Die Fehlermeldung "Benutzername nicht vorhanden oder Passwort falsch" erscheint dreimal.

Wenn ich nur die else Abfrage
ausblenden C#-Quelltext
1:
2:
3:
4:
else
            {
              MessageBox.Show("Benutzername oder Passwort falsch!");
            }




am Schluss lasse kommt sie zweimal.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4799
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 14.04.11 15:06 
Hallo ihr beiden,

es fehlt noch ein "Let's have a break";
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
for(...)
{
    if (row.Cells[1].Value.ToString().Equals(textBox1.Text)) // besser ist allerdings: row.Cells[1].Value.ToString() == textBox1.Text
    {
        if(...)
        {
            // open form
        }
        else
        {
            MessageBox.Show("Benutzername oder Passwort falsch!");
        }

        break// for-Schleife verlassen
    }
}
m-s
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 149
Erhaltene Danke: 7

Win 10
C# (VS 2015)
BeitragVerfasst: Do 14.04.11 17:06 
Ah super, danke.

_________________
Gruß Markus
Austria88 Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: So 17.04.11 18:38 
:D Dankeschööön.