none
Microsoft Visual Express 2012 mit Access Datenbank Darstellungs-, und ComboBox Probleme RRS feed

  • Frage

  • Hallo zusammen,

    zum dem Darstellungsproblem:

    Ich habe ein Visual Basic Programm programmiert und dieses Programm soll Kommazahlen in eine Datenbank schreiben. Leider funktioniert dies nicht. Die Zahlen werden nur gerundet und dann in der Datenbank angezeigt. Welche Einstellungen muss ich sowhol im Programm als auch in der Datenbank vornehmen damit die Kommazahlen angezeigt werden? Die Variabeln werden als Double dklariert.

    zu dem ComboBox Problem:

    Ich habe eine ComboBox die Daten aus der Access Datenbank hat (Mitarbeitername). Nun möchte ich die Daten nach dem Benutzernamen laden und habe mir folgenden Code zurecht geschrieben. Bei dem Unterprogramm Daten1 wird nach dem Mitarbeiternamen gefiltert und dann der Username geladen. In dem zweiten Unterprogramm wird dann der Username benutzt um die restlichen Daten zu laden. Es funktioniert auch alles einwandfrei. Leider wird aber die ComboBox nach der ersten Klicken auf einen Namen geleert. Woran kann dies liegen ?

    Public Sub Daten1()
            'Überprüfen ob Mitarbeitername vorhanden ist und laden des Usernamens
            Dim MA_Name_t As String
            MA_Name_t = ComboBox1.Text
            Try
                Login1TableAdapter1.FillByMitarbeitername(Mitarbeiter1.Login1, MA_Name_t.ToUpper())
    
                Dim check = Mitarbeiter1.Login1.Count = 1
    
                If (check) Then
                    ' Mitarbeiter ist vorhanden
                    UserName_t = Mitarbeiter1.Login1.First.Username
                    'Trace.WriteLine(mitarbeiterName)
                    'MessageBox.Show("1. " & UserName_t)
                Else
                    ' Mitarbeiter ist nicht vorhanden und Anwendung beenden
                    MessageBox.Show("Mitarbeitername konnte nicht in Usernamen umgewandelt werden!")
                    Exit Sub
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
        Public Sub Daten2()
            'Laden der Daten vom Usernamen
            Try
                LoginTableAdapter1.FillByUsername(Mitarbeiter1.Login, UserName_t.ToUpper())
    
                Dim check = Mitarbeiter1.Login.Count = 1
    
                If (check) Then
                    ' Mitarbeiter ist vorhanden
                    TextBox1.Text = Mitarbeiter1.Login.First.Mitarbeitername
                    TextBox2.Text = Mitarbeiter1.Login.First.Username
                    TextBox3.Text = Mitarbeiter1.Login.First.Passwort
                    recht1 = Mitarbeiter1.Login.First.Tätigkeitsnachweis
                    recht2 = Mitarbeiter1.Login.First.Benutzerverwaltung
                    recht3 = Mitarbeiter1.Login.First.Auswertung
                    recht4 = Mitarbeiter1.Login.First.Arbeitszeiten_eintragen
                    recht5 = Mitarbeiter1.Login.First.Qualitätsbeurteilung
                    recht6 = Mitarbeiter1.Login.First.Eigene_Einstellungen
                    gesperrt_t = Mitarbeiter1.Login.First.Gesperrt
                    'Trace.WriteLine(mitarbeiterName)
                    'MessageBox.Show("1. " & TextBox1.Text & " 2. " & TextBox2.Text & " 3. " & TextBox3.Text & " 4. " & recht1 & " 5. " & recht2 & " 6. " & recht3 & " 7. " & recht4 & " 8. " & recht5 & " 9. " & recht6 & " 10. " & gesperrt_t)
                Else
                    ' Mitarbeiter ist nicht vorhanden und Anwendung beenden
                    MessageBox.Show("Mitarbeiter Daten sind nicht vorhanden!")
                    Exit Sub
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
            If recht1 = "True" Then
                CheckBox1.Checked = True
            End If
            If recht2 = "True" Then
                CheckBox2.Checked = True
            End If
            If recht3 = "True" Then
                CheckBox3.Checked = True
            End If
            If recht4 = "True" Then
                CheckBox4.Checked = True
            End If
            If recht5 = "True" Then
                CheckBox5.Checked = True
            End If
            If recht6 = "True" Then
                CheckBox6.Checked = True
            End If
            If gesperrt_t = "True" Then
                CheckBox7.Checked = True
            End If
        End Sub
    
        Private Sub ComboBox1_TextChanged(sender As Object, e As EventArgs) Handles ComboBox1.TextChanged
            Daten1()
            Daten2()
        End Sub

    Gruß,

    Manuel

    Montag, 13. Juli 2015 10:05

