Avatar billede domino1977 Nybegynder
13. september 2002 - 08:25 Der er 33 kommentarer og
1 løsning

Sortering i ListBox

Hvis nu man har en listebox hvor den sammen værdi kommer flere gange.... hvordan får man den til at fremkomme EN gang???

feks:
a,a,a,b,c,f,g,g,g = a,b,c,f,g!!!
Avatar billede ocp Nybegynder
13. september 2002 - 08:29 #1
Kommer dine værdier fra en database?
Avatar billede domino1977 Nybegynder
13. september 2002 - 08:43 #2
Jeps... fra en access database!
Avatar billede ocp Nybegynder
13. september 2002 - 08:50 #3
Select distinct ComboContents from MyTable
Avatar billede peter.erikse Nybegynder
13. september 2002 - 08:52 #4
Du kan bruge: "SELECT DISTINCT" i din sql
Avatar billede domino1977 Nybegynder
13. september 2002 - 09:15 #5
Øhhh.... nå??

Sådan her:

strSQL = "SELECT DISTINCT varegruppe FROM varegrupper" & ""

Det virker ikke helt!!!
Avatar billede domino1977 Nybegynder
13. september 2002 - 09:16 #6
Du kan lige se hele min sql sætning:
---------------------------------------------------------------------------
Set datDB = DBEngine.Workspaces(0).OpenDatabase("I:\CRM\data\data\data.mdb")
strSQL = "SELECT DISTINCT varegruppe FROM varegrupper" & ""
Set recRecordset = datDB.OpenRecordset(strSQL)
Do Until recRecordset.EOF
ListVaregruppe.AddItem recRecordset("Varegruppe") & ""
recRecordset.MoveNext
Loop
---------------------------------------------------------------------------
Avatar billede ocp Nybegynder
13. september 2002 - 09:34 #7
Så må det være fordi dine data er lagt ind med f.eks. mellemrum i - din kode ser ud til at være korrekt.
Avatar billede domino1977 Nybegynder
13. september 2002 - 09:38 #8
De dataer den trækker hedder ting som:
TRYK
BELL. 16
BELL.  2,5
FJERNVARME

osv.....
Der er ikke noget problem at trække dem fra Access, men de kommer bare flere gange.... og så skal de overskydende skæres væk...
Avatar billede ocp Nybegynder
13. september 2002 - 09:42 #9
Jamen det burde distinct kunne klare. Det virker i min testtabel.
Med mindre du ønsker at "BELL. 16" og "BELL. 2,5" blot skal vises som "BELL."?
Avatar billede ocp Nybegynder
13. september 2002 - 09:42 #10
Ellers er det altså fordi der er "snavs" i dine felter - f.eks. mellemrum i slutningen af feltdata.
Avatar billede domino1977 Nybegynder
13. september 2002 - 09:45 #11
Nej de må IKKE ændre navn!
Avatar billede ocp Nybegynder
13. september 2002 - 09:51 #12
Prøv lige, for en god ordens skyld, dette:

Set datDB = DBEngine.Workspaces(0).OpenDatabase("I:\CRM\data\data\data.mdb")
strSQL = "SELECT DISTINCT varegruppe FROM varegrupper" & ""
Set recRecordset = datDB.OpenRecordset(strSQL)
ListVaregruppe.clear
Do Until recRecordset.EOF
ListVaregruppe.AddItem recRecordset("Varegruppe") & ""
recRecordset.MoveNext
Loop
Avatar billede domino1977 Nybegynder
13. september 2002 - 09:51 #13
Det skal lige siges at det bliver halet over fra et excel ark til Access og vidre over til VB!!!!
Avatar billede domino1977 Nybegynder
13. september 2002 - 09:53 #14
Ingen forskel!
Avatar billede ocp Nybegynder
13. september 2002 - 10:12 #15
Så prøv lige dette og læg resultatet ud her:

