Avatar billede domino1977 Nybegynder
17. juli 2002 - 11:46 Der er 26 kommentarer og
1 løsning

Informationer/egenskaber fra en liste???

Hvis nu man siger at man har en liste med masse "poste" i... kan det så lade sig gøre at frembringe egenskaber/ informationer omkring disse "poster"??

Forestil jer en form med en liste og måske 4-5 textbokse, der hedder: Type, Multiplayer, Number of CD's, System Requierements and maybe some others?

Som I nok allerede nu har gættet skal det være en liste over alle mine spil, men vil osse lave en over mine musik cd'er, film osv...

Når man så klikker på et spil eller en film i listen skal textboxene udfyldes med den information der nu end er omkring det emne der er valgt....

KAN det så osse lade sig gøre at "åbne/starte" programmet eller spillet direkte fra Visual Basic???

KAN I HJÆLPE MIG MED DETTE????
Avatar billede jelzin101 Praktikant
17. juli 2002 - 11:55 #1
det du jo kunne gøre var at lave et multidimensionalt array, hvor f.eks. 1[0] var navnet på programmet 1[2] var hvem der havde lavet programmet osv. -så skulle det jo derfra ikke være særligt svært at lave en løkke der fylder de relevante data i de korrekte txtboxes.

hvis du vil starte et prg. fra vb kan du f.eks. bruge
a = shell('c:/win/notepad.exe')

/jelzin.
Avatar billede domino1977 Nybegynder
17. juli 2002 - 12:02 #2
Nårh så det mener du ikke.....

Jeg fatter ikke en meter af hvad du lige nu snakker om???

Det der med at starte programmet det er vidst fint!

Men det andet der?????
Avatar billede jelzin101 Praktikant
17. juli 2002 - 12:12 #3
hehe ok ;) prøv at læse
http://www.geocities.com/alpha_productions2/vb_arrays.htm
http://www.canaimasoft.com/f90VB/OnlineManuals/UserManual/TH_23.htm

men i hovedtræk er det du skal gøre at definere et array hvor hvert element på listen har x antal indgange (f.eks. 5 hvis det er det antal oplysninger som du vil have for hvert program/film osv.)

-så indsætter du i array'et f.eks.:
'film1
mitarray(1,0) = "the matrix"
mitarray(1,1) = "sci-fi"
mitarray(1,2) = "2 1/2 time"
'film2
mitarray(2,0) = "anna og lotte's greatest"
mitarr......
osv.

bagefter kan du så tilgå elementerne med en løkke f.eks.
for i = 0 to 5
for x = 0 to 5
  text(x).text = mitarray(i,x)
next x
next i

-jeg håber det gav lidt mere mening :) /da jeg er nødt til at smutte nu, men kigger nok forbi engang i aften og ser hvordan det går.

/jelzin.
Avatar billede domino1977 Nybegynder
17. juli 2002 - 12:21 #4
Ok..... hvis nu jeg gerne vil have det i en databse.... kunne man så ikke gøre det lidt nemmere???

Jeg har før prøvet at lege med databser i access, men i stedet for at "CD'er" står en afgangen i en textboks, vil jeg gerne have at det kommer frem i en liste....

Forstår du hvad jeg mener??
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 12:34 #5
Combo1.Clear
Det er nemmere at gemme mange forskellige oplysninger i en database. Hvis du vil ha' dem at se i en liste gør du sådanne:
    Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        List1.AddItem Data1.Recordset("xx-navn")
        Data1.Recordset.MoveNext
    Loop
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 12:38 #6
Ubs. Der skal selvfølgelig ikke stå "Combo1.Clear" men List1.Clear inde i koden FØR Do/Loop - ellers bliver listen bare længere og længere for hver gang den udfyldes.
Avatar billede domino1977 Nybegynder
17. juli 2002 - 12:46 #7
Vil du ikke lige være venlig at vise mig hvor navnet på den kolone skal sættes ind??

