Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6 + MDB] Impostare NULLABLE per un campo tramite DLL

Ciao,
avrei la necessità di modificare la proprietà NULLABLE di 4 campi in
una tabella.
Usando il DDL, posso scrivere una cosa simile:
ALTER TABLE tbl_name ALTER COLUMN column_name column_type NULL;
ma esiste un comando per modificare contemporaneamente tutti i campi
che desidero?
Tnx!
Daniele.

Barzo@Google ha scritto:

Se per MDB intendi una versione > A97 bene altrimenti anche quella
sintassi
non funziona(devi prima fare un ADD COLUMN, quindi un UPDATE nella
nuova
ed infine DROP, quindi con DAO un Rename del Nuovo Field)
Esempio:
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=207
Per versioni superiori invece quanto hai scritto funziona ma che io
sappia non sono ammesse variazioni plurime, devi farlo uno per volta.
Anche facendolo con DAO o con ADOX lo faresti sempre uno per volta...!
Se può esserti di qualche aiuto, ma ne dubito prova avedere quì:
http://support.microsoft.com/default.aspx?scid=kb;en-us;275561
@Alex

 Anche facendolo con DAO o con ADOX lo faresti sempre uno per volta...!
Si, immaginavo...ma ci ho voluto provare lo stesso!! ;)
Grazie!
Daniele.

 Per versioni superiori invece quanto hai scritto funziona
Mmmm.. ho provato, l'istruzione viene eseguita correttamente (se, per
esempio, cambio il tipo di campo questo viene modificato correttamente)
ma se poi vado ad aprire la struttura della tabella risulta ancora
"Consenti lunghezza zero = NO", come mai?
Tnx.
Daniele.

Barzo@Google ha scritto:

Mi smentisco subito, con Jet SQL non è possibile nonostante venga
accettato, devi
ricorrere ad ADOX o DAO, non hai alternative.
Se ti serve il codice fammi sapere.
@Alex

 ricorrere ad ADOX o DAO, non hai alternative.
Azz...volevo proprio evitare di usare ADOX...vabbč!
Grazie Alex!
Daniele.
-- 
*******************
Free As In Freedom
-= 
www.fsf.org
 =-

 Daniele.
Beh se l'accoppiata deve rimanere su MDB tanto vale farlo con DAO....
ti eviti
la rogna della distribuzione di ADO e la verifica di MDAC....!
@Alex

 Daniele.
-- 
Bye
Raf
-----------------------------------------------------
Funk: cooler than the other side of the pillow.

 Length" dell'oggetto ADOX.Column corrispondente.
Ah, se non vuoi usare ADOX, per ottenere qualcosa di equivalente, puoi imporre
un vincolo CHECK. Es:
ALTER TABLE tbl_name ADD CONSTRAINT constraint_name CHECK (Len(column_name)>0)
Ma poi non lo vedrai nell'UI di Access.


Rafunk ha scritto:

Cioè vuoi dire che lo imposta regolarmente ma che non viene esposto
aprendo
la struttura Tabellare di Access...?
Che strana anche questa cosa..., in ogni caso buono a sapersi.
@Alex

 la struttura Tabellare di Access...?
Precisamente. Estratto da
http://msdn.microsoft.com/library/en-us/dnacc2k/html/acintsql.asp?frame=true#acintsql_ddlconst
 :
"Note
The check constraint statement can only be executed through the Jet OLE DB
provider and ADO; it will return an error message if used though the Access SQL
View user interface. Also note that to drop a check constraint, you must issue
the DROP CONSTRAINT statement through the Jet OLE DB provider and ADO. Also, if
you do define a check constraint: (1) it won't show as a validation rule in the
Access user interface (UI), (2) you can't define the ValidationText property so
that a generic error message will display in the Access UI, and (3) you won't be
able to delete the table through the Access UI or from code until you drop the
constraint by using a DROP CONSTRAINT statement from ADO."
Ciao


 ADOX.Column corrispondente.
Me ne sono accorto subito dopo aver postato. :)
Mi sono guardato le proprietà esposte dal Jet e infatti c'era proprio
'Allow Zero Length'!!
Anche perchè impostando a True la proprietà 'Nullable' ritornava
l'errore "Errore in un'operazione composta da più passaggi.....',
forse perchè questa risultava essere già vera.
Ciao!
Daniele.