Har fortfarande mycket problem att komma överens med VB.net, har nu hållit på i många timmar att få en listbox uppdaterad Du har i stort sett redan svarat på frågan själv :)Vb.net och Access
allt fungerar om jag avslutar programmet och startar om det, då finns all data uppdaterad, men hur får jag att den uppdaterar listboxen så länge programmet är igång. Någonting helt uppenbart verkar jag ha missat
Jag skickar med hela listningen om det kan hjälpa er att hjälpa mig
Kanske måste förklara hur formuläret ser ut består av en listbox där "Kategori" från databasen hamnar sen en textbox som fylls i beroende på vad du klickar på i listboxen(fylls i med kategorinamnet därifrån) och sen finns en textbox för anteckningar.
Har även en egen class för att ladda idnr till listboxen (mylist)
Allt fungerar ju egentligen , men när jag skapar en ny post eller uppdaterar en redan skapad post så får jag det inte märkas i listboxen
när jag skapar en ny post så ökar jag på antalet "Antalkategorirader" med 1 men då finns inte det antalet poster att läsa in i listboxen
så helt klar något har jag missat här, hoppas någon kan reda ut det åt mig
Public Class Kategori
Dim BoolNyPost As Boolean
Dim HoldAktuellPost As Integer
Dim TmpTxtKategori As String
Dim TmpTxtAnteckningar As String
Private Sub Kategori_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim Screen As System.Drawing.Rectangle
Screen = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea()
Me.Top = (Screen.Height \ 2) - (Me.Height \ 2)
Me.Left = (Screen.Width \ 2) - (Me.Width \ 2)
Call Ladda_Kategorier()
Call Ladda_LstList()
Call Knappar(True)
End Sub
Private Sub Ladda_LstList()
Dim IdNr As Long
Dim Namn As String
For i = 0 To AntalKategoriRader - 1
IdNr = DsKategori.Tables("RwMat").Rows(i).Item("IDKategori")
Namn = DsKategori.Tables("RwMat").Rows(i).Item("Kategori")
LstKategorier.Items.Add(New MyList(Namn, IdNr))
Next
LstKategorier.SelectedIndex = 0
End Sub
Private Sub LstKategorier_DoubleClick(sender As Object, e As EventArgs) Handles LstKategorier.DoubleClick
Beep()
Call Knappar(False)
End Sub
Private Sub LstKategorier_SelectedIndexChanged(sender As Object, e As EventArgs) Handles LstKategorier.SelectedIndexChanged
Dim AAA
Dim mList As MyList
mList = LstKategorier.Items(LstKategorier.SelectedIndex)
KategoriIndex = mList.ItemData
KategoriAktuellPost = LstKategorier.SelectedIndex
Label1.Text = mList.Name
Label2.Text = mList.ItemData
Label3.Text = LstKategorier.SelectedIndex
'LstKategorier.SelectedIndex =LstKategorier.
Call NavigateRecords()
End Sub
Private Sub NavigateRecords()
Dim cb As New OleDb.OleDbCommandBuilder(DaKategori)
If IsDBNull(DsKategori.Tables("Rwmat").Rows(KategoriAktuellPost).Item("Kategori")) = False Then
TxtKategori.Text = DsKategori.Tables("Rwmat").Rows(KategoriAktuellPost).Item("Kategori")
End If
If IsDBNull(DsKategori.Tables("Rwmat").Rows(KategoriAktuellPost).Item("KategoriAnteckningar")) = False Then
TxtAnteckningar.Text = DsKategori.Tables("Rwmat").Rows(KategoriAktuellPost).Item("KategoriAnteckningar")
End If
'DaKategori.Update(DsKategori, "RwMat")
End Sub
Private Sub Knappar(KategoriKnappstatus)
CmdNy.Visible = KategoriKnappstatus
CmdRadera.Visible = KategoriKnappstatus
CmdUppdatera.Visible = Not KategoriKnappstatus
CmdAvbryt.Visible = Not KategoriKnappstatus
TxtKategori.ReadOnly = KategoriKnappstatus
TxtAnteckningar.ReadOnly = KategoriKnappstatus
LstKategorier.Enabled = KategoriKnappstatus
End Sub
Private Sub TxtSkriv()
End Sub
Private Sub CmdUppdatera_Click(sender As Object, e As EventArgs) Handles CmdUppdatera.Click
If KategoriAktuellPost < 0 Then Exit Sub
If boolNyPost = True Then
Call SkapaNyPost()
Exit Sub
End If
Dim cb As New OleDb.OleDbCommandBuilder(DaKategori)
DsKategori.Tables("RwMat").Rows(KategoriAktuellPost).Item("Kategori") = TxtKategori.Text
DsKategori.Tables("RwMat").Rows(KategoriAktuellPost).Item("KategoriAnteckningar") = TxtAnteckningar.Text
DaKategori.Update(DsKategori, "RwMat")
Call Ladda_LstList()
NavigateRecords()
Call Knappar(True)
End Sub
Private Sub SkapaNyPost()
Dim cb As New OleDb.OleDbCommandBuilder(DaKategori)
Dim dsNyPost As DataRow
dsNyPost = DsKategori.Tables("RwMat").NewRow
dsNyPost.Item("Kategori") = TxtKategori.Text
dsNyPost.Item("kategoriAnteckningar") = TxtAnteckningar.Text
DsKategori.Tables("RwMat").Rows.Add(dsNyPost)
DaKategori.Update(DsKategori, "RwMat")
AntalKategoriRader = DsKategori.Tables("RwMat").Rows.Count
DaKategori.Update(DsKategori, "RwMat")
AntalKategoriRader = AntalKategoriRader + 1
Call Ladda_LstList()
Call NavigateRecords()
Call Knappar(True)
End Sub
Private Sub CmdNy_Click(sender As Object, e As EventArgs) Handles CmdNy.Click
BoolNyPost = True
HoldAktuellPost = KategoriAktuellPost
TmpTxtKategori = TxtKategori.Text
TmpTxtAnteckningar = TxtAnteckningar.Text
TxtKategori.Text = ""
TxtAnteckningar.Text = ""
Call Knappar(False)
'Call TxtWrite(False)
End Sub
Private Sub CmdAvbryt_Click(sender As Object, e As EventArgs) Handles CmdAvbryt.Click
TxtKategori.Text = TmpTxtKategori
TxtAnteckningar.Text = TmpTxtAnteckningar
Call Knappar(True)
End Sub
Private Sub Ladda_Kategorier()
AntalKategoriRader = 0
con.Open()
SqlKategori = "SELECT * from Kategori order by kategori"
DaKategori = New OleDb.OleDbDataAdapter(SqlKategori, con)
DaKategori.Fill(DsKategori, "RwMat")
AntalKategoriRader = DsKategori.Tables("RwMat").Rows.Count
con.Close()
End Sub
End ClassSv: Vb.net och Access
"när jag skapar en ny post så ökar jag på antalet "Antalkategorirader" med 1"
Varför gör du det? Litar du inte på att DsKategori.Tables("RwMat").Rows.Count är korrekt?