01. marts 2005 - 15:02Der er
20 kommentarer og 1 løsning
Flytte elementer i listeboks
Er løbet ind i en listeboks begrænsning: Mit program overfører værdier fra en listeboks til en anden når brugeren klikker på en knap og opbygger på baggrund af listen en SQL forespørgsel; ingen problemer i det, men nu bliver man jo grådig og vil have mere! :) Jeg kunne godt tænke mig at brugeren fik et par knapper ved siden af listeboksen, så det var muligt at rykke rundt på elementerne, så hvis man f.eks. havde opbygget liste 2 til at se sådan her ud: Postnr & By Efternavn Adresse Fornavn Land
Kunne få den til at se sådan her ud, i stedet for at skulle klikke dem alle tilbage i liste1 og tilføje dem igen: Fornavn Efternavn Adresse Postnr & By Land
SQL forespørgslen henter nemlig værdierne over i Excel i kolonner, præcis i den rækkefølge de står i listeboksen. Jeg har kigger lidt på UpDown kontrollen, men den er vist gået itu eller noget... :(
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Hvis du overfører data fra en forespørgsel, kan du kode dig ud af hvor data bliver placeret i Excel. Er det en mulighed kan jeg sende dig et eksempel når jeg kommmer hjem.
mugs: Bruger p.t. denne kode(stump) til at overføre til Excel:
While Not rst.EOF J = J + 1 For i = 0 To Liste2.ListCount - 1 xlsheet.Cells(J, i + 1) = rst.Fields(Liste2.Column(0, i)) If Liste2.Column(0, i) = "Dato" Or Liste2.Column(0, i) = "Afsendelsesdato" Or Liste2.Column(0, i) = "Oplastningsdato" Or Liste2.Column(0, i) = "Bestillingsdato1" Or Liste2.Column(0, i) = "Bestillingsdato2" Or Liste2.Column(0, i) = "Bestillingsdato3" Or Liste2.Column(0, i) = "Ændringsdato" Or Liste2.Column(0, i) = "Oprettelsesdato" Then xlsheet.Cells(J, i + 1).Select xlapp.Selection.NumberFormat = "m/d/yyyy" End If Next rst.MoveNext Wend
So, what I need to do....is....get the listbox's recordsource and put it in a 2D array, then find what place in the array the selected item is in and move it 1 place up/down in the array, while the item in that place needs to be moved 1 place down/up.
Kanon, nih, bortset fra én ting: Første gang man klikker på Op/Ned knapperne, går det godt, men så fjernes fokus fra det valgte element og hvis man ikke vælger et eller andet element, så går programmet i fejl.
Når jeg har overført de ønskede elementer fra liste1 til liste2 og klikker på Op eller Ned knappen, går det fint, men så fjernes markeringen fra det valgte element. Hvis jeg derimod, efter at liste2 er fyldt ud, VÆLGER et af elementerne på listen, så går det fint HELE tiden! Det er som om Access markerer det sidste overførte element, men "glemmer" markeringen, når der trykkes på Op/Ned (undtagen hvis man BEVIST vælger et af elementerne)
Hmmmm.....ikke rigtigt, for så er der ingen elementer i liste2, kun i liste1 og som sagt, så overfører brugeren elementer fra liste1 til liste2 og SÅ klikker på Op eller Ned knapperne.
Private Sub En_over_knap_Click() Dim i As Integer, markeret As Integer Dim ny_liste As String
If Liste1.ItemsSelected.Count > 0 Then For i = 0 To Liste1.ListCount - 1 If Liste1.Selected(i) Then If Liste2.ListCount > 0 Then Liste2.RowSource = Liste2.RowSource & ";" End If Liste2.RowSource = Liste2.RowSource & Liste1.Column(0, i) markeret = i Else ny_liste = ny_liste & Liste1.Column(0, i) & ";" End If Next
If Len(ny_liste) > 0 Then Liste1.RowSource = Mid(ny_liste, 1, Len(ny_liste) - 1) Else Liste1.RowSource = "" End If
Liste2.Selected(Liste2.ListCount - 1) = True
If markeret > Liste1.ListCount - 1 Then Liste1.Selected(Liste1.ListCount - 1) = True Else Liste1.Selected(markeret) = True End If End If End Sub
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.