Newsgroup: it.comp.lang.visual-basic
Titolo: Campo Richiesto?!?

Buongiorno a tutti.
Ho stabilito una connessione ADO con un database Access 2000 e ho la
necessità di sapere di una determinata tabella quali campi sono 'richiesti'
e quali no. Riesco a recuperare di ogni campo della tabella il nome, il
tipo, la precisione...
    Dim Reco As ADODB.Recordset
    Dim fld As ADODB.Field
 
    Set Reco = New ADODB.Recordset
    Reco.CursorType = adOpenKeyset
    Reco.LockType = adLockOptimistic
    DoEvents
    Reco.Open "SELECT * FROM " & NomeTabella & "", Connessione,
adOpenForwardOnly, adLockReadOnly
 
    For Each fld In Reco.Fields
        Debug.Print "Nome " & fld.Name & " - Tipo " & fld.Type
    Next
Devo interpretare la proprietà "Attributes" (fld.Properties) per capire se
un campo è "richiesto" o no?
Grazie mille.
Alder
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

Credo che con solo ADO non te le cavi ... prova a dare un occhio
alle tabelle di sistema ... ovviamente nascoste e vedi se c'è scritto
li dentro ... altrimenti con ADOX recuperi lo schematable e li
sicuramente trovi quello che cerchi.
Ciao
Andrea

 capire se un campo è "richiesto" o no?
Se hai un recordset (rs) aperto con ADO:
    If rs(campo_nome).Properties("IsAutoIncrement") Then ...
Con ADOX ti riporto quanto testualmente ho scritto nel mio ESP0DAMA (sul SC
di questo NG):
                If ESF0DAMA.chk_sql_server.Enabled <> 0 And
ESF0DAMA.chk_sql_server <> 0 Then
'                       Con SQL Server la proprieta' AutoIncrement (da
Catalog, non da campo su recset aperto) non va.
'                       E se quelli di ADO (e magari quelli di SQL Server)
andassero un po' a cagare sulle zucche?
                    info_campi(5, n_campo) = -1 'Indica non disponibile.
Beoni!
'                       120104-INIZIO
                    If catalogo.Tables(n_tabella).Columns(n_campo - 1).Type
= adInteger Then
'                           Non ho trovato una costante che possa indicare
se campo autoincrementate in ADO+SQL Server
'                           Comunque i campo Long (adInteger) hanno 2^1=2
alto se normali, basso se autoincrementante
                        info_campi(5, n_campo) =
IIf((catalogo.Tables(n_tabella).Columns(n_campo - 1).Attributes And 2 ^ 1),
0, 1)
                    End If
'                       120104-FINE
                Else
                    If ESF0DAMA.opt_jet400 Then
                        info_campi(5, n_campo) =
IIf(catalogo.Tables(n_tabella).Columns(n_campo -
1).Properties("AutoIncrement"), 1, 0)
                    Else
'                           120104-INIZIO
                        If catalogo.Tables(n_tabella).Columns(n_campo -
1).Type = adInteger Then
'                               Non ho trovato una costante che possa
indicare se campo autoincrementate in ADO+Jet351
'                               Comunque i campo Long (adInteger) hanno
2^1=2 alto se normali, basso se autoincrementante
                            info_campi(5, n_campo) =
IIf((catalogo.Tables(n_tabella).Columns(n_campo - 1).Attributes And 2 ^ 1),
0, 1)
                        End If
'                           120104-FINE
                    End If
                End If

 ha
scritto:

--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

attualmente no ... cerca su google ... di roba ne salterà fuori
parecchia.
Ciao
Andrea