PDA

View Full Version : [Vb e Access]


-K2-
28-07-2004, 14:34
Sto riempendo di record una tabella in Access 2002 da visual basic 6.0 con un loop che esegue tanti insert quanti sono i record che ho estratto con una select. Il problema è che nelle tabelle caricate i dati stringa hanno una lunghezza pari a quella della definizione del campo: in poche parole un codice lungo 2 mi risulta lungo 10 (se in campo codice ha lunghezza 10). Access mi aggiunge tutti spazi alla fine. Qualcuno ha mai riscontrato questo problema? Non è la prima volta che carico delle tabelle e non mi era mai successo nulla di simile.

st = "CREATE TABLE ArtCat3 "
st = st & "(Codice char(8), Descri char(32));"
Con2.Execute (st)
st = "SELECT CatOmo.Categoria AS codice, CatOmo.Descri FROM CatOmo"
rs.Open st, con, adOpenStatic, adLockReadOnly
Do While Not rs.EOF
st = "INSERT INTO ArtCat3 VALUES ('" & RTrim(rs("codice")) & "','" & RTrim(StringaPerQuery(rs("Descri"))) & "')"
Con2.Execute (st)
rs.MoveNext
Loop
rs.Close


Nella Insert utilizzo anceh trim ma nulla da fare.

Grazie a chiunque risponderà!!!!

matpez
28-07-2004, 23:44
NO! Mai avuto questo problema, ci lavoro molto con VB + Access, ma nulla.. molto probabilemente perchè io creo già tutto in access e poi ci scrivo dentro :rolleyes:

-K2-
29-07-2004, 07:48
Ho scoperto su #VisualBAsic che il problema era dato dal fatto che per la CREATE TABLE utilizzavo il tipo di dato CHAR al posto di VARCHAR, tutto qui.

Mitzuashi
30-07-2004, 16:55
Ciao,
hai ragione perfettamente, se usi un campo di tipo char, il database utilizzerà tutta la lunghezza del campo per il valore, il consiglio (come in fondo ti sei già risposto) è di utilizzare campi di tipo char quando l'informazione che inserisci è a lunghezza fissa (esempio password hashate in md5) e varchar per gli altri utilizzi.