ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
171
171
EMPFEHLEN
-
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?
Rene42Geändert von Rene42 (07.11.08 um 15:55 Uhr) Grund: Kampf den Rechschreibfehlern
-
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ß
JensHilfreiche Posts bitte bewerten !
-
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:
immer Nothing ist, obwohl in den zugehörigen ComboBoxen etwas ausgewählt ist.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
Mach nun alles mit OPTION strict, hab die Convert Funktion gnadenlos eingesetzt. Aber geholfen hat es auch nicht so wirklich.
ReneGeändert von Rene42 (07.11.08 um 18:15 Uhr)
-
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
JensHilfreiche Posts bitte bewerten !
-
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
-
Problem mit meinem RSS Reader
Von H4nSolo im Forum PHPAntworten: 3Letzter Beitrag: 09.04.10, 10:06 -
Schon wieder ein Problem diesmal (headers already sent)
Von danyh im Forum PHPAntworten: 8Letzter Beitrag: 14.03.10, 14:40 -
Adobe Reader 8 Professional Problem
Von sight011 im Forum Sonstige Grafik-ProgrammeAntworten: 3Letzter Beitrag: 08.09.09, 13:25 -
Und noch ein Outlook Problem diesmal mit drucken von Anhängen
Von Silvercreast im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 27.10.05, 07:28 -
Noch eine Frage diesmal Datenbank
Von Stephan Boettcher im Forum Visual Basic 6.0Antworten: 24Letzter Beitrag: 26.01.05, 19:09





Zitieren
Login





