Form istanziate che lavorano sulla stessa tabella

di il
5 risposte

Form istanziate che lavorano sulla stessa tabella

Ciao
premessa:
ho creato un form che serve a visualizzare (ed eventualmente modificare) i dati in una tabella.
Siccome non voglio che i dati vengano modificati direttamente/accidentalmente ma solamente dopo la pressione del tasto "modifica" ho creato una tabella temporanea.
Quindi la procedura di questo form è:
-copia i dati dalla tabella principale sulla tabella temporanea
- visualizza/modifica i dati della tabella temporanea
- eventualmente salva i dati sovrascrivendoli sulla tabella principale.

E fin qua tutto ok.
Ho voluto però istanziare questo form in modo che possa aprire più record contemporamente.
E con il metodo delle collection ho risolto pure quello.
La tabella temporanea però è sempre la stessa.
Il form si apre mostrandomi l'ultimo record che ho copiato nella tabella temporanea.
Con questo sistema la tabella temporanea si popola dei record che voglio visualizzare/modificare.
Voglio quindi svuotarla man mano che chiudo i form istanziati

Sull'evento Close del form istanziato ho previsto che svuoti la tabella con una "DELETE FROM tabellatemporanea WHERE Codice= '" & me!Codice & "'"

Il guaio è che con la prima finestra che chiudo la procedura funziona, dalla seconda in poi me!codice mi risulta vuoto.

Dove sbaglio?

5 Risposte

  • Re: Form istanziate che lavorano sulla stessa tabella

    Ma usare le Standard Properties delle Form Associate non ti bastava...?
    [AllowEdits]=False ---> Form Non Modificabile
    Basta forzare la properties=True e diventa modificabile...

    Il tuo metodo è francamente assurdo, solo pensare di usarlo in MULTIUTENZA farebbe accapponare la pelle...

    Ora a parte il gioco di usare Form in MultiIstanza e Collection, tecniche preposte di solito all'uso di CLASSI(e la Form tuttavia lo è...) relativamente agli Oggetti DataBound ci sono gli strumenti NATIVI per fare le cose in modo semplice.

    Se vuoi esporre quali problemi hai trovato ad usare i metodi che tutti di norma usano, a partire dalle Properties sopracitate, per arrivare alla strategia del BLOCCO RECORDS, ottimistico o pessimistico per l'eventuale MULTIUTENZA... possiamo anche valutarlo.

    Fatta tutta questa premessa di schiuma, non voglio certamente costringerti a cambiare strategia, ma volevo capire i motivi TECNICI che ti hanno portato a pensare fosse la strada giusta, che magari mi sfuggono e mi sono sfuggiti in tanti anni...
  • Re: Form istanziate che lavorano sulla stessa tabella

    Sono autodidatta.. non avendo nessuno che mi guidi, ho creduto fosse la strada corretta e ho seguito quella..
    Domani provo a modificare il programma...
    Grazie comunque
  • Re: Form istanziate che lavorano sulla stessa tabella

    Sono anch'io autodidatta...(considerazione non utile al fine del 3D.. ma solo per solidarietà).
  • Re: Form istanziate che lavorano sulla stessa tabella

    Ho eliminato tutta la parte della tabella temporanea.
    Ora la maschera lavora direttamente sulla tabella principale però con Allowedit impostato a falso, quindi in sola visualizzazione.
    Per impostarlo a vero ho messo un bottone in modo che l'utente entri in modalità modifica consapevolmente.
    Voglio però che le modifiche vengano ulteriormente confermate alla fine, prima di chiudere la finestra o si cambi record.
    Per salvarle ho inserito il bottone salva runcommand acCmdSaveRecord + tutta la procedura per tornare in modalità visualizzazione.

    Voglio però che venga ricordato di salvare nel caso in cui venissero fatte delle modifiche e si chiudesse la finestra/cambiasse record proponendo un msgbox.

    Per fare questo ho utilizzato un check sul me.dirty sull'evento on beforeupdate del form ma non va bene perchè Beforeupdate scaturisce anche dal comando acCmdSaveRecord.

    Cosa consigliate? Pensavo a un check su una variabile, o a un flag sul titolo, o su un controllo...
  • Re: Form istanziate che lavorano sulla stessa tabella

    BeforeUpdate espone il Parametro CANCEL per annullare l'evento..., e potresti sempre definire una Private Variable a livello di Form di tipo BOOLEANO che Setti TRUE su comando SALVA e Resetti su AFTERUPDATE... eventualmente...
    Se su BeforeUpdate non hai le condizioni forzi CANCLE=TRUE...

    Prova a vedere questo DEMO che ho fatto... forse qualche spunto utile lo puoi trovare:
    http://forum.masterdrive.it/access-79/form-subform-navigazione-managment-69075/
Devi accedere o registrarti per scrivere nel forum
5 risposte