PDA

Visualizza versione completa : [Access] Aggiungere controlli da codice...


Fast-M
09-02-2007, 11.42.42
Salve a tutti, volevo solo un aiutino su come fare per aggiungere dei controlli in un form tramite codice vba in seguito ad un evento o ad una condizione.
In pratica non conosco il metodo da usare dell'oggetto form o dell'insieme controls per potere aggiungere ad esempio un controllo checkbox o altro.
Infatti vba di access non supporta il metodo .add sull'insieme Controls che contiene tutti i controlli di un form.

Mi spiego meglio...io dovrei aggiungere in un form tanti quadratini rossi o verdi in base allo stato di un campo "disponibilità" di una tabella "Posizioni" del db di access.
Avendo visto l'oggetto Immagine che grazie alla proprietà Picture può caricare un'immagine contenuta in un file presente in una cartella, es:

Immagine1.picture="c:\img1.gif" (quadratino rosso)
Immagine1.picture="c:\img2.gif" (quadratino verde)

e con questo avevo pensato che tramite un banale ciclo for con dentro un if che verifica il contenuto di quel campo in tutta la tabella utilizzando un recordset o la funzione Dlookup si poteva facilmente aggiungere tante immagini quante sono le tuple della tabella e così dare una rappresentazione grafica di tutte le posizioni e del relativo stato libero o occupato.
Quando però ho provato questo approccio in vba di access sono stato bloccato dal fatto che questo non supporta il metodo add per la collection di tipo controls.
Se avete qualche consiglio su un approccio più adatto in vba di access proponetelo pure.


Grazie!

miciomao
11-02-2007, 21.21.04
Io non credo che ti convenga fare tutto sto bordello per colorare 2 quadratini
diventa un pò pesantuccia la cosa...

Il metodo che ho adottato io è il seguente:

Creo 2 caselle di testo nel form e le rendo di dimensioni quadrate (0,5x0,5 diciamo)
a tutte e 2 imposto il carattere Webdings
ma una avrà colore carattere verde e l'altra rossa
ora nell'origine controllo della verde inserirai la seguente formula
=IIf([nomecampodisponibilità]="Condizionevera";"g";"")
dove condizionevera è quel valore univoco che accenderà la casella verde
se il valore condizionevera è un numero potrai impostare la formula
diversamente tipo:
=IIf([nomecampodisponibilità]<10;"g";"")

Nell'altra casella farai uguale naturalmente cambiando il valore di condizione


Dunque la lettera g del carattere Webdings è esattamente un quadrato che potrai ingrandire/ridurre solo cambiando il valore di grandezza carattere

Fast-M
12-02-2007, 03.13.48
Si grazie per l'idea, ma siccome il numero delle posizioni non è fisso e tra l'altro neanche il numero delle file e delle posizioni per fila lo è, come faccio ad inserire le textbox inizialmente?
Non ho capito bene io la tua soluzione oppure non mi sono spiegato correttamente sul problema?
Grazie per l'aiuto!

miciomao
12-02-2007, 09.44.02
perchè non mi dici che tipo di dati possiede il campo disponibilità e degli esempi di valori possibili ?
così ti allego un'esempio