Anmeldung mit DataSet
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 43 Antworten in diesem Thema. Der letzte Beitrag () ist von rLz4u.
-
-
Zunächst erst einmal vielen Lieben Dank für Deine Mühe!
Ich habe das komplette Projekt einfach nochmal neu geschrieben. Danach ging es auch so, wie in meinem Post beschrieben.
SpaceyX schrieb:
ich war zuerst auch gegen den "Dark-Style"
Ich habe mich eben sehr erschreckt und dachte zunächst, mein PC sei kaputt! :D
Wirklich vieeeeelen lieben Dank, SpaceyXvb-paradise.de/user/16877-spaceyx/! -
Kein Problem....
Aber denk daran, dass es alles andere als sicher ist. Wirklich nur einigermaßen sicher ist, wenn Du die Hashes iwo auf einem Server speichert. Die Zugriffe auf den Server sollten auch nur über ein gut durchdachtes PHP-Skript erfolgen. Aber das wurde ja schon gesagt.Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
Ich habe jetzt 2 Formulare (Anmeldung und Übersicht aller Benutzer).
Auf der FrmAnmeldung habe ich 1 TxtBoxUsername & 1 TxtBoxPassword sowie ein LoginButton. Wenn ich dort, und zwar richtiger Weise die Benutzerdaten eingebe, bekomme ich den Fehler, dass der User nicht existiert.
Muss ich auf das DataSet der Form2 verweisen oder dieses als Datenquelle importieren? -
Du verwendest ja die FrmAnmeldung nur zum Login, oder? Dann kannst Du Dir ja in Deiner FrmAnmeldung ein DataSet erzeugen und die Daten abfragen.
Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
Hm, irgendetwas mache ich offensichtlich falsch.
Bisher habe ich Deine Tipps gut umsetzen können. Nun scheine ich aber etwas falsch gemacht zu haben...
Übersicht: Name des Project
"UserAccountManagement"
Name des DataSet
"f_UserDataSet"
Name der Table
"users"
Name der Startform
"frmLogin"
Name der Form, in der das Ds liegt
"frmMain"
Der Code in frmLogin:VB.NET-Quellcode
- Imports System.IO
- Public Class frmlogin
- Private _dS As New f_UserDataSet
- Private _userData As String = "users.xml"
- Private Sub frmlogin_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- If File.Exists(_userData) Then
- _dS.ReadXml(_userData)
- End If
- End Sub
- Private Sub login_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
- Dim userName As String = Me.TextBox1.Text
- Dim password As String = Me.TextBox2.Text
- Dim result = From p In frmMain.F_UserDataSet.users Where p.Username = userName Select p
- If result.Count = 1 Then
- If result(0).IsLockedOff Then
- MsgBox("Error:" & vbTab & "This Account has been blocked. Please contact the Administrator.")
- Exit Sub
- End If
- Dim r = frmMain.UsersTableAdapter.ValidateUserNamePassword(TextBox1.Text, TextBox2.Text)
- If r Is Nothing Then
- MsgBox("Username or Password is wrong!")
- Else
- 'Hurra, alles passt! :)
- 'frmMain.Show()
- End If
- Else : MsgBox("Error:" & vbTab & "This account does not exist.")
- End If
- End Sub
Der Fehler:
Es wird mir die MsgBox angezeigt, dass der User nicht existiert. Wenn ich aber die frmMain mit Hilfe eines weiteren Button öffne und dann nochmal das Login probieren, funktioniert alles. -
-
-
Ähh, nein. Ich dachte, das wäre logisch.
In "users.xml" sind die UserInformationen eben nicht in einer Datenbank gespeichert, sondern in ner XML-Datei. Für ein DataSets ists egal, woher die Daten kommen, da ist mir XML lieber, solange es nicht zehntausende von Datensätzen sind.
Also musst Du da selber ran. Das Prinzip ist doch das Gleiche.Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
-
Ich habe jetzt 2 Forms, die eine zur Anmeldung und die andere, um die Zugangsdaten anzuzeigen.
Bei beiden gleich:
Problem:
Wenn ich Anmeldemaske offen habe und die Übersicht danach per ButtonClick öffne, kommt es zu einer ConstraintException. "Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen." -
Dann hast du entweder Datensalat oder das Pech, dass in deim Dataset die Tabellen in der falschen Reihenfolge abgespeichert sind.
probierma vorm laden Dataset.EnforceConstraint=False zu setzen, und es anschließend wieder zu aktivieren.
oder noch besser: gugge die mit ziemlich vielen Wassern gewaschenen Lade-Methode von Phonebook -
Wenn Du meinen Beispielcode verwendest, wie ich ihn ein paar Beiträge weiter hinten gepostet habe, dann musst Du Dir darüber im Klaren sein, dass ein UserName nur 1x vorkommen darf, da ich davon ausgehe, dass UserNames Unique sein sollen. Darum, wenn Du mehrere gleiche UserNames zulasssen willst, musst Du im DataSet die Column UserName Unique=False stellen.
Ich glaube Dir aber auch gesagt zu haben, dass es Beispielcode ist und Du ihn nur als einen Anhaltspunkt nehmen sollst.Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
ErfinderDesRades schrieb:
Dataset.EnforceConstraint=False
@SpaceyX
Selbstverständlich habe ich den Code nur als Anhaltspunkt genutzt. Auch ist das DataSet richtig eingestellt. Jeder Benutzername soll nur einmal vorkommen, deshalb habe ich auch dahingehend bereits "Username" auf Unique = True gesetzt gehabt.
Der Fehler tritt halt nur auf, wenn ich die .xml ein 2. Mal aufrufe, während noch das LoginForm offen ist... -
Warum solltest Du das .xml 2x in das selbe DataSet laden? Dann ists ja klar, dass dieser Fehler auftritt. Zum Login brauchst Du ja nur die Logindaten. Frag diese ausm DataSet ab. Klappt der Login, dann verwirf das DataSet und lad die .xml in ein neues oder übergib das DataSet aus der Login-Form an die Form, die die UserDaten verwaltet.Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
Die .xml lade ich so in das LoginForm
Ich habe gedacht, um das DataSet zu übergeben, dass ich in der neuen Form ebenfalls den o.g. Code ins LoadEvent eintragen muss.
Nun merke ich gerade, dass das ziemlicher Blödsinn ist. -
-
-
Wenn Du die Verwaltungsform schliesst, dann landest Du wieder bei der Login-Form. Sehe ich das richtig?
Naja, dann darfste eben die Login-Form nicht wirklich schliessen, sondern nur verstecken... ODER....
Du erzeugst ne neue Login-Form, welche dann wieder die Daten aus der .xml liest und dann beginnt dieses Spiel wieder von vorne. ALTERNATIV....
kannst Du auch im einen überladenen Konstruktor in der Login-Form anlegen, welcher wieder ein DataSet übernimmt....
So viele Möglichkeiten, ich würd die Login-Form nicht schliessen, sondern nur verstecken....Die Unendlichkeit ist weit. Vor allem gegen Ende.
Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. -
Ich würde später die LoginForm verstecken (hide). Im Moment ist sie als aktive Form vorhanden. Die Form2 die ich öffne, enthält nur das MenuStrip. Wenn ich diese schließe, dann habe ich ja nur noch die aktive Login Form. Das Wiedereinloggen, um zur Form2 zu kommen, klappt wunderbar.
Nun befindet sich aber in Form2 ein MenuItem, welches eine weitere Form öffnet. Wenn diese wieder geschlossen wird, ist die LoginForm aktiv und Form2. Öffne ich wieder die Form über das MenuItem, in der die Daten gespeichert sind, ist das DataSet leer....
Das komische ist auch, dass beim 1. Mal Öffnen der Verwaltungsform, alle Datensätze 2x vorhanden sind und danach halt gar nicht mehr....
Klickpfad:
LoginForm -> FrmMain -> MenuItem -> VerwaltungsformDieser Beitrag wurde bereits 1 mal editiert, zuletzt von „StormySunshine“ ()
-
Ähnliche Themen
-
[C#] Sql Exception wurde nicht behandelt
StormySunshine - - Daten(bank)programmierung -
mehrere Checkboxen im DataSet abfragen
StormySunshine - - Daten(bank)programmierung
-
5 Benutzer haben hier geschrieben
- Gast (24)
- SpaceyX (15)
- MemoAnMichSelbst (2)
- ErfinderDesRades (2)
- rLz4u (1)