bei meinem kleinen lernprogramm greife ich auf eine Acces(2000) Datenbank zu. Dabei
versuche ich Daten einzufügen/zu ändern /löschen usw.
nun habe ich das Problem das der Zeiger von ListBox immer außerhalb des Bereichs liegt außer wenn ich den ersten Datensatz anklicke . Die Grundzüge des Programms habe ich aus den Buch Visual Basic für Einsteiger da funktioniert es
Public Class Lottogewinn
Dim con As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim reader As OleDb.OleDbDataReader
Dim ziehungsnummer As New ArrayList
Dim gesamtziehung(2500) As Ziehung
' classe zum experementieren
Public Class Ziehung
Public ziehungszähler As Integer
Public datum As String
Public jahr As Integer
Public woche As Integer
Public ziehungstag As String
Public zahl_1 As Integer
Public zahl_2 As Integer
Public zahl_3 As Integer
Public zahl_4 As Integer
Public zahl_5 As Integer
Public zahl_6 As Integer
Public zusatzzahl As Integer
End Class
Private Sub Lottogewinn_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
con.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\users\bernd\programmierung\übungen\Bernd_lotto1.mdb"
cmd.Connection = con
End Sub
Private Sub einlesen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles einlesen.Click
füllen()
End Sub
Private Sub füllen()
'diese sub gibt es beim Bsp im Buch nicht
Dim con As New OleDb.OleDbConnection
Dim cmd As New OleDb.OleDbCommand
Dim reader As OleDb.OleDbDataReader
Dim anzahl As Integer
anzahl = 0
con.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\users\bernd\programmierung\übungen\Bernd_lotto1.mdb"
cmd.Connection = con
cmd.CommandText = "select * from Lotto_Zahlen_gesamt"
con.Open()
reader = cmd.ExecuteReader()
anzahl = 0
Try
Do While reader.Read()
Dim einzelziehung As New Ziehung
einzelziehung.ziehungszähler = Convert.ToInt32(reader("Ziehungszähler"))
einzelziehung.datum = Convert.ToString(reader("Datum"))
einzelziehung.jahr = Convert.ToInt32(reader("Jahr"))
einzelziehung.woche = Convert.ToInt32(reader("Woche"))
einzelziehung.ziehungstag = reader("Ziehungstag")
einzelziehung.zahl_1 = Convert.ToInt32(reader("Zahl_1"))
einzelziehung.zahl_2 = Convert.ToInt32(reader("Zahl_2"))
einzelziehung.zahl_3 = Convert.ToInt32(reader("Zahl_3"))
einzelziehung.zahl_4 = Convert.ToInt32(reader("Zahl_4"))
einzelziehung.zahl_5 = Convert.ToInt32(reader("Zahl_5"))
einzelziehung.zahl_6 = Convert.ToInt32(reader("Zahl_6"))
einzelziehung.zusatzzahl = Convert.ToInt32(reader("Zusatzzahl"))
gesamtziehung(anzahl) = einzelziehung
anzahl = anzahl + 1
Loop
Catch ex As Exception
MsgBox(ex.Message)
End Try
reader.Close()
con.Close()
MsgBox(" der Test" & gesamtziehung(100).ziehungszähler)
End Sub
Private Sub cdmSehen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cdmSehen.Click
alleSehen()
End Sub
Sub alleSehen()
Try
con.Open()
cmd.CommandText = "select * from Lotto_Zahlen_gesamt "
Ausgabe()
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
txtZiehungszähler.Text = ""
txtDatum.Text = ""
txtJahr.Text = ""
txtWoche.Text = ""
txtZiehungstag.Text = ""
txtZahl_1.Text = ""
txtZahl_2.Text = ""
txtZahl_3.Text = ""
txtZahl_4.Text = ""
txtZahl_5.Text = ""
txtZahl_6.Text = ""
txtZusatzzahl.Text = ""
End Sub
Sub Ausgabe()
reader = cmd.ExecuteReader()
ListBox1.Items.Clear()
Do While reader.Read()
ziehungsnummer.Clear()
ListBox1.Items.Add(reader("Ziehungszähler") & "_____" & reader("Datum") & "______" _
& reader("Jahr") & "______" & reader("Woche") & "_______" & reader("Ziehungstag") & "________" _
& reader("Zahl_1") & "______" & reader("Zahl_2") & "______" & reader("Zahl_3") & "______" & reader("Zahl_4") & "______" _
& reader("Zahl_5") & "______" & reader("Zahl_6") & "______" & reader("ZusatzZahl"))
ziehungsnummer.Add(reader("Ziehungszähler"))
Loop
reader.Close()
End Sub
Private Sub einfügen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles einfügen.Click
MsgBox(" der Test" & gesamtziehung(100).ziehungszähler)
Dim anzahl As Integer
If txtZiehungszähler.Text = "" Then
MsgBox("Bitte mindestens eine " _
& "Ziehungsnummer eintragen")
Exit Sub
End If
Try
con.Open()
cmd.CommandText = _
"insert into Lotto_Zahlen_gesamt " & _
"(Ziehungszähler, Datum, Jahr,Woche,Ziehungstag,Zahl_1,Zahl_2,Zahl_3,Zahl_4,Zahl_5,Zahl_6,ZusatzZahl) " & _
"values (" & _
txtZiehungszähler.Text & ", '" & CDate(txtDatum.Text) & "', " & txtJahr.Text & ", " & txtWoche.Text & ", '" & (txtZiehungstag.Text) & "', " & _
txtZahl_1.Text & ", " & txtZahl_2.Text & ", " & txtZahl_3.Text & ", " & txtZahl_4.Text & ", " & txtZahl_5.Text & ", " & txtZahl_6.Text & ", " & txtZusatzzahl.Text & " )"
'MsgBox(cmd.CommandText)
anzahl = cmd.ExecuteNonQuery()
If anzahl > 0 Then
MsgBox("Es wurde ein Datensatz eingefügt")
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
alleSehen()
End Sub
Private Sub ändern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ändern.Click
End Sub
Private Sub ListBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
Try
MsgBox("anfangswert" & ziehungsnummer(ListBox1.SelectedIndex))
'wert Ziehungsnummer 2021 wenn man den 1. Listeneintrag auswählt
'in der Datenbank 2021 Datensätz vorhanden
'ansonsten Fehlermeldung
con.Open()
cmd.CommandText = _
"select * from Lotto_Zahlen_gesamt " _
& "where Ziehungszähler = " _
& ziehungsnummer(ListBox1.SelectedIndex)
MsgBox("wert nach select" & ziehungsnummer(ListBox1.SelectedIndex))
'letzte Datensatz wird ausgegeben
reader = cmd.ExecuteReader()
reader.Read()
txtZiehungszähler.Text = reader("Ziehungszähler")
' txtDatum.Text = reader("Datum")
txtJahr.Text = reader("Jahr")
txtWoche.Text = reader("Woche")
txtZiehungstag.Text = reader("Ziehungstag")
txtZahl_1.Text = reader("Zahl_1")
txtZahl_2.Text = reader("Zahl_2")
txtZahl_3.Text = reader("Zahl_3")
txtZahl_4.Text = reader("Zahl_4")
txtZahl_5.Text = reader("Zahl_5")
txtZahl_6.Text = reader("Zahl_6")
txtZusatzzahl.Text = reader("ZusatzZahl")
reader.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
con.Close()
End Sub
End Class
ich verwende Windows 7 Ultimat 64 bit
ich weiß einfach nicht warum der Zeiger am Ende steht