Tabellen hedder "games" og Kolonnen hedder "Name"

Mange tak....
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 12:55 #8
Tabellen får du fat i med Data1.RecordSource
og Name udfylder du med Do/Loop
List1.AddItem Data1.Recordset("Name")
Avatar billede domino1977 Nybegynder
17. juli 2002 - 13:09 #9
Ja fint nok! MEN når jeg så laver mig en listbox, dobbelt klikker på den og indsætter koden:

----------------------------------------------------------------
Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        List1.AddItem Data1.Recordset("Name")
        Data1.Recordset.MoveNext
    Loop

---------------------------------------------------------------

Så sker der intet....

Hvordan kan det være???
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 13:20 #10
Husk nu at indsætte List1.Clear som den første linie i koden.

Har du fat i selve databasen?
Data1.DatabaseName = "C:\...\...\DBName"

Det kan somme tider være lettere at teste et problem hvis man indsætter midlertidige kontroller (command, label etc.) Put en CommandButton på formen og sæt koden ind i den så den kører hver gang du klikker på den. Når så koden kører fejlfrit kan du sætte den over hvor den skal køre fx Form.Load
Avatar billede domino1977 Nybegynder
17. juli 2002 - 13:28 #11
Jepper, nu virker det... men den skal jo gå til den post som jeg klikker på i listen....

Hvordan gør jeg det??
Avatar billede domino1977 Nybegynder
17. juli 2002 - 13:30 #12
Nej den lister dem kun hvis jeg sætter dem ind i koden til en knap... så kommer de ligeså fint frem i listen når jeg killer på dem.... men sætter jeg dem ind i form_load.... så går det galt... så kommer den med fejl!!
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 13:41 #13
Prøv med Form_Activate
Listen viser bare data for bruger som er i DB
Skal Data1 rykke til den post bruger klikker på er det en ny ting:

Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        If Data1.Recordset("Name") = List1.Text Then
            'Nu peger Data1 på den rigtige post
            'Skriv kode den skal gøre fx vise data
            Exit Do
        End If
        Data1.Recordset.MoveNext
    Loop
Avatar billede domino1977 Nybegynder
17. juli 2002 - 13:55 #14
Det her er så min nye kode:

---------------------------------------------------------------------------
Private Sub Form_Activate()
List1.Clear
data1.DatabaseName = "H:\Menu\db1.mdb"
Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        List1.AddItem Data1.Recordset("Name")
        Data1.Recordset.MoveNext
    Loop

    Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        If Data1.Recordset("Name") = List1.Text Then
            'Nu peger Data1 på den rigtige post
            'Skriv kode den skal gøre fx vise data
            Exit Do
        End If
        Data1.Recordset.MoveNext
    Loop
End Sub
---------------------------------------------------------------------------
Så skriver du at jeg skal skrive en kode der viser dataen??

Hvilken kode??

Nu kommer al dataen fint når bare der står Form_activate()
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 14:08 #15
Nu har du 2 ting i den samme kode: Form_Activate()
Det er kun den første del - den der udfylder din List1 - der skal være her.

Du siger så at den skal pege på den post i DB som bruger klikker på i List1 - det er den sidste del - denne kode skal stå i List1.Click():

Private Sub List1_Click()
    Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        If Data1.Recordset("Name") = List1.Text Then
            'Nu peger Data1 på den rigtige post
            'Skriv kode den skal gøre fx vise data
            Exit Do
        End If
        Data1.Recordset.MoveNext
    Loop
End Sub

Hvad din kode så skal gøre når den peger på en bestemt post brugeren har valgt ved jeg jo ikke, men det kunne jo FOR EKSEMPEL være at vise nogle flere data :-)
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 14:12 #16
Et ekstempel kunne være: Label1.Caption = List1.Text
Avatar billede domino1977 Nybegynder
17. juli 2002 - 14:23 #17
Sig jeg er dum... for det der er sort snak for mig.....

