15. juni 2003 - 21:01Der 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?
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.
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
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...
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.
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.
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?
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"
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.
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.
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.
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.