Set datDB = DBEngine.Workspaces(0).OpenDatabase("I:\CRM\data\data\data.mdb")
strSQL = "SELECT DISTINCT varegruppe FROM varegrupper" & ""
Set recRecordset = datDB.OpenRecordset(strSQL)
ListVaregruppe.clear
Do Until recRecordset.EOF
debug.print ">" & recRecordset("Varegruppe") & "<"
recRecordset.MoveNext
Loop
Avatar billede domino1977 Nybegynder
13. september 2002 - 10:34 #16
Jamen reslutatet er det samme... der bliver ikke "filtreret" i min varegruppe.... der kommer stadig tryk en 3-4 gange!!!!
Avatar billede ocp Nybegynder
13. september 2002 - 10:39 #17
Kan du sende databasen til mig?
Avatar billede domino1977 Nybegynder
13. september 2002 - 11:14 #18
Ja jeg kan da sende alle source filerne!
Avatar billede martin_moth Mester
13. september 2002 - 12:16 #19
Interessant diskussion - jeg kendte ikke til SELECT DISTINCT. Nå, jeg ville bare sige, at jeg synes du flotter dig lige rigeligt med dine poients, domino1977 ;o) (5 stk!)

NB: Hvis nu SELECT DISTINCT ikke kommer til at virke, så kunne man jo læse posterne een efter en fra databasen, og kun tilføje dem til ListBox hvis de ikke i forvejen findes i ListBox...
En lidt klodset løsning - men det vil helt sikkert virke, og jeg kan da godt give et eksempel hvis det har interesse. Den løsning ville så også kunne tage højde for mellemrum i posterne i databasen, hvis man bruger
Trim(databasepost) når man sammenligner (eller LTrim eller RTrim)- det kan SELECT DISTINCT vist ikke tage højde for ;o)
Avatar billede ocp Nybegynder
13. september 2002 - 13:01 #20
Det er rigeligt at du sender databasen. Bare send den til:

anonymanonym715@hotmail.com
Avatar billede domino1977 Nybegynder
13. september 2002 - 15:06 #21
Martin Mouth -> jeg har kun lige fem tilbage... smider flere oveni ipå mandag....!!

Ja det med database, virker ok, MEN det vil ikke komme til at virke pga... at der bliver trukket en list en gang om dage... denne lidt vil Jeg IKKE ind og rydde op i hverdag... og den skal derfor være nem bare at ligge oveni....

Og i dette udtræk er den sådan at hver "kunde" der har sin konto, har flere gange nævnt/brugt en varegruppe der måske hedder "tryk"... det vil sige at hvergang at de har bestilt et varenummer der hører under varegruppen tryk, vil den fremkomme i listen over varegrupper.... og det er ikke særlig smart... den skal kun frem komme 1 gang... og når man så vælger "tryk" i varegruppe listen, så skal alle varenummerne der er i varegruppen "tryk" fremkomme i listen over varenummer!!!
Avatar billede domino1977 Nybegynder
13. september 2002 - 15:07 #22
dataen er sendt!
Avatar billede domino1977 Nybegynder
16. september 2002 - 09:38 #23
Hvaså...... har du fundet ud af noget??
Avatar billede ocp Nybegynder
16. september 2002 - 14:19 #24
Jeg sendte dig ellers en mail og bad om at se resten af koden. Selve "select distinct..."-delen fungerer fint på din database - derfor ville jeg gerne se den resterende kode med listbox'en.
Avatar billede domino1977 Nybegynder
17. september 2002 - 08:39 #25
ok...jamen skal jeg bare sende HELE lortet??
Avatar billede ocp Nybegynder
17. september 2002 - 09:18 #26
Ja, hvis det kan lade sig gøre?
Avatar billede domino1977 Nybegynder
17. september 2002 - 09:38 #27
Det er sendt!
Avatar billede ocp Nybegynder
18. september 2002 - 09:20 #28
Jeg har flere kommentarer til dit projekt:

Du benytter select'et:

"SELECT distinct * FROM KVJAN WHERE Konto Like '*" & Kartotek.konto.Text & "*'AND Måned LIKE '*" & Måned.Text & "*'"

