Newsgroup: it.comp.lang.visual-basic
Titolo: [Principiante] ADO

Ragazzi, da poco ho iniziato col vb... siate clementi!
Ecco il mio primo problema: creare un database access con una tabella.
<codice>
Dim db As New ADOX.Catalog
Dim table1 As New ADOX.table
db.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\prova.mdb"
table1.Name = "Persone"
table1.Columns.Append "ID", adInteger
table1.Columns.Append "Nome", adVarChar, 20
table1.Columns.Append "Cognome", adVarChar, 30
db.Tables.Append table1
</codice>
Perche' quando vado ad eseguire il codice mi sputa errore sull'ultima riga?
"Tipo non valido"...
Forse perche' alla seconda la riga la dichiarazione dovrebbe essere:
Dim table1 As New ADOX.Table
cioe' con la "t" maiuscola??? Purtroppo non ho potuto provare perche' l'ide
di vb corregge in automatico alla minuscola anche se il completamento
automatico identifica la voce in maiuscolo. Se e' questo il problema, come
si fa a scrivere ugualmente in maiuscolo?
vi ringrazio in anticipo,
tragick

 Ragazzi, da poco ho iniziato col vb... siate clementi!
CUT
...clementi...basta che non ci risponda che non sai cosa sono i riferimenti!
:-)


Si', l'ho referenziato... infatti il bello e' che l'ide completava da solo
la definizione (con la t maiuscola) e poi quando abbandonavo la riga la
cambiava (t minuscola).
A proposito, cosa sono i riferimenti? :))))
Cmq adesso che ho riaperto il progetto, come per magia, la dichiarazione non
mi viene piu' cambiata e la "t" di "Table" rimane maiuscola.
Purtroppo il risultato non cambia!
La riga
db.Tables.Append table1
produce sempre un errore di tipo.
grazie per l'attenzione, hai qualche altro suggerimento?
tragick

 ha scritto nel messaggio
news:4V9c8.16662$eD3.6...@twister1.libero.it...


 "Tipo non valido"...
Se i riferimenti del tuo prg sono quelli giusti, il problema risiede nel
"tipo" di campo che vai ad aggiungere all'insieme columns, che non è
evidentemente supportato dal db access.
Il messaggio di errore che ricevi è illuminante nella descrizione ma
purtroppo ti viene evidenziata la riga ..sbagliata...
Di seguito di mando i tipi supportati, uno più, uno meno...
adBinary, adBoolean, adCurrency
adDate, adDouble, adGUID, adInteger, adLongVarBinary
adSingle, adSmallInt, adUnsignedTinyInt, adVarBinary
adVarWChar, adWChar
purtroppo hai avuto la sfiga di sceglierne uno sbagliato...
e poi parlano della fortuna dei principianti... :-)))))
Ciao
 Valter


Wow, Valter!
Hai ragione!
Cambiando il dominio degli attributi *nome* e *cognome* da adVarChar in
adVarWChar, tutto funziona. Io avevo scelto adVarChar perche' mi ricordava
il tipo VarChar che uso nell'SQL, spero che adVarWChar sia piu' o meno la
stessa cosa.
Cmq ho un altro piccolo problema, scusa se approfitto :)))
Non e' un vero e proprio problema perche' l'ho risolto a tentativi, ma
vorrei capire perche' in un modo funziona e nell'altro no.
L'ambiente e' lo stesso del codice precedente e tralasciando la
dichiarazione e istanziazione degli oggetti ho:
<codice funzionante>
table2.Name = "Automobili"
table2.Columns.Append "Targa", adVarWChar, 7
table2.Columns.Append "PropID", adInteger
table2.Columns.Append "Marca", adVarWChar, 20
table2.Columns.Append "Costo", adInteger
table2.Keys.Append "pk", adKeyPrimary, table2.Columns("Targa")
 fkey.Name = "fk"
fkey.Type = adKeyForeign
fkey.UpdateRule = adRICascade
fkey.DeleteRule = adRICascade
fkey.Columns.Append (table2.Columns("PropID"))
fkey.RelatedTable = "Persone"
fkey.Columns("PropID").RelatedColumn = "ID"
</codice funzionante>
Se invece al posto della terzultima riga scrivo:
fkey.Columns.Append table2.Columns("PropID")
allora viene generato un errore in fase di esecuzione: l'oggetto e' gia'
presente e non puo' essere aggiunto.
Allora mi chiedo, qual e' la differenza tra le due scritture?
grazie ancora,
tragick