PDA

Visualizza versione completa : Controlli vuoti.


Fast-M
19-05-2005, 16.41.07
Salve, qualcuno potrebbe dirmi quale è il metodo da utilizzare in genere quando si esegue una istruzione sql in access che ha come argomenti il contenuto dei controlli di una maschera e qualcuno di questi controlli potrebbe essere lasciato vuoto?
Quindi viene generato un errore di sintassi nella query lanciata perchè al posto di uno degli argomenti si va a trovate un valore Null dovuto al non popolamento del relativo controllo.
Grazie in anticipo.
:)

LoryOne
19-05-2005, 17.25.05
Si evita accuratamente di eseguire la query imponendo all'utente di specificare almeno un valore la dove si è assolutamente certi che il campo nel DB non possa accettare valori nulli.

Se è un campo di testo generalmente si controlla la lunghezza della stringa restituita dall'eliminazione degli spazi che la precedono e che la susseguono:

if len(trim$(test))<>0 then ... else ....

oppure si conta la lunghezza in byte della stringa:

if LenB(testo)<>0 then .... else ....

Fast-M
19-05-2005, 19.23.03
Si, ma questo lo facevo già.
Il mio problema non è sul fatto che non possono esserci campi null nella tabella, ma dal fatto che lasciando vuoti alcuni campi, cosa possibile e permessa nella tabella, poi la stringa usata nell'Execute viene vista con dei Null in corrispondenza dei campi in cui si trovano i controlli lasciati vuoti, quindi si genera un errore di sintassi su quella stringa sql.
Ho notato comunque che l'errore si generava soltanto dove non era presente il singolo apice oltre ai doppi apici di chiusura sql e apertura codice vb. Cioè in quei campi numerici in cui il valore essendo un integer non richiede anche il singolo apice che viene invece richiesto per i valori stringa.
Allora ho messo il singolo apice in tutti i campi, anche laddove dovrebbero arrivare valori numerici dal controllo e così pare che vada, ma devo provare meglio.
Se ci sono metodi migliori e più corretti, sono contento di conoscerli comunque.
Grazie!
:)

Fast-M
19-05-2005, 19.25.10
Comunque non pensavo che dietro access si nascondessero tutte queste insidie!