Newsgroup: it.comp.lang.visual-basic
Titolo: gestione limiti dei campi in SQLServer

Salve a tutti
Sto scrivendo un programma VB che si interfaccia a un database SQLSever. Al
momento sto scrivendo il codice per salvare le modifiche e aggiungere un
nuovo record.
Il problema che incontro è quando le mie textbox sono vuote e il campo si
aspetta un numero.
Sebbene il campo abbia l'opzione Consenti NULL attiva, la textbox vuota mi
genera un errore "-
2147352571
: Incompatibilità tra i tipi". Però, se apro la
tabella direttamente da SQLServer, noto che nello stesso campo molti record
contengono la voce <NULL>, e ciò conferma che il campo supporta i valori
Null. (Stranamente se cancello un valore esistente dentro un campo, e poi mi
sposto su un altro record ottengo un errore "Il valore specificato non è
valido per il tipo di dati o lunghezza della colonna". Ma allora, una volta
impostato un valore in un campo, non è più possibile settarlo su Null?)
Come posso passare un valore Null ad un campo numerico?
Ho anche il problema di gestire la lunghezza dei campi: se un campo è,
mettiamo, nvarchar 10 e io gli passo da VB 11 caratteri, ottengo un errore
"-
2147217887
: Multiple-step OLE DB operatiom generated errors. Check each
OLE DB status value, if avaliable. No work has done.", che è piuttosto
bruttino da presentare all'utente. "... Check each status value..."?? Ma io
ho una miriade di controlli, e di più tipi, nelle form. Li devo controllare
uno per uno?
Insomma, vorrei sapere se c'è un metodo da seguire o un'impostazione da
settare, o in generale come ci si comporta. Io ero abituato in Access che
quando il campo era di 10 caratteri e l'utente glie ne dava 11, lui salvava
solo i primi 10. C'è un modo per fare lo stesso con SQLServer?
Leggerò con attenzione ogni commento di voi che utilizzate SQLServer, vi
rigrazio tutti fin da adesso, e mi scuso per la lunghezza del post. Ciao.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ha scritto nel messaggio
news:151Z37Z67Z17Y1...@usenet.libero.it...


 nuovo record.
Se le modifiche o gli inserimenti li esegui, come fortemente 
consigliato, con statement Sql (Update e Insert, nello specifico), i 
tuoi dubbi si risolvono così:
- I valori numerici devono SEMPRE essere convertiti da textbox.text 
(cioè tipo stringa) a valore numerico, e quindi formattati in stringa 
col punto come separatore. Questo passaggio non è specifico di 
Sql-Server, ma è come questa cosa va fatta in assoluto.
- Il NULL può essere inserito utilizzando NULL direttamente nella lista 
dei valori (Esempio: INSERT INTO TABELLA (CAMPO1, CAMPO2) VALUES 
('TESTO', NULL)), senza delimitatori
- Se per 'aprire la tabella direttamente da Sql-Server intendi 
visualizzare le righe con Enterprise Manager (che non è Sql-Server, ma 
un client di amministrazione), puoi inserire Null in un campo con 
CTRL+0.
- I campi testo devono essere SEMPRE fatti passare attraverso un LEFT$ 
e poi attraverso un Replace per raddoppiare gli apicini. Anche questo 
non è specifico di Sql-Server, ma buona prassi.
Se invece hai collegato i textbox al recordset o a un AdoDataControl... 
allora facci l'abitudine. E' una funzionalità che non va.
Ciao
Alberto
-- 
Ma noi no

 Alberto
Ciao e grazie.


 Saluti
Ciao e grazie.


 ha scritto nel messaggio
news:151Z37Z67Z17Y1...@usenet.libero.it...


 Fields("ART_SCONTO1_1").Value = val(txtSconto1_1.Text)
grazie, oggi farň un tentativo con Val, e sto anche guardando se riesco ad
automatizzare l'impostazione di MaxLenght al load delle form.


 perchè passerei l'istruzione Sql con cn.Execute.
E, fra parentesi, avresti imho meno casini.
