Newsgroup: it.comp.lang.visual-basic
Titolo: Access: impostare colonna "richiesto=No"

Oggi mi sento idiota:
devo impostare, in un campo esistente di Access 97, le seguenti proprietà:
"Richiesto=No" e "Consenti lunghezza Zero=Sì"
Per quanto riguarda la seconda proprietà ("Consenti lunghezza Zero=Sì") uso
ADOX:
with Cat.Tables(NomeTabella).Columns(NomeCampo)
    If .Properties("Jet OLEDB:Allow Zero Length").Value = False Then
      .Properties("Jet OLEDB:Allow Zero Length").Value = True
    End If
end with
E funziona senza problemi.
Per quanto riguarda la prima ("Richiesto=No") provo con
If .Properties("Nullable").Value = True then   ' qui leggo senza problemi
    .Properties("Nullable").Value = False
Sull'assegnamento ottengo:
"Si sono verificati errori in un'operazione OLE DB composta da più passaggi.
Controllare i singoli valori di stato OLE DB, se disponibili. Nessuna
operazione eseguita."
Ok. E' in sola lettura.
Cambio linea di attacco:
Eseguo il seguente Statement SQL:
"ALTER TABLE" &  tabella & " ALTER COLUMN " & anag_lname & " TEXT(30) NULL"
Nessun errore.
Solo che la proprietà "Richiesto=No" non cambia di una virgola.
Mi sfugge qualcosa?
<x:\termoPilucco>

 <x:\termoPilucco>
ciaociao

 richiesto=no
No. Non è indice, non è chiave e non ha relazioni.
Il bello è che l'esecuzione dello statement SQL non da' errore.
Tra l'altro ho provato a cambiare così:
"ALTER TABLE" &  tabella & " ALTER COLUMN " & anag_lname & " TEXT(31) NULL"
la modifica della dimensione del campo funziona. Però la proprietà
"Richiesto" rimane su "Sì".
Per ora ho trovato questo (in DAO) che funziona:
DBDAO.TableDefs(NomeTabella).Fields(NomeCampo).Required =false
Però mi sembra assurdo che una cosa del genere non si possa fare in ADO.
<x:/termoPilucco> AD Oggi usavo ADO, DA Ora uso DAO.

 <x:/termoPilucco> AD Oggi usavo ADO, DA Ora uso DAO.
LOL

 Però mi sembra assurdo che una cosa del genere non si possa fare in ADO.
A me per niente.
Lupo.sempre.in.attesa.di.Alletun.per.Ordinal.Position.in.ADO...

č strano, l'errore che da č 80040e21 e cioč:
This may be caused by trying to insert more data into a field than is
allowed. For example, inserting 26 characters into a Microsoft Access field
that is formatted to accept only 25 characters.
....non capisco il nesso con l'impostazione della property
Nullable....mumble...mumble....

nel mentre che navigavo allegramente nel sito MS ho trovato questo:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;272001
ma ancora non mi spiego il perchč con ALTER TABLE non vada......

 ma ancora non mi spiego il perchè con ALTER TABLE non vada......
Ma... parrebbe un baco anche questo. Soprattutto visto che non ricevo alcun
messaggio di errore.
Comunque, fortunatamente, la tecnica DAO funziona e, visto che avevo già i
riferimenti, la cosa si è risolta in quattro righe
<x:termoPilucco>, quattro sì, però grondanti di sudore.

 <x:termoPilucco>, quattro sì, però grondanti di sudore.
:)
ciaociao

 ma ancora non mi spiego il perchè con ALTER TABLE non vada......
Perchè forse l'ALTER se ne strabatte, quelli infatti citano CREATE...

 Perchè forse l'ALTER se ne strabatte, quelli infatti citano CREATE...
A questo punto, se ALTER non sopporta la clausola NULL, perchè caçço viene
accettata la sintassi? :)
<x:termoPilucco>

 corretto... e se chi tace acconsente.....
E no!
"Chi tace non dice nulla".
<x:termoPilucco> e l'eccezione non solo non conferma la regola, ma la
demolisce.

 demolisce.
quoto
ciaociao