vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Property - Wertrückgabe aus ShowDialog() 
Autor: S_N
Datum: 12.03.11 19:33

Hallo Leute,

ich bin grad am verzweifeln ... ich mache eine Form mit ShowDialog() auf, gebe in der Form eine Variable über ein Property zurück und wenn die aufrufende Form die Variable abfragt ist diese wieder auf 0. Ich habe keine Ahnung warum, ich habe nen ähnlichen Code für ein anderes Forumlar, da klappt das super ... vielleicht kann mir kurz wer nen Tipp geben.

Der Aufruf aus Form1 ...
   Private Sub cmdKundeNeu_Click(ByVal sender As System.Object, ByVal e As _
     System.EventArgs) Handles cmdKundeNeu.Click
        Dim frm As New frmQuickAnlage
        Dim nID As Integer
 
        frm.AnlageArt = 0
 
        Dim res As DialogResult = frm.ShowDialog()
            If res = Windows.Forms.DialogResult.OK Then
                nID = frmQuickAnlage.NeuID
                'Hier bekomme ich immer wieder 0 zurück
                If nID > 0 Then
                    'Das ist die ID des neu angelegten Kunden -> Daten 
                    ' anzeigen und ID in Privater Var. merken
                    lKdID = nID
 
                    Call FillKdFields(nID)   'Diese Funktion füllt die Felder 
                    ' mit den Daten aus der Neuanlage
                End If
            Else
                'Kein kunde wurde angelegt
            End If
 
            frm.Dispose()
    End Sub
Und hier der Code aus dem Formular was die Variable erzeugt Problem
muss ja eigentlich entweder in der Property oder in cmdAnlage liegen
Public Class frmQuickAnlage
    Private nAnlageArt As Integer       '0=Kundenanlage, 1=Anlage anlegen, 
    ' 2=Material anlegen
    Private nNeuID As Long           'hier steht die Neu angelegte ID, wenn 
    ' eine Neuanlage durchgeführt wurde
 
    Public Property AnlageArt As Integer
        Get
            Return nAnlageArt
        End Get
        Set(ByVal value As Integer)
            nAnlageArt = value
        End Set
    End Property
 
    Public Property NeuID As Integer
        Get
            Return nNeuID
        End Get
        Set(ByVal value As Integer)
 
        End Set
    End Property
 
    Private Sub cmdAnlage_Click(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles cmdAnlage.Click
 
        Dim nNrNeu As Integer
        Dim sSqlPruef As String
        Dim dr As DataRow
        Dim kd As New KundenNeu
        Dim sTable As String
        Dim sSqlAnlage As String
        Dim nErg As Integer
        Dim nID As Integer
 
        nNrNeu = Val(Me.txtNr.Text)
 
 
        Select Case nAnlageArt
            Case 0
                'Kunde soll angelegt werden 
                sSqlPruef = "SELECT * FROM kunden WHERE kdnr=" & nNrNeu
                sTable = "kunden"
                sSqlAnlage = "INSERT INTO kunden (kdnr, kd_name) VALUES (" & _
                  nNrNeu & ", '" & Me.txtBez.Text & "')"
            Case 1
                'Anlage anlegen
                sSqlPruef = "SELECT * FROM anlagen WHERE nr=" & nNrNeu
                sTable = "anlagen"
                sSqlAnlage = "INSERT INTO anlagen (nr, bez) VALUES (" & nNrNeu _
                  & ", '" & Me.txtBez.Text & "')"
            Case 2
                'Material Anlegen
                sSqlPruef = "SELECT * FROM stoffe WHERE nr=" & nNrNeu
                sTable = "stoffe"
                sSqlAnlage = "INSERT INTO stoffe (nr, bez) VALUES (" & nNrNeu & _
                  ", '" & Me.txtBez.Text & "')"
            Case Else
                MsgBox("Not implemented")
                Exit Sub
 
        End Select
 
        dr = kd.FillDataRowWithSQL(sSqlPruef, sTable)
 
        If dr Is Nothing Then
            'Nr noch nicht vorhanden, weiter mit der Anlage
            nErg = kd.UpdateWithSql(sSqlAnlage)
            If nErg > 0 Then
                'Anlage hat geklappt, jetzt nur noch die neue ID des 
                ' Datensatzes ermitteln und zurückgeben
                System.Threading.Thread.Sleep(850)
                dr = kd.FillDataRowWithSQL(sSqlPruef, sTable)
 
                If dr IsNot Nothing Then
                    nID = dr("id")
                Else
                    MsgBox("Neu angelegter Datensatz kann nicht automatisch" & _
                      "gefunden werden, bitte suchen Sie diesen manuell")
                End If
'nNeuID hat beim Debuggen auch nen Wert ... 
                'ID zurückgeben und raus
                nNeuID = nID
 
                Me.DialogResult = Windows.Forms.DialogResult.OK
                Me.Close()
 
            Else
                MsgBox("Anlage war nicht erfolgreich")
                Me.Close()
            End If
 
        Else
            'Nr schon vorhanden meldung und erstma raus
            MsgBox("Bitte vergeben Sie eine eindeutige Nummer")
            Me.txtNr.Focus()
            Exit Sub
        End If
 
    End Sub
End Class
Vielen Dank schonmal.

mfg
Sebastian
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Property - Wertrückgabe aus ShowDialog()1.578S_N12.03.11 19:33
Re: Property - Wertrückgabe aus ShowDialog()1.014ModeratorDaveS12.03.11 19:40
Re: Property - Wertrückgabe aus ShowDialog()950S_N12.03.11 19:45

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel