Newsgroup: it.comp.lang.visual-basic
Titolo: db sql servert

Cari colleghi,
vorrei sapere come posso dire a sql server di troncare il dato che passo ad
un campo di un record se questo è superiore alla sua dimensione,
ad esempio Codice 30 caratteri e io faccio una insert con 40 caratteri.
risultato : con sql server si schianta, con access lo tronca e basta.
Non vi spiego il motivo per cui mi è necessario che mi venga troncato il
dato, spero che esista una opzione che dica al database di troncare senza
rompere troppo le balle .....
graazie
ciao
Ale

 ha scritto nel messaggio
news:EBLI7.12685$5l.2...@news1.tin.it...


 Cari colleghi,
CUT
senza stare a bacarti troppo le p%%%e! se usi ado fatti una funzione ad
esempio FormattaCampi e dentro mettici
ad es.
Me.an_Cellulare.MaxLength = rsCliente("Cellulare").DefinedSize
si va a pescare da se la dimensione massima del campo (in questo caso
cellulare) e la mette dentro la textbox come massima lunghezza.
Se poi la funzione la agganci nel load hai belle fatto tutto devi al limite
solo controllare che la textbox sia vuota se il db non gestisce valori
nulli...da retta funziona bene e ti risparmi un sacco di casini!
Bye man!

 wrote in message
news:NfMI7.12962$5l.2...@news1.tin.it...


forse non sono stato chiaro ....
ok io uso ado ma quando inserisco un dato dentro la tabella sql server io
uso il metodo execute passando come parametro l'istruzione 'sql' + o -
standard, quindi  ...
connessione.execute "insert into tabella (id,codice) values
(200,'
12345678901
')", , adCmdText
in struttura il campo è definito come nvarchar di 10 caratteri, se io
eseguissi l'istruzione precedente il risultato in sql server diventa "String
or binary data would be truncated." e ovviamente non inserisce il record
invece in access non ritornano errori (errors.count = 0) e mi inserisce il
record con il valore 'codice' troncato a 10.
Io vorrei se possibile che funzionasse in sql server come in access, come ?
grazie
Ale
Wodka4U <marc_cHa_o@mar_Xp_tek.it> wrote in message
news:HDMI7.13068$5l.3...@news1.tin.it...


 ha scritto nel messaggio
news:AmNI7.12165$0x4.2...@news2.tin.it...
CUT
forse mi son spiegato male....se il tuo SQLserv si aspetta una stringa di 10
caratteri (per me) è sbagliato concettualmente passargliene 11!
Il fatto che Access ti tronchi senza chiederti nulla è una cattiva abitudine
di Access!
è giusto (sempre secondo me) imparare a passare i parametri i più congrui
possibili con i tipi di dati usati (anche come lunghezza).
Che tu utilizzi:
insert into tabella (id,codice) values (200,'
12345678901
') non rileva... lo
so anch'io come è il comando sql ...ma quel '
12345678901
' da dove viene?
...i tuoi dati li raccogli da qualche parte...se li raccogli da un form con
l'istruzione che ti suggerivo, se hai impostato codice a lunghezza 10 nella
casella non potevi raccogliere che 10 caratteri con un indubbio vantaggio:
l'utente del tuo programma se fai quello che vorresti fare scrive:
codice: "LIBROAK123TRS" e viene memorizzato "LIBROAK123"
...quindi un codice sbagliato e per di più un bug molto subdolo...sei
convinto di aver inserito un dato ed invece è un altro!
come ti proponevo alla decima lettera si rifiuta di inserire altre lettere
ed il tuo utente si accorge subito che sta introducendo un codice invalido!
...non pensare solo a programmare ...pensa anche a chi userà il tuo
programma!devi semplificarli la vita non complicargliela!
bye man!
;-)


Allora vedi di validare i dati prima di passarli a Sql Server...
ciao
ugo

 ugo
....forse è proprio quello, che non sa fare!
ciao!
:-)

 ha scritto nel messaggio
news:8lNI7.12159$0x4.2...@news2.tin.it...


 saluti
mega-cut

 ri-saluti!
Sě, concordo in pieno.
E' vero che č possibile troncare i valori in fase di insert query, ma č
altrettanto vero che l'utente che inserisce una descrizione da 6327
caratteri e se la trova poi troncata a 10 potrebbe quantomeno prendersela...
:-P
ciao
ugo