Newsgroup: it.comp.appl.access
Titolo: UPDATE con campo VERO/FALSO

Ciao a tutti! Devo aggiornare da VB il campo booleano di una tabella.
Esempio:
Set Pc = CurrentDb.OpenRecordset("SELECT ID, FLAG FROM Clienti WHERE
ID=1")
CurrentDb.Execute "UPDATE Clienti_New SET FLAG = " & Pc(1) & " WHERE
ID = 2"
Per tutta risposta Access mi da: Parametri insufficienti. Previsto 1.
Mi sapete dire come modificare la riga dell'UPDATE? Grazie!!!!

Francesco Salvagnini ha scritto:

Provato con PC![FLAG]?
-- 


Il valore di FLAG (-1/0, vero/falso, Sì/No) è una variabile, che si va
a prendere quando popola l'Area Pc. Non è il campo di una maschera.
Non so se mi spiego.. Grazie comunque! ; )

 Non so se mi spiego.. Grazie comunque! ; )
Questo Fair87 l'aveva capito e di grosso.
sei certo che flag sia valorizzato?
E poi fare pc(1) e' proprio brutto, si perde la "relazionalita'".
PC![FLAG] e' meglio.
--
ac

Grazie Fair, grazie Alessandro. Ho provato anche con Pc![FLAG], ma il
risultato è lo stesso. Deve dipendere proprio dal Tipo di Dati che
vado ad aggiornare. Infatti se aggiorno testi o numeri non mi dà
problemi. Penso che per il booleano bisogna inserire prima del Pc!
[FLAG] qualche funzione particolare... ma non so quale!!

Non so se mi spiego.. Grazie comunque! ; )
..e infatti mica ho scritto Forms!Nome.Campo.value.......hai aperto un
recordset....di solito l'errore è che al campo si/no non viene assegnato un
default, quidi il suo valore, se è vuoto, non è FALSE ma NULL.....e jet,
giustamente, s'inc....
:)
-- 

In questo caso, Pc![flag] ha come valore falso.. il valore predefinito
nella tabella Clienti è No..
Ma a te, per curiosità, funziona l'update con un campo boolean?


ok
prova cosi':
"UPDATE Clienti_New SET FLAG = " &  nz(Pc(1),0) &  " WHERE
ID = 2"
e vedi se continua a fare le bizze.
--
ac

Macché.., ho già provato.. Nz serve per trasformare i Null in zero.
Qui ci vuole qualche funzione che trasformi Vero in -1 e falso in 0.
Possibile che non ci sia? No, certo che no! Karl Donaubauer lo saprà
di sicuro, ma il sito dove interveniva è stato oscurato...(
http://www.microsoft.com/office/community/it-it/default.mspx?dg=microsoft.public.it.office.access&lang=it&cr=IT
)


mancano i doppi apici a "& pc &", siccome vuoi inserire " in altre "" le 
devi raddoppiare, per cui diventa cosi:
CurrentDb.Execute "UPDATE Clienti_New SET FLAG = "" & Pc(1) & "" WHERE
ID = 2"
-- 
Ciao
Geppo 


Karl interviene anche qui gia' da quando il sito della Microsoft non 
esisteva.
Il boolean e' un campo "falso", di fatto e' un byte (numerico) e non a 
caso falso = 0 e vero e' #0 che poi access per default usi -1 e' 
convenzione ma se ci metti un valore tra 1 e 255 (che sarebbe il -1 in 
campo segnato) fa la stessa cosa.
Stessa cosa dicasi per i campi di tipo Data o Counter anch'essi *inventati*

 ha scritto nel messaggio 
news:1553fbf5-396c-46ff...@e20g2000vbn.googlegroups.com...

Ciao Francesco,
il valore di un campo booleano concatenato in una stringa viene trasformato 
da VBA a seconda della localizzazione del sistema operativo, se la 
localizzazione è "italiano" il valore booleano verrà trasformato in Vero o 
Falso che sono termini incomprensibili per il motore del database Jet.
Per risolvere puoi passare il valore numerico corrispondente ovvero -1 o 0 
in questo modo:
----
CurrentDb.Execute "UPDATE Clienti_New SET FLAG = " & Cint(Pc(1)) & " WHERE 
ID = 2"
----
Ciao
Giorgio Rancati 

Giorgio sei un MITO, non ci sono parole !!! Sembra quasi che Access
sia una tua creatura, da come riesci a trovare le soluzioni più
brillanti. Esco dal Newsgroup inchinandomi e congiungendo le mani,
come si conviene agli imperatori.
Grazie, Francesco ; )

Giorgio sei un MITO, non ci sono parole !!! Sembra quasi che Access
[CUT]
Esagerato :-)
Giorgio Rancati 

Anzi, mi son dimenticato di specificare il senso di marcia:
retrocedente!
A parte gli scherzi: se pensi che una risposta da un tecnico Microsoft
costa 350 euro (e se ne devono acquistare almeno 10), tu sei un Ente
di Pubblico Soccorso Informatico. Le tue risposte sono da
incorniciare. Senza l'aiuto tuo e di qualche altro avrei impiegato
tempi biblici per realizzare il mio software. Riconoscente, Francesco.