02. januar 2004 - 14:26Der er
17 kommentarer og 1 løsning
Opdatering af list box
Jeg sidder og roder med en cd database. jeg har åbnet en form hvor jeg har kan slette cd'er og sange.
på formen er der 2 listboxe den ene hedder cd'er/cdtitler og den anden sang(e). Jeg har så en commando der sletter en cd og de tilhørende sange, men når jeg når til at ville slette sidste cd sletter den/opdaterer den ikke list2 (sang(e)).
Jeg har kommet til at lave et eller andet så den kun opdaterer list2 (sang(e)) når jeg klikker på en cd men. hvad gør jeg når list1 (cd navn/tittel) er tom
jeg vil gerne have den til at opdatere list2 (sang(e)) hvergang jeg har slettet en cd.
Det ville være meget nemmere hvis du smed noget kode herind.. Du skal sådan set, bare slette indholdet af listboksene med navn.Clear, og derefter genindlæse indholdet af databasen..
Sådan som jeg ser det, kan det gøres på 2 måde: 1) .Clear og geninslæs data fra databasen 2) Slet linien i listboksen der matcher titlen, via en for-next loop
"MsgBox i" er bare en test :).. slet den.. Så skal du bare ændre "List1" til navnet på din listbox. Navnet på den slettede post, skal indsættes i "mytitle".. navnet på variablen kan ændres, men ret det alle steder det bruges..
jeg har en en slet cd/sang(e) knap (Command1) på en af mine forme denne åbner en slet redige form med 2 listboxe (list1 indeh. cdnavn og list2 sang(e)) og 2 commando knapper slet cd og sang(e)(Command2) og slet sang(e) (command4)
koden der åbner formen slet/rediger Private Sub Command1_Click() Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim myString As String
Set con = New ADODB.Connection Set rs = New ADODB.Recordset
Do Until rs.EOF Form4.list1.AddItem rs("album_navn") Form4.list1.ItemData(Form4.list1.NewIndex) = rs("CDid") rs.MoveNext Loop
rs.Close con.Close Set rs = Nothing Set con = Nothing Form4.Command4.Enabled = False Form4.Command2.Enabled = False End Sub
Koden til list1 (indeh. cdnavn) Private Sub List1_Click() Dim con As ADODB.Connection Dim rs As ADODB.Recordset Dim myString As String Dim SQL As String Set con = New ADODB.Connection Set rs = New ADODB.Recordset Command2.Enabled = True myString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CdDatabase.mdb;Persist Security Info=False"
con.Open (myString)
SQL = "SELECT * FROM numre WHERE cdid = " & list1.ItemData(list1.ListIndex)
rs.Open SQL, con, adOpenDynamic
List2.Clear Do Until rs.EOF List2.AddItem rs("Tittel") List2.ItemData(List2.NewIndex) = rs("id") rs.MoveNext Loop
rs.Close con.Close Set rs = Nothing Set con = Nothing
End Sub
Når man klikker på en cd vises sangene i list2 kode list2 (sang(e)) Private Sub List2_Click() 'Setter knap til true Command4.Enabled = True End Sub
Og, er du sikker på at du har stavet rs("Tittel") rigtigt? Det staves jo "Titel" (2 T'er ialt).. du har så åbenbart stavet det sådan både her og i database.. hvilket er en god ting, ellers ville du få fejl :)
kode slet cd og sang(e) Private Sub Command2_Click() Dim sCon As String, oCon As New ADODB.Connection, RS1 As New ADODB.Recordset Dim StrSQL As String, strDel As String Dim temp As Integer Set oCon = New ADODB.Connection Set RS1 = New ADODB.Recordset sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CdDatabase.mdb;Persist Security Info=False"
oCon.Open (sCon)
StrSQL = "Delete FROM album Where cdid= " & list1.ItemData(list1.ListIndex) oCon.Execute (StrSQL)
Set RS1 = New ADODB.Recordset
StrSQL = "SELECT * FROM album"
RS1.Open StrSQL, oCon, adOpenForwardOnly
list1.Clear Do Until RS1.EOF list1.AddItem RS1("album_navn") list1.ItemData(list1.NewIndex) = RS1("cdid") RS1.MoveNext Loop
RS1.Close oCon.Close Set RS1 = Nothing Set oCon = Nothing
End Sub
kode slet sang/nummer Private Sub Command4_Click() Dim sCon As String, oCon As New ADODB.Connection, RS1 As New ADODB.Recordset Dim StrSQL As String, strDel As String Dim temp As Integer
Set oCon = New ADODB.Connection Set RS1 = New ADODB.Recordset
sCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=cddatabase.mdb" oCon.Open sCon StrSQL = "DELETE * FROM numre WHERE tittel ='" & List2.Text & "' and id = " & List2.ItemData(List2.ListIndex)
oCon.Execute (StrSQL)
StrSQL = "SELECT * FROM numre WHERE id = " & list1.ItemData(list1.ListIndex)
thesurfer>> mit problem er at når jeg sletter sidste cd viser stadig sang(e) som er på den slettede skive dvs. den opdaterer ikke efter sidste cd er slettet.
når jeg har slettet en cd opdaterer den først listboxen med sang(e) når jeg klikker på en ny cd, men når der ikke er flere cd'er er der jo ikke nogen at klikke på.
' Her slettes det valgte fra databasen: StrSQL = "Delete FROM album Where cdid= " & list1.ItemData(list1.ListIndex) oCon.Execute (StrSQL)
' Her slettes det valgte fra List1: For i = 0 To list1.ListCount - 1 If list1.List(i) = list1.List(list1.ListIndex) Then list1.RemoveItem i Exit For End If Next
' en masse kode...
End Sub
-------------
Men hvad gør det her så?:
Set RS1 = New ADODB.Recordset
StrSQL = "SELECT * FROM album"
RS1.Open StrSQL, oCon, adOpenForwardOnly
list1.Clear Do Until RS1.EOF list1.AddItem RS1("album_navn") list1.ItemData(list1.NewIndex) = RS1("cdid") RS1.MoveNext Loop
RS1.Close oCon.Close Set RS1 = Nothing Set oCon = Nothing
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.