Det første gik fint... men når jeg sætter den sidste kode ind, så går det hele nedenom og hjem...

Jeg vil gerne at når jeg klikker en enkelt gang på en af de poster der er kommet frem i list1'en, så skal den gå til den post og vise alle de resultater der er omkring denne post i databasen, og de skal vises i 4 textbokse....

Kan man bruge en slags "Goto"???
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 14:41 #18
"Sig jeg er dum..." Det gør jeg ikke for 45P :-))

Du har gang i 2 ting:
1. Udfyld din List1 så bruger kan se hvad der er i DB:
--------------------------------------------------------------------------
Private Sub Form_Activate()
List1.Clear
data1.DatabaseName = "H:\Menu\db1.mdb"
Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        List1.AddItem Data1.Recordset("Name")
        Data1.Recordset.MoveNext
    Loop
End Sub
--------------------------------------------------------------------------
Dette fungere ok ikke?

2. Bruger vælger et element i listen der nu er tilgængelig:
--------------------------------------------------------------------------
Private Sub List1_Click()
    Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        If Data1.Recordset("Name") = List1.Text Then
            'Nu peger Data1 på den rigtige post
            'Skriv kode den skal gøre fx vise data
            Text1.Text = Data1.Recordset("Name")  '("??") er Feltnavne i DB
            Text2.Text = Data1.Recordset("??")
            Text3.Text = 'og så fremdelses
            Exit Do
        End If
        Data1.Recordset.MoveNext
    Loop
End Sub
--------------------------------------------------------------------------
GoTo er til at springe i koden, ikke til at finde poster i DB.
Avatar billede domino1977 Nybegynder
17. juli 2002 - 14:54 #19
Den bliver ved med at melde fejl:

"Object dosen't support this property or method"

Men koden ser altså sådan her ud:
---------------------------------------------------------------------------
Private Sub List1_Click()
    Data1.Recordset.MoveFirst
    Do Until Data1.Recordset.EOF = True
        If Data1.Recordset("Name") = List1.Text Then
          Text1.Text = Data1.Recordset("Multiplayer")
          Text2.Text = Data1.Recordset("Number of CD's")
          Text3.Text = Data1.Recordset("Type of Game")
          Text4.Text = Data1.Recordset("Name")
            Exit Do
        End If
        Data1.Recordset.MoveNext
    Loop
End Sub
---------------------------------------------------------------------------

Er det ikke rigtigt nok????
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 15:00 #20
Hvor går det galt henne? Hvilken linie bliver markeret som fejl?
Avatar billede domino1977 Nybegynder
17. juli 2002 - 15:08 #21
Jamen problemet er at den ikke viser en linie der er galt!!! Den kommer bare og siger at der er fejl!!!

Sådan noget pis!!!
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 15:13 #22
Når du får fejlen kan du klikke enden på "End" eller "Debug" - Klik på "Debug"
Avatar billede domino1977 Nybegynder
17. juli 2002 - 15:15 #23
Nej.... den skriver bare:
"Object dosen't support this property or method"

Og så kan jeg klikke på ok eller hjælp...

Og det gør den ca. 7-8 gange.... når den så kommer ind i programmet, så er der ikke noget i listen!!
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 15:21 #24
Vil det sige at det er når formen bliver aktiveret det går galt?

I Form_Activate() må der KUN stå det der udfylder List1.

Dobbeltklik på List1 så den skriver følgende kode automatisk:

Private Sub List1_Click()
End Sub

...og skriv den anden funktion imellem Sub/End Sub
Avatar billede domino1977 Nybegynder
17. juli 2002 - 15:33 #25
Må jeg prøve at maile dig den???

Så kunne du måske ta en lille kig på den???
Avatar billede kjeld_klit Nybegynder
17. juli 2002 - 15:37 #26
kks@ishoejby.dk
Avatar billede domino1977 Nybegynder
18. juli 2002 - 08:46 #27
IT WORKS! IT REALY WORKS!!

Takker..
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