den Fehler fand ich jetzt auch.
Liegt an diesem Unfug: Private Sub cmdFindPhoneNr_Click(sender As Object, e As EventArgs) Handles _
cmdFindPhoneNr.Click
Dim FindeDenKunden As New frmKundenBearbeiten
Dim Eingabe As Integer
Try
Eingabe = Convert.ToInt32(txtFrmMainKundennummer.Text)
Catch ex As Exception
Eingabe = Nothing
End Try
If Eingabe = Nothing Then
MessageBox.Show("Keine gültige Zahl eingegeben")
End If
Dim gefundenKunden = FindeDenKunden.KundenFinden(Eingabe)
If gefundenKunden Is Nothing Then
MessageBox.Show("Kein Kunden gefunden")
Else
lblFrmMainKundenTeleNr.Text = gefundenKunden.Telefon
End If
End Sub Du erzeugst ein new frmKundenbearbeiten, zeigst es aber nie an. Logisch, dass dessen Form_Load niemals durchlaufen wird, und daher dessen Dataset nicht registriert.
Aber der Unfug ist noch unfugiger, denn wieso überhaupt hast du die TelefonFinden-Methode in frmKundenBearbeiten, wenn du sie doch in Form1 benötigst?
Und noch unfugiger: Die Methode ist ja eh unnötig, denn wenn man sich die Kunden im DGV anzeigt, dann hat man den Kunden schneller gefunden, als man da in die Form1-Textbox eintippen kann - sagte ich ja schon.
Noch mehr Unfug: Private Sub KundenEingebenToolStripMenuItem_Click(sender As Object, e As _
EventArgs) Handles KundenEingebenToolStripMenuItem.Click
Dim KundenBearbeiten As New frmKundenBearbeiten
If KundenBearbeiten Is Nothing OrElse frmKundenBearbeiten.IsDisposed _
Then
KundenBearbeiten = New frmKundenBearbeiten
End If
If Not KundenBearbeiten.Visible Then
KundenBearbeiten.Show(Me)
End If
If KundenBearbeiten.WindowState = FormWindowState.Minimized Then
KundenBearbeiten.WindowState = FormWindowState.Normal
End If
End Sub Was soll das alles? erst ein neues frmKundenBearbeiten erzeugen, dann abfragen, ob es Nothing oder disposed ist? Kann ich dir gleich sagen: Wenn es neu erzeugt ist, ist es nicht Nothing, und auch noch nicht disposed.
Und natürlich ists nicht Visible, denn es ist ja noch nicht angezeigt.
Und den Windowstate kann man im Designer anlegen.
Also hier mal Form1 bisserl auf die notwendigen Zeilen reduziert:Imports System.IO
Public Class Form1
Private _kundendaten As New FileInfo("Kundendaten.xml")
Sub New()
InitializeComponent()
Me.AlignOnTop()
DataSet1.DataFile(_kundendaten.FullName).Register(Me, True).Fill()
End Sub
Private Sub KundenEingebenToolStripMenuItem_Click(sender As Object, e As _
EventArgs) Handles KundenEingebenToolStripMenuItem.Click
frmKundenBearbeiten.Show(Me)
End Sub
Private Sub cmdFindPhoneNr_Click(sender As Object, e As EventArgs) Handles _
cmdFindPhoneNr.Click
Dim Eingabe = 0
If Integer.TryParse(txtFrmMainKundennummer.Text, Eingabe) Then
Dim rwKunde = DataSet1.Kunde.FindByKundennummer(Eingabe)
If rwKunde.NotNull Then
lblFrmMainKundenTeleNr.Text = rwKunde.Telefon
Return
End If
End If
MessageBox.Show("Keine gültige Zahl eingegeben oder Kein Kunden gefunden")
End Sub
End Class Zum Telefonnummer suchen wird jetzt das Dataset genutzt - nicht ein anneres Form, wo auch nur dasselbe Dataset drinne ist.
Und hier nochmal das annere FormPublic Class frmKundenBearbeiten
Sub New()
InitializeComponent()
Me.AlignOnTop()
DataSet1.Register(Me, False)
End Sub
Private Sub SpeichernToolStripMenuItem_Click(sender As Object, e As _
EventArgs) Handles SpeichernToolStripMenuItem.Click
DataSet1.Save(Me)
End Sub
Private Sub KundeTelToolStripMenuItem_Click(sender As Object, e As _
EventArgs) Handles KundeTelToolStripMenuItem.Click
Dim s = Microsoft.VisualBasic.InputBox("Kundennr eingeben")
If s = "" Then Return
Dim ID = Integer.Parse(s)
KundeBindingSource.MoveTo(ID)
End Sub
End Class Das befüllt jetzt nicht mehr selbst, und die Registrierung erfolgt auch bereits in Sub New, nicht erst im Form_Load. Beachte, dass hier das Ergebnis nicht an ein Label zugewiesen wird, sondern das Ergebnis besteht darin, dass die BindingSource auf den gefundenen Kunden eingestellt wird.
Dementsprechen hopft nun das DGV, aber du könntest auch ein Label an KundeBindingSource.Telefon binden, dann würde dieses Label immer das Telefon des grad angewählten Kunden anzeigen.
(Rechtschreibfehler urheberrechtlich geschützt)
Beitrag wurde zuletzt am 24.06.14 um 14:23:05 editiert. |