Avatar billede kedde65 Praktikant
15. juni 2003 - 21:01 Der er 11 kommentarer og
2 løsninger

Oprette checkbox automatisk

Hej

Jeg skal have lavet en formular, hvor jeg bliver nødt til at oprette en stak check bokse dynamisk afhængig af en masse faktorer og input. Dette kunne jeg forestille mig skulle gøres vha. VBA. Mit problem er blot at jeg synes ikke det er så nemt som det er i VB 6.0 :-(

Er der nogle der kan give mig et hint til hvordan det løses?

VH CK
15. juni 2003 - 21:06 #1
Du har ret i, at det ikke er så nemt at create nye objekter på formularen dynamisk, som i VB. Du kan faktisk kun oprette objecter i designmode.
I stedet kan du lave det maksimale antal checkbokse og gøre dem usynlige (Visible = false) og derefter dynamisk vise og skjule boksene afhængigt af data.
Avatar billede mugs Novice
15. juni 2003 - 21:09 #2
Man skal jo aldrig sige aldrig.
Men når du opretter checkbokse (og andre felter), skal de vel have forbindelse bagud i databasen. det betyder jo, at du først skal oprette dem i tabellen, derefter hente dem ind i en forespørgsel og igen i formularen.

En anden mulighed er, at oprette alle bokse som du kan få brug for og give dem egenskaben Synlig sat til Nej. Derefter at indsætte en kode i dine felter, der når en betingelse er opfyldt ændrer boksen egenskab Synlig fra Nej til Ja.

Eksempel:

If Me.Felt1 > 0 Then
Me.Ramme1.Visible = True
Else:
Me.Ramme1. visible = False
End If
Avatar billede mugs Novice
15. juni 2003 - 21:10 #3
thomas > 3 min det bliver dog værre og værre med den gigt i fingrerne :o)
Avatar billede kedde65 Praktikant
15. juni 2003 - 21:11 #4
Hrmmm - jeg kan ikke tro at det ikke skulle kunne lade sig gøre. Men jeg har imidlertidig kommet på at hvis jeg laver en forespørgsel over de ting der skal spørges om, og denne forespørgsel bruges til en underformular - så kan jeg få den til at oprette et antal checkbokse dynamisk. Dog giver dette en ¤%&¤*#¤%/* masse andet bøvl. Men jeg lader lige spørgsmålet stå åbent lidt endnu...

VH CK
Avatar billede mugs Novice
15. juni 2003 - 21:12 #5
Hvis du har mange checkbokse, kan du evt. placere dem på flere sider i din formular. I ovennævnte kode kan du så tilføje en linie.

GoTo Page 2  eller noget i den stil, jeg kan ikke lige huske den korrekte syntaks.
Avatar billede kedde65 Praktikant
15. juni 2003 - 21:15 #6
Jeg må jo lige nævne at jeg altså ikke laver en løsning - hvor jeg opretter 500 check bokse, bare fordi der måske bliver lavet så mange... det er jo håbløst forældet, og hamrende ineffektivt. Der findes en eller anden workaround - det har jeg set et sted engang for længe siden.

VH CK
15. juni 2003 - 21:17 #7
Du kan god oprette dem dynamisk, men formularen skal være i designmode. Men du kan også sagtens åbne en formular i design, oprette kontrolelementerne og derefter åbne den i alm. formularvisning - alt sammen fra VBA.
Men så skal du samtidig ligge og beregne felternes placering på formularen.

HVorfor lægges checkboksene ikke i en fortløbende formular, således at du automatisk får en checkboks for hver post? Det afhænger selvfølgelig af hvordan din tabel er bygget op og hvad dine kriterier er.
Avatar billede kedde65 Praktikant
15. juni 2003 - 21:20 #8
Ja det er netop den nederste løsning jeg sidder og er ved at fedte lidt i. Jeg er så bare stødt på problemt med at navnet på de checkbokse skal ændres - eller jeg skal ihvertfald kunne tilgå dem fra VBA - hvordan går jeg ind på hver post i den fortløbende formular via. VBA?

VH CK
15. juni 2003 - 21:24 #9
Så er du nødt til at benytte recordsets.

    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    Set cn = CurrentProject.Connection
    rs.Open "Select * From DinTabel", cn, adOpenStatic, adLockOptimistic
    'Eks:
    rs.Find "ID = 423"
15. juni 2003 - 21:25 #10
Der er også andre metoder, men recordsets giver den største frihed og fleksibilitet. Men jeg har endnu ikke helt forstået hvordan systemet er bygget op og har derfor svært ved at give dig en konkret løsningsmodel.
Avatar billede kedde65 Praktikant
15. juni 2003 - 21:26 #11
Jamen jeg skal ikke ind og kigge på data på de enkelte formularer(på den fortløbende formular). Forestil dig jeg skal ind på en knap på hvert "del" af den fortløbende formular og ændre baggrundsfarven på knappen - det kan jeg ikke gøre vha. ADO.
15. juni 2003 - 21:31 #12
Du kan kun ændre farver og udseende for en specifik post i en fortløbende formular hvis du benytter "Betinget formattering" (under menuen Format). Her kan du angive at feltet skal have en bestemt farve eller skrifttype hvis en given betingelse er opfyldt.
Hvis du ændre koden vha VBA, så slår det gennem på alle poster.
Avatar billede kedde65 Praktikant
20. juni 2003 - 12:40 #13
Tak for hjælpen
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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