Modifica di una tabella con VB

giovedì 20 marzo 2008 - 16.21

thetmd Profilo | Newbie

Ciao, continuo a ritrovarmi a dover combattere con access e quindi eccomi qui a chiedere un consiglio. Ho una tabella nella quale ho 2 campi boolean
La tabella la visualizzo come sottomaschera in un form.

Il primo campo boolean mi serve per indicare quali elementi devo poi passare ad una query.
Il secondo voglio utilizzarlo per 'memorizzare' quali elementi ho già passato.
Questa 'memorizzazione' voglio farla all'atto della chiusura della maschera.

Come devo scrivere il codice? non capisco come fare riferimento ad una tabella da codice.

Potete darmi una mano
Grazie
Pierpaolo

alpanix Profilo | Junior Member

>Ciao, continuo a ritrovarmi a dover combattere con access e quindi
>eccomi qui a chiedere un consiglio. Ho una tabella nella quale
>ho 2 campi boolean
>La tabella la visualizzo come sottomaschera in un form.
>
>Il primo campo boolean mi serve per indicare quali elementi devo
>poi passare ad una query.
>Il secondo voglio utilizzarlo per 'memorizzare' quali elementi
>ho già passato.
>Questa 'memorizzazione' voglio farla all'atto della chiusura
>della maschera.
>
>Come devo scrivere il codice? non capisco come fare riferimento
>ad una tabella da codice.
>
>Potete darmi una mano
ciao
se ho ben capito il primo campo ti serve per passare il dato ed il secondo per non passarlo più, giusto?
da codice, secondo me, non devi intervenire
devi, semmai, intervenire da query

ecco una semplice query sql adatta all'uopo:
select * from tabella where boolean1 = true and boolean2 = false

basterà che scateni la query con un pulsante nella maschera principale
per registrare poi quali record hai già passato dalla tabella alla query, sarà sufficiente richiamare una query di aggiornamento alla chiusura della maschera
questa query dovrà settare a true il secondo boolean di ogni record che sulla tabella ha il primo boolean = true

breve esempio di query di aggiornamento utile:
update tabella set boolean = true where boolean1 = true and boolean2 = false


>Grazie
prego


AlPanix

thetmd Profilo | Newbie

Rieccomi...grazie per la risposta, ha risolto il problema, però (:oP)
c'è cmq modo di fare tutto tramite VBA? o di associare il codice al pulsante senza creare la query? (questo perchè, per mie fissazioni, non mi piace avere una query che alla fine serve tanto quanto, sto tentanto di lasciare il database il più pulito possibile)

Ora ho il problema (in realtà lo avevo da prima, ma me ne sono accorto solo ora) che, quando apro il form, il primo campo boolean DEVE essere SEMPRE reimpostato a FALSO, perchè nulla mi impedisce di passare anche un valore già stampato alla query di stampa.
Cosa mi consigliate? un'alrta query di aggiornamento?
Mi piacerebbe agire a livello di programmazione, per sapere bene come interagire con le tabelle, piuttosto che una ennesima query... :P...(vedi commento di prima)

Ciao e grazie ancora
Pierpaolo

alpanix Profilo | Junior Member

>Rieccomi...grazie per la risposta, ha risolto il problema, però
>(:oP)
>c'è cmq modo di fare tutto tramite VBA? o di associare il codice
>al pulsante senza creare la query? (questo perchè, per mie fissazioni,
>non mi piace avere una query che alla fine serve tanto quanto,
>sto tentanto di lasciare il database il più pulito possibile)
ti capisco
per farlo a livello di codice basta che ti crei le query in sql nello stesso identico modo e le esegui tramite il comando DoCmd.RunSQL
così sono query volatili e non le hai nella pagina della query

>Ora ho il problema (in realtà lo avevo da prima, ma me ne sono
>accorto solo ora) che, quando apro il form, il primo campo boolean
>DEVE essere SEMPRE reimpostato a FALSO, perchè nulla mi impedisce
>di passare anche un valore già stampato alla query di stampa.
>Cosa mi consigliate? un'alrta query di aggiornamento?
>Mi piacerebbe agire a livello di programmazione, per sapere bene
>come interagire con le tabelle, piuttosto che una ennesima query...
>:P...(vedi commento di prima)
nessuna query
l'impostazione predefinita la puoi impostare a livello VBA con l'evnto "Load" della tua form
è sufficiente che tu imposti e forzi il valore del boolean1 a falso ogni qualvolta la form viene aperta

>Altra cosa: il form ha due campi:
>una casella combinata con la quale (attraverso le proprietà "Collega
>campi secondari" e "collega campi master") filtro la sottomaschera.
>Però ho bisogno di eseguire un ulteriore filtro sulla sottomaschera.
>Come posso fare?, sempre utilizzando "Collega campi secondari"
>e "collega campi master"??
a prescindere da tutto non credo sia possibile collegare più campi master/secondari nella stessa form
comunque immagino che la subform abbia origine da una query
detto ciò, puoi impostare i parametri della tua query (anch'essa volatile, se non ti piace crearla fisicamente) sulla selezione di tutte le combo che vuoi
l'importante è che per ogni selezione, nel codice devi includere il richiamo al metodo requery della subform (subform.ReQuery) in modo che la stessa recuperi questi parametri e si auto-filtri

>Ciao e grazie ancora
prego

AlPanix

thetmd Profilo | Newbie

ho utilizzato lle proprietà "collega campi secondari" e "collegat campi master" ed ha funzionato.
nella riga delle proprietà ho scritto
Collega campi master: primo campo;secondo campo
Collega campi secondari: primo campo;secondo campo

pare funzionare, non so se sia molto ortodosso ma funziona, per il momento mi acocntento, fino a quando non divento più esperto :P

Per la modifica del valore provo poi a fare come mi dici, ora finisco altro :P

grazie per i consigli!
Pierpaolo

alpanix Profilo | Junior Member

>nella riga delle proprietà ho scritto
>Collega campi master: primo campo;secondo campo
>Collega campi secondari: primo campo;secondo campo
si impara sempre qualcosa..


AlPanix

thetmd Profilo | Newbie

> nessuna query
> l'impostazione predefinita la puoi impostare a livello VBA con l'evnto "Load" della tua form
> è sufficiente che tu imposti e forzi il valore del boolean1 a falso ogni qualvolta la form viene aperta

Non capisco bene...a quale form ti riferisci? a quello principale o al sub?
inoltre il primo capo boolean è presente per ogni record del subform (tra parentesi il subform non è altro che una tabella visualizzata in modalità DATI)..quindi dovrei azzerare il primo boolean per ogni record presente nella tabella...

alpanix Profilo | Junior Member

>Non capisco bene...a quale form ti riferisci? a quello principale
>o al sub?
mi riferisco a qualsiasi checkbox che vuoi rendere falso

>inoltre il primo capo boolean è presente per ogni record del
>subform (tra parentesi il subform non è altro che una tabella
>visualizzata in modalità DATI)..quindi dovrei azzerare il primo
>boolean per ogni record presente nella tabella...
non dovrai azzerare nessun checkbox se non lo vuoi
se vuoi che ad ogni apertura della form il checkbox della form stessa (o ogni checkbox della subform) sia falso, inserisci come comando nell'evento Load della form principale:

CheckBoxCheVuoiTu = False

oppure lancia una query di aggiornamento per i dati della tabella relativa rendendo False tutti i campi che ti serve azzerare



AlPanix
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5