tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
171
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Rene42 Rene42 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Beiträge
    202
    Hi Leute,

    ja ich weiß schon wieder ich. Nachdem ich zuletzt einige Fortschrite mit meinem Programm gemacht habe, bin ich nun wieder an einer STelle wo ich nicht genau weiß wie es weitergehen soll.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    
     Dim con As New MySql.Data.MySqlClient.MySqlConnection
            Dim cmd As New MySql.Data.MySqlClient.MySqlCommand
            Dim reader As MySql.Data.MySqlClient.MySqlDataReader
            con.ConnectionString = "Data Source=localhost;" _
              & "Initial Catalog=Doppelkopf;UID=root;password=Re2209ne"
            cmd.Connection = con
            con.Open()
            'Alle Betroffenen CoBoS und Rabus auflisten auflisten
            Dim CoBo() As ComboBox = {Me.CoBo01, Me.CoBo02, Me.CoBo03, Me.CoBo04, Me.CoBo05}
            Dim RaBu() As RadioButton = {Me.RaBuRe01, Me.RabuRe02, Me.RaBuRe03, Me.RaBuRe04, Me.RaBuRe05}
            'Nun in einer Schleife jeden Spieler durchgehen
            Dim n As Integer = 0
            Do
                'Den Geber bei 5 Spielern überspringen
                If Me.TSMFivePlayer.Checked And n = Geber Then n = n + 1
                'Hat der Spieler gewonnen?
                Dim Win As Boolean = False
                If RaBu(n).Checked And Me.RaBuSiegRe.Checked Then Win = True
                If RaBu(n).Checked = False And Me.RaBuSiegContra.Checked Then Win = True
                'Die alten Daten in den Reader laden
                cmd.CommandText = "SELECT * FROM Spieler WHERE name='" & CoBo(n).SelectedItem & "'"
                reader = cmd.ExecuteReader()
                reader.Read()                       
                'Nun die Punkte festelgen +bei Sieg -bei Verlust
                Dim P As Integer
                If Win Then
                    P = reader("Punkte") + Pkt
                Else
                ---->    P = reader("Punkte") - Pkt
                End If
                Dim Spiele As Integer = reader("Spiele") + 1
                Dim Siege As Integer = reader("Siege")
                'Siege erhöhen, falls Gewinn
                If Win Then Siege = Siege + 1
                'Reader vernichten
                reader.Close()
                'Nun die Punkte und Spiele updaten
                cmd.CommandText = "UPDATE Spieler SET Punkte='" & P & "', Spiele='" & Spiele & "', Siege='" & Siege & "'"
                cmd.ExecuteNonQuery()
                n = n + 1
            Loop Until n = CoBo.Length
            con.Close()

    In der markierten Zeile meldet der Kompiler einen Fehler, nämlilch man könnte auf kein Feld des Reader zugreifen die Read Funktion des Reader aufgerufen wurde. Dies versteh ich nun nicht, da ich ja reader.Read() ausführe. Weiß jemand, was ich falsch mache?

    Rene42
    Geändert von Rene42 (07.11.08 um 15:55 Uhr) Grund: Kampf den Rechschreibfehlern
     

  2. #2
    Avatar von JensG
    JensG JensG ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Gera (Thüringen)
    Beiträge
    517
    Hallo Rene,

    mal abgesehen vom sehr schlecht lesbaren Code...
    Schaue dir das mal on und schalte bei dir
    Option Strict auf ON


    ' // Daten lesen
    While reader.Read()

    MsgBox (reader.Item("Punkte").ToString)

    End While

    reader.Close()

    Gruß
    Jens
     
    Hilfreiche Posts bitte bewerten !

  3. #3
    Rene42 Rene42 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Beiträge
    202
    Dank dir erstmal, dass wieder so schnell reagiert wurde.

    Die schlechte Lesbarkeit des Codes ist mir auch schon aufgefallen, leider weiß ich nicht genau was dagegen zu tun ist, mir ist keine Methode bekannt VB Code hervorzuheben.

    Ich habe mit deinem Tipp den Fehler nun eingegrenzt. Es läuft darauf hinaus, dass
    der Ausdruck CoBo(n).SelectedItem in:
    Code :
    1
    2
    3
    4
    5
    
    Dim CoBo() As ComboBox = {Me.CoBo01, Me.CoBo02, Me.CoBo03, Me.CoBo04, Me.CoBo05}
    do
     CoBo(n).SelectedItem
     n=n+1
    loop until n=CoBo.length
    immer Nothing ist, obwohl in den zugehörigen ComboBoxen etwas ausgewählt ist.

    Mach nun alles mit OPTION strict, hab die Convert Funktion gnadenlos eingesetzt. Aber geholfen hat es auch nicht so wirklich.

    Rene
    Geändert von Rene42 (07.11.08 um 18:15 Uhr)
     

  4. #4
    Avatar von JensG
    JensG JensG ist offline Mitglied Platin
    Registriert seit
    Jun 2004
    Ort
    Gera (Thüringen)
    Beiträge
    517
    Hallo Rene,

    also die schlechte Lesbarkeit kannst du verbessern in dem
    du dir einen anderen Stil zulegt und den Code besser formatierst.

    Und obwohl ich die Codezeilen von dir ganz anders schreiben würde
    funktioniert das von dir gepostete bei mir.
    Zumindest wenn ich vor CoBo(n).SelectedItem mal zum Test ein MsgBox
    setze. Der Fehler muss woanders liegen.
    Wie selektierst du denn die Comboboxen ? Also wie wählst du die
    Einträge aus ? per Hand oder Programmcode ?
    Falls 2. zutrifft dann hoffentlich nicht per Texteigenschaft, denn dann ist
    SelectedItem wirklich Nothing.

    So kann man das auch schreiben:

    Code :
    1
    2
    3
    4
    5
    6
    
     
           Dim CoBo() As ComboBox = {Me.CoBo01, Me.CoBo02, Me.CoBo03, Me.CoBo04, Me.CoBo05}
     
            For i As Integer = 0 To CoBo.GetUpperBound(0)
                MsgBox(CoBo(i).SelectedItem)
            Next

    Jens
     
    Hilfreiche Posts bitte bewerten !

  5. #5
    Rene42 Rene42 ist offline Mitglied Gold
    Registriert seit
    Jan 2007
    Beiträge
    202
    Also der Witz, ist bei mir ja folgender, wenn ich eine Schleife programmiere, die mir immer den WErt der CoBoBox bei änderung ausgibt, bekomme ich auch immer etwas.

    Porbier ich es aber an obigen Quellcode, gibt es eine Fehlermeldung, weil die Variabel die gleiche Cobo.SelectedItem gesetzt wird leer ist.

    Hab das bereits mit Schritt für Schritt überprüft und schnall einfach nicht warum dort nichts ausgelesen wird, ist ziemlich frustrierend.

    Zu deiner Frage, ich wähle den Eintrag per Hand aus, der lautet dann z.B. "Rene" vorher wurden die Eintragen per Code eingetragen.

    Leider weiß ich noch immer nicht genau woran es lag, aber nun geht es, wenn ich die Texteigenschaft der ComboBox nehme...
    Geändert von Rene42 (08.11.08 um 10:07 Uhr)
     

Ähnliche Themen

  1. Problem mit meinem RSS Reader
    Von H4nSolo im Forum PHP
    Antworten: 3
    Letzter Beitrag: 09.04.10, 10:06
  2. Antworten: 8
    Letzter Beitrag: 14.03.10, 14:40
  3. Adobe Reader 8 Professional Problem
    Von sight011 im Forum Sonstige Grafik-Programme
    Antworten: 3
    Letzter Beitrag: 08.09.09, 13:25
  4. Und noch ein Outlook Problem diesmal mit drucken von Anhängen
    Von Silvercreast im Forum Office-Anwendungen
    Antworten: 0
    Letzter Beitrag: 27.10.05, 07:28
  5. Noch eine Frage diesmal Datenbank
    Von Stephan Boettcher im Forum Visual Basic 6.0
    Antworten: 24
    Letzter Beitrag: 26.01.05, 19:09