Newsgroup: it.comp.appl.access
Titolo: Regola Convalida

Mi sono arenato in un problema banalissimo!
Ho la necessità di inserire una tabella una convalida del tipo
Campo due > Maggiore del campo Uno  (ovvero il numero immesso nel campo due
deve sempre essere superiore al compo uno)
Ho banalmente messo nella regola > [uno] ma mi viene detto:
Sintassi SQL non valida. Impossibile utilizzare piu colonne in un vincolo
CHECK a livello di colonna.
Cosa sbaglio?
Grazie Angelo

 ha scritto nel messaggio
news:YE7Tc.39360$1V3.1...@twister2.libero.it...

Ciao, Angelo.
    Nella regola che hai immesso:
        > [uno]
e' sottinteso "[due]". Ovvero:
        [due] > [uno]
    Scritto cosi' e' ancora piu' evidente che in tale regola le colonne
coinvolte sono due. Come ti avverte il messaggio di errore, non e' possibile
usare tale sintassi a livello di colonna... ma a livello di tabella si'.
Apri quindi la finestra "Proprieta' tabella" e alla voce:
        Valido se
assegna il valore:
        [due] > [uno]
-- 
    (Facci sapere se ed eventualmente come hai risolto. Grazie.)
Ciao :o)
Maurizio Borrelli, Microsoft MVP - Office Systems - Access
--------
?SPQR(C)
 X
--------

 ha scritto nel messaggio
news:fP7Tc.9655$B06....@news.edisontel.com...

No: purtroppo sembra non funzionare.
Grazie Angelo

...

Ciao Angeo,
come avrai capito dal messaggio d'errore una regola a livello di campo non
può riferirsi ad un'altro campo.
Se vuoi puoi aggiungere una regola a livello di tabella e verrà valutata nel
momento della scrittura del record.
Per aggiungere la regola devi usare il metodo Execute dell'oggetto
Connection,
------------------------
Currentproject.Connection.Execute _
   "ALTER TABLE Tabella ADD CONSTRAINT CK_UNO_DUE CHECK ([UNO]>[DUE])"
-------------------------
Ciao Giorgio

...
[CUT]
ops, il server news di Tiscali fa oggi fa i capricci,non vedo i miei
messaggi e vedo solo adesso che Maurizio ti ha gia risposto.
Comunque (a parte l'errore di inversione [UNO]>[DUE]) se vuoi puoi
usare anche questo sistema
Ciao Giorgio

 No: purtroppo sembra non funzionare.
Ciao, Angelo.
    E allora?... Che facciamo? Ci rassegnamo o ci dici che cosa ti porta a
dire che non funziona? Ottieni un messaggio di errore?... Vengono accettati
dati che dovrebbero essere invece rifiutati? Cosa succede, insomma?...
    Ah... Hai letto cio' che ha scritto Giorgio? Perche' io ora non mi
raccapezzo piu' e puo' darsi che tu debba scrivere:
        [uno] > [due]
invece di:


 -------------------------
Questi Check Constraint di JET4 hanno il grande disavantaggio
di non essere visibili nella vis. struttura ed IMO sono raggionevoli
(è l'unica possibilità) solo nel caso di una regola che si riferisce
ad una tabella diversa.
Invece qui, come già scritto da Maurizio, basta una semplice
regola al livello di tabella se viene impostato giusta.
-- 
cu
Karl
*********
Access FAQ: 
www.donkarl.com/it

 Hai perfettamente ragione. Volevo semplicemente dire che mi dà lo stesso
tipo di errore.
A tutt'ora non ho ancora capito qual'e' il problema vero ne il significato
del messaggio.
La mia necessità è quella di poter inserire una scorta minima e una massima
e ovviamente la scorta massima non può essere inferiore alla scorta minima.
Mi sembrava banalissimo ma cosi non è.
Adesso rileggo bene i vari post e poi vi faccio sapere se ho risolto.
Grazie mille
Angelo

 ha scritto nel messaggio
news:fa6ba1b6.04081...@posting.google.com...

Francamente sembra incredibile che a livello di convalida non si possa
inserire direttamente un riferimento su altri campi ma ho consultato alcuni
libri di access e sembra che a livello di tabella non si possa proprio fare
Ho risolto creandomi una scheda su cui le regole di convalida funzionano
perfettamente
Grazie a tutti Angelo

 regola al livello di tabella se viene impostato giusta.
Ciao Karl
è vero che per questo caso basta mettere il Check nella proprietà
della tabella ma se hai più di una condizione è molto scomodo mettere
---------------
[DUE]>[UNO] AND [QUATTRO]>=[TRE] ...
---------------
perchè quando viene restituito il messaggio di errore chi usa il
programma non sa bene dove deve sistemare il dato.
mettendo invece diversi Check con il nome giusto si può indicare
subito dove il dato è sbagliato
-----------
ADD CONSTRAINT CK_Controllo_[DUE]_Maggiore_[UNO] ([DUE]>[UNO])
ADD CONSTRAINT CK_Controllo_[QUATTRO]_Maggiore_[TRE] ([QUATTRO]>[TRE])
ecc. ecc.
-----------
;-)
Ciao Giorgio

 perfettamente
 
Ciao Giorgio

 ha scritto nel messaggio
news:YE7Tc.39360$1V3.1...@twister2.libero.it...

Ciao Angeo,
come avrai capito dal messaggio d'errore una regola a livello di campo non
può riferirsi ad un'altro campo.
Se vuoi puoi aggiungere una regola a livello di tabella e verrà valutata nel
momento della scrittura del record.
Per aggiungere la regola devi usare il metodo Execute dell'oggetto
Connection,
------------------------
Currentproject.Connection.Execute _
   "ALTER TABLE Tabella ADD CONSTRAINT CK_UNO_DUE CHECK ([UNO]>[DUE])"
-------------------------
Ciao Giorgio