Avatar billede timmelimsen Nybegynder
02. marts 2004 - 22:17 Der er 12 kommentarer og
1 løsning

Sub Form_Load()

Hej.

Er lidt intereseret i at vide om Sub Form_Load() kan bruges til nogle initialiserende og forbedredende procedurer for formen.

F.eks ville jeg som nedenunder gerne fylde en combobox op fra en database. Eksemplet fungerer fint på onclick på en knap, men i denne Sub Form_Load() giver den mig fejlen:

"Run-time error '91' Object variable or With block variable not set"

-----------

Private Sub Form_Load()
    Do While Not Data1.Recordset.EOF
    Combo1.AddItem Data1.Recordset.Fields("name").Value
    Data1.Recordset.MoveNext
    Loop
End Sub

-----------

Er dette det rigtige sted at gøre sådanne ting, og i så fald, hvad er det jeg skal erklære før det virker.

Mvh,
Tim.
Avatar billede Marting Forsker
02. marts 2004 - 22:24 #1
du skal gør i en knap!
Avatar billede Marting Forsker
02. marts 2004 - 22:25 #2
Private Sub Command1_Click()
    Do While Not Data1.Recordset.EOF
    Combo1.AddItem Data1.Recordset.Fields("name").Value
    Data1.Recordset.MoveNext
    Loop


End Sub
Avatar billede timmelimsen Nybegynder
02. marts 2004 - 22:29 #3
Som jeg skrev foroven, har jeg allerede lavet det i en knap, men det kan da for hulen ikke være rigtigt at man skal intialisere en combobox ved at klikke på en kanp først...
Jeg ved ikke om det er for meget at kræve at den allerede er fyldt ud når brugeren ser den første gang.

Mit spørgsmål er:
Hvordan laver jeg sådanne initaliserende rutiner for min form?
Avatar billede helmet Nybegynder
02. marts 2004 - 22:31 #4
Du kan sagtens gøre som du er inde på, det eneste du lige mangler er og skabe forbindelsen til databasen.
Så..
Private Sub Form_Load()
    Data1.Refresh
    Do While Not Data1.Recordset.EOF
      Combo1.AddItem Data1.Recordset.Fields("name").Value
      Data1.Recordset.MoveNext
    Loop
End Sub

Skulle gøre det du vil.
Avatar billede timmelimsen Nybegynder
02. marts 2004 - 22:37 #5
Tusind tak! Det virker...

Men hvorfor behøver jeg Data1.Refresh i Sub Form_Load() når jeg ikke behøver den på f.eks en knap, Sub Command1_Click()?
Avatar billede Marting Forsker
02. marts 2004 - 22:39 #6
hvordan gør jeg så hvis jeg ville SetFocus i textbox Private Sub Form_Load()
det ville den ikke
Private Sub Form_Load()
M.SetFocus ' textbox
End Sub
Avatar billede Marting Forsker
02. marts 2004 - 22:42 #7
skrive den Run-time error ´5´

Invalid procedure call or argument
Avatar billede helmet Nybegynder
02. marts 2004 - 22:42 #8
Det er jeg ikke helt sikker på, men mit bud er, at det er fordi den endnu ikke har vist/tegnet data controllen endnu, det har den når du trykker på knappen.

Så derfor kan du heller ikke umiddelbart sætte focus til en textboks, da den ikke er tegnet endnu.

Hvis du sætter M.SetFocus ned i Form_Paint() i stedet for, så virker det.
Avatar billede timmelimsen Nybegynder
02. marts 2004 - 22:44 #9
Aha... Form_Paint() kommer måske efter Load og er når den tegner alle elementerne?
Avatar billede Marting Forsker
02. marts 2004 - 22:49 #10
Tusind tak for hjælpen!!
Det virker!!!

kan du hjælpe mig med det her http://www.eksperten.dk/spm/471681  helmet?
Avatar billede helmet Nybegynder
02. marts 2004 - 22:50 #11
Jeg må være dig et gyldigt svar skyldigt, jeg er ikke helt sikker på rækkefølgen, men Paint kommer i hvert fald efter Load som kommer efter Initialize
Avatar billede timmelimsen Nybegynder
02. marts 2004 - 23:02 #12
Ok.. men tak for de lærerige kommentarer... :)
Avatar billede Marting Forsker
02. marts 2004 - 23:05 #13
slev tak! du rode måske meget med VB?
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