Antworten

  • Du bindest die ComboBox an deine Login-Tabelle. Beim Initialisieren werden ALLE Mitarbeiter geladen, daher siehst du auch alle Daten angezeigt.

    Nachdem du einen Mitarbeiter auswählst, wird vermutlich deine Methode Daten1() aufgerufen welche wiederum 

     Login1TableAdapter1.FillByMitarbeitername(Mitarbeiter1.Login1, MA_Name_t.ToUpper())
    aufruft. In der Tabelle Login ist jetzt NUR noch der ausgewählte Mitarbeiter zu sehen weil du nur nach diesem filterst. Durch die Datenbindung ist das natürlich sofort in der ComboBox sichtbar.

    • Als Antwort markiert _-Manuel-_ Dienstag, 14. Juli 2015 14:41
    Dienstag, 14. Juli 2015 14:35

Alle Antworten

  • Hallo Manuel,
    zu deinem Darstellungsproblem:
    Welche Datentyp wird in der Datenbank verwendet und welches DBS verwendest du?

    zu deinem ComboBox_Problem:
    Hier postest du Code der Funktioniert und der mit der ComboBox nichts zu tun hat. Zeig doch bitte mal die Codestellen, an denen du die ComboBox füllst.

    Ah, btw. solltest du deine Variablen typisieren. Das machst du zum Beispiel bei "Dim check = ..." nicht.


    Viele Grüße Holger M. Rößler

    Montag, 13. Juli 2015 10:56
  • Hallo Holger,

    zum Darstellungsproblem:

    Die Datenbank ist eine .mdb Datei (leider schon etwas älter). Und in den jeweiligen Spalten werden die Daten mit der Feldgröße : Double deklariert. Dezimalstellenanzeige ist auf 1.

    Ich habe nun nochmal getestet und habe festgestellt das die Kommazahl nicht in der Datenbank ankommt. Es liegt also an der Übertragung. Ich füge die Daten der Datenbank mit einem TableAdapter über Insert zu und die Variabeln sind als Double deklariert? Habe ich etwas falsch eingestellt oder vergessen?

    Das Problem war die Übertragung. Der TableAdapter war nicht auf dem aktuellsten Stand. Zusätzlich waren die Variabeln als Integer übetragen worden. Problem ist nun gelöst.

    zu dem Problem mit der ComboBox:

    Ich habe die Combox mit dem Generator gefüllt. Wenn ich nun allerdings einen Mitarbeiternamen auswähle und dann denn Programmcode ausführe durch klicken auf den Button, wird nur noch der ausgewählte Mitarbeitername angezeigt in der ComboBox als Auswahl.

    Hoffe das hilft weiter. Ok mit dem Variabeln Typisieren werde ich nochmal vornehmen.

    Gruß,

    Manuel





    • Bearbeitet _-Manuel-_ Montag, 13. Juli 2015 12:10 Darstellungsproblem gelöst
    Montag, 13. Juli 2015 11:04
  • Hier nochmal Bilder zu dem Problem.

    Wenn Button noch nicht geklickt ist.

    Nachdem Button geklickt wurde.

    Programmcode (siehe 1. Post)

    Dienstag, 14. Juli 2015 14:11
  • Du bindest die ComboBox an deine Login-Tabelle. Beim Initialisieren werden ALLE Mitarbeiter geladen, daher siehst du auch alle Daten angezeigt.

    Nachdem du einen Mitarbeiter auswählst, wird vermutlich deine Methode Daten1() aufgerufen welche wiederum 

     Login1TableAdapter1.FillByMitarbeitername(Mitarbeiter1.Login1, MA_Name_t.ToUpper())
    aufruft. In der Tabelle Login ist jetzt NUR noch der ausgewählte Mitarbeiter zu sehen weil du nur nach diesem filterst. Durch die Datenbindung ist das natürlich sofort in der ComboBox sichtbar.

    • Als Antwort markiert _-Manuel-_ Dienstag, 14. Juli 2015 14:41
    Dienstag, 14. Juli 2015 14:35
  • Hallo Desert-Fox,

    danke für deinen Tipp. Habe das Problem nun gelöst indem ich das DataSet Mitarbeiter nochmal eingebunden habe. Nun funktioniert es einwandfrei.

    Danke euch allen!

    Thread kann nun geschlossen werden.

    Gruß,

    Manuel

    Dienstag, 14. Juli 2015 14:40