- #1
S
Steffen.Hack
Mitglied
Themenersteller
- Dabei seit
- 08.04.2003
- Beiträge
- 22
- Reaktionspunkte
- 0
- Ort
- Pirmasens
Hallo!
ich übe gerade den Umgang mit Datenbanken unter Microsoft Visual Basic 2005 Express.
Vielleicht könnten Sie mir einen kleinen Tip geben, da ich gerade nicht weiterkomme.
Ich habe eine Access-Datenbank mit mehreren Tabellen erstellt.
Unter Visual Basic habe ich nun eine Verbindung zur Datenbank hergestellt.
Mit Hilfe von „TableAdapter“, „DataSet“, „BindingSource“ und „BindingNavigator“ können Datensätze auch angezeigt, bearbeitet, gelöscht und hinzugefügt und in der Datenbank aktualisiert werden.
Hier der Code-Auszug zu dem ich eine Frage habe:
Public Class Admin
Private Sub MitarbeiterBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MitarbeiterBindingNavigatorSaveItem.Click
Me.Validate()
Me.MitarbeiterBindingSource.EndEdit()
Me.MitarbeiterTableAdapter.Update(Me.ZefDataSet.Mitarbeiter)
End Sub
Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
->TODO: Diese Codezeile lädt Daten in die Tabelle ZefDataSet.Mitarbeiter. Sie können sie bei Bedarf verschieben oder entfernen.
Me.MitarbeiterTableAdapter.Fill(Me.ZefDataSet.Mitarbeiter)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Datensatz As New Object
Datensatz = Me.ZefDataSet.Mitarbeiter.FindByPersonalnummer(Me.TextBox1.Text)
If Datensatz Is Nothing Then
MsgBox(Personalnummer nicht vorhanden!)
Exit Sub
Else
->Me.MitarbeiterBindingSource.MoveNext()
->MsgBox(Me.MitarbeiterBindingSource.IndexOf(Datensatz.Personalnummer))
Me.MitarbeiterBindingSource.Position = ???->Index der gesuchten Personalnummer
End If
End Sub
End Class
Aufgabe: es soll anhand der Personalnummer ein Datensatz zum bearbeiten angezeigt werden.
Es ist kein Problem die Position des Datensatzes im DataSet anhand der Personalnummer (Primärschlüssel) zu finden:
Me.ZefDataSet.Mitarbeiter.FindByPersonalnummer(Me.TextBox1.Text).ID
Leider entspricht diese ID (Autowert) nicht der Position im BindingSource-Objekt. Zumindest nicht, wenn Datensätze gelöscht wurden und dazwischen ID's fehlen.
Das BindingSource-Objekt kennt auch nicht die Methode FindByPersonalnummer, sondern nur MoveNext, MovePrevious, Position =, usw.
Wie kann ich das BindingSource-Objekt dazu bringen, den im DataSet gesuchten Datensatz anzuzeigen?
Me.MitarbeiterBindingSource.Position = ???
Für die Ergänzung des Codes an der Stelle ??? wäre ich sehr dankbar!
ich übe gerade den Umgang mit Datenbanken unter Microsoft Visual Basic 2005 Express.
Vielleicht könnten Sie mir einen kleinen Tip geben, da ich gerade nicht weiterkomme.
Ich habe eine Access-Datenbank mit mehreren Tabellen erstellt.
Unter Visual Basic habe ich nun eine Verbindung zur Datenbank hergestellt.
Mit Hilfe von „TableAdapter“, „DataSet“, „BindingSource“ und „BindingNavigator“ können Datensätze auch angezeigt, bearbeitet, gelöscht und hinzugefügt und in der Datenbank aktualisiert werden.
Hier der Code-Auszug zu dem ich eine Frage habe:
Public Class Admin
Private Sub MitarbeiterBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MitarbeiterBindingNavigatorSaveItem.Click
Me.Validate()
Me.MitarbeiterBindingSource.EndEdit()
Me.MitarbeiterTableAdapter.Update(Me.ZefDataSet.Mitarbeiter)
End Sub
Private Sub Admin_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
->TODO: Diese Codezeile lädt Daten in die Tabelle ZefDataSet.Mitarbeiter. Sie können sie bei Bedarf verschieben oder entfernen.
Me.MitarbeiterTableAdapter.Fill(Me.ZefDataSet.Mitarbeiter)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Datensatz As New Object
Datensatz = Me.ZefDataSet.Mitarbeiter.FindByPersonalnummer(Me.TextBox1.Text)
If Datensatz Is Nothing Then
MsgBox(Personalnummer nicht vorhanden!)
Exit Sub
Else
->Me.MitarbeiterBindingSource.MoveNext()
->MsgBox(Me.MitarbeiterBindingSource.IndexOf(Datensatz.Personalnummer))
Me.MitarbeiterBindingSource.Position = ???->Index der gesuchten Personalnummer
End If
End Sub
End Class
Aufgabe: es soll anhand der Personalnummer ein Datensatz zum bearbeiten angezeigt werden.
Es ist kein Problem die Position des Datensatzes im DataSet anhand der Personalnummer (Primärschlüssel) zu finden:
Me.ZefDataSet.Mitarbeiter.FindByPersonalnummer(Me.TextBox1.Text).ID
Leider entspricht diese ID (Autowert) nicht der Position im BindingSource-Objekt. Zumindest nicht, wenn Datensätze gelöscht wurden und dazwischen ID's fehlen.
Das BindingSource-Objekt kennt auch nicht die Methode FindByPersonalnummer, sondern nur MoveNext, MovePrevious, Position =, usw.
Wie kann ich das BindingSource-Objekt dazu bringen, den im DataSet gesuchten Datensatz anzuzeigen?
Me.MitarbeiterBindingSource.Position = ???
Für die Ergänzung des Codes an der Stelle ??? wäre ich sehr dankbar!