Hvor du benytter * omkring dine kriterier. Det er MEGET farligt da konto 100 og konto 1000 begge vil komme med i dit recordset. Jeg har også ændret din kode så den tager korrekt højde for at der ikke er valgt en måned. Og så sendte du det forkerte select til dit spørgsmål.
Og hvorfor laver du en ny connection til databasen hver gang du skal bruge den? En global connection ville være mere "økonomisk" (og stien til databasen ville være lettere at rette).

Erstat nederste del af din FORM_LOAD med dette:

Set datDB = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\Data.mdb")
If Trim$(Måned.Text) <> "" Then
    strSQL = "SELECT distinct * FROM KVJAN WHERE Konto Like '" & Kartotek.konto.Text & "'AND Måned LIKE '" & Måned.Text & "'"
Else
    strSQL = "SELECT distinct varegruppe FROM KVJAN WHERE Konto Like '" & Kartotek.konto.Text & "'"
End If
Set recVaregruppe = datDB.OpenRecordset(strSQL)
ListVaregruppe.Clear
Do While Not recVaregruppe.EOF
    ListVaregruppe.AddItem recVaregruppe("varegruppe") & ""
    recVaregruppe.MoveNext
Loop
UpdateFelter
Avatar billede ocp Nybegynder
18. september 2002 - 09:21 #29
Ja, nu har jeg jo ændret stien til App.Path ... det retter du bare.
Avatar billede domino1977 Nybegynder
18. september 2002 - 15:33 #30
Den går istå her:
----------------------------------------------------------------------
Set datDB = DBEngine.Workspaces(0).OpenDatabase(App.Path & "I:\CRM\data\data\data.mdb")
----------------------------------------------------------------------
Og så siger den filnavnet er ugyldigt...

Hvorfor det???
Avatar billede ocp Nybegynder
18. september 2002 - 16:03 #31
Slet "App.Path &"
Avatar billede domino1977 Nybegynder
19. september 2002 - 08:22 #32
NU virker det.......

Takker....
Avatar billede domino1977 Nybegynder
20. september 2002 - 13:06 #33
FUCK!!!

Min spand har slettet næsten ALLE mine mails... og nu kan jeg ikke finde din gamle mail!!

Er der mulighed for at du vil sende den igen??
Avatar billede ocp Nybegynder
20. september 2002 - 13:13 #34
Jamen... er det ikke bare dette?

Jeg har flere kommentarer til dit projekt:

Du benytter select'et:

"SELECT distinct * FROM KVJAN WHERE Konto Like '*" & Kartotek.konto.Text & "*'AND Måned LIKE '*" & Måned.Text & "*'"

Hvor du benytter * omkring dine kriterier. Det er MEGET farligt da konto 100 og konto 1000 begge vil komme med i dit recordset. Jeg har også ændret din kode så den tager korrekt højde for at der ikke er valgt en måned. Og så sendte du det forkerte select til dit spørgsmål.
Og hvorfor laver du en ny connection til databasen hver gang du skal bruge den? En global connection ville være mere "økonomisk" (og stien til databasen ville være lettere at rette).

Erstat nederste del af din FORM_LOAD med dette:

Set datDB = DBEngine.Workspaces(0).OpenDatabase(App.Path & "\Data.mdb")
If Trim$(Måned.Text) <> "" Then
    strSQL = "SELECT distinct * FROM KVJAN WHERE Konto Like '" & Kartotek.konto.Text & "'AND Måned LIKE '" & Måned.Text & "'"
Else
    strSQL = "SELECT distinct varegruppe FROM KVJAN WHERE Konto Like '" & Kartotek.konto.Text & "'"
End If
Set recVaregruppe = datDB.OpenRecordset(strSQL)
ListVaregruppe.Clear
Do While Not recVaregruppe.EOF
    ListVaregruppe.AddItem recVaregruppe("varegruppe") & ""
    recVaregruppe.MoveNext
Loop
UpdateFelter
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