Avatar billede cyberspace Nybegynder
02. januar 2004 - 14:26 Der 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.

knakken til at slette cd(er) hedder command2
Avatar billede cyberspace Nybegynder
02. januar 2004 - 14:26 #1
knakken = knappen
Avatar billede thesurfer Nybegynder
02. januar 2004 - 14:47 #2
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..
Avatar billede joern Nybegynder
02. januar 2004 - 15:33 #3
Hej.

Thesurfer har ret, det er lidt svært når vi ikke kan se din kildetekst.  Kender du list1.refresh ?

M.v.h.  Jørn
Avatar billede thesurfer Nybegynder
02. januar 2004 - 15:39 #4
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
Avatar billede thesurfer Nybegynder
02. januar 2004 - 15:42 #5
F.eks.:
dim mytitle as string
mytitle = "Den Slettede Titel"

For i = 0 To List1.ListCount - 1
MsgBox i
If List1.List(i) = mytitle Then
  List1.RemoveItem i
  Exit For
End If
Next
Avatar billede thesurfer Nybegynder
02. januar 2004 - 15:44 #6
"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..
Avatar billede cyberspace Nybegynder
03. januar 2004 - 02:56 #7
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

myString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=CdDatabase.mdb;Persist Security Info=False"
Form4.Visible = True
Form2.Visible = False
Form4.list1.Clear
con.Open (myString)
rs.Open "Album", con, adOpenDynamic

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
Avatar billede thesurfer Nybegynder
03. januar 2004 - 14:40 #8
hmm.. jeg kan ikke se nogen slet-kode?

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 :)
Avatar billede cyberspace Nybegynder
05. januar 2004 - 12:29 #9
thesurfer>> jeg ved godt at titel er uden 2 t'er men det er desværre ved en fejl blevet stavet med 2 t'er i access databasen
Avatar billede thesurfer Nybegynder
05. januar 2004 - 14:19 #10
Du har stadig ikke skrevet slet-koden..
Skriv den, så jeg kan tilpasse min kode..
Avatar billede cyberspace Nybegynder
05. januar 2004 - 14:47 #11
thesurfer>> ups det er en forglemmelse fra min side, men sidder ikke lige ved egen pc, så jeg vender tilbage på et senere tidspunkt.
Avatar billede cyberspace Nybegynder
05. januar 2004 - 19:02 #12
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)

RS1.Open StrSQL, oCon, adOpenForwardOnly

List2.Clear
Do Until RS1.EOF

List2.AddItem RS1("tittel")
List2.ItemData(List2.NewIndex) = RS1("id")
RS1.MoveNext
Loop

RS1.Close
oCon.Close
Set RS1 = Nothing
Set oCon = Nothing

If List2.Text <> "" And list1.Text <> "" Then
Command4.Enabled = True
Else
Command4.Enabled = False
End If
End Sub
Avatar billede thesurfer Nybegynder
05. januar 2004 - 19:05 #13
Det ser da rigrigt nok ud.. ? Får du nogen fejl?
Denne del slette listen og henter en ny:

list1.Clear
Do Until RS1.EOF
list1.AddItem RS1("album_navn")
list1.ItemData(list1.NewIndex) = RS1("cdid")
RS1.MoveNext
Loop
Avatar billede cyberspace Nybegynder
06. januar 2004 - 08:10 #14
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.

kun hvis jeg lukker og åbner programmet igen
Avatar billede cyberspace Nybegynder
06. januar 2004 - 09:33 #15
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å.
Avatar billede thesurfer Nybegynder
06. januar 2004 - 13:28 #16
' Hvad så med?:

Private Sub Command2_Click()

' en masse kode...

' 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
Avatar billede cyberspace Nybegynder
16. januar 2004 - 12:50 #17
thesurfer>> du kom nærmest noget brugbart, så skriv lige svar
Avatar billede thesurfer Nybegynder
16. januar 2004 - 13:55 #18
OK :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester