Newsgroup: it.comp.appl.access
Titolo: ADOX.Column e propietà richesto

Sto cercano di aggiungere campi ad una tabella da codice, impostatndo le
varie propietà che mi interessano, il problema sorge quando tento di
impostare la propietà richiesto su False, riporto parte del codice e la
descrizione dell'errore
    Dim catDB As ADOX.Catalog
    Dim tbl As ADOX.Table
    Set catDB = New ADOX.Catalog
    catDB.ActiveConnection = CurrentProject.Connection
    Set tbl = catDB.Tables(TabPunti)
        With tbl
            .Columns.Append Nome, 202, 255
            .Columns(Nome).Properties("Jet OLEDB:Allow Zero Length") = True
            .Columns(Nome).Properties("Nullable") = True
'se è Nullable la propietà per impostare la propietà richiesto, in ogni modo
oltre le due righe precedenti, qualunque propietà tenti di impostare access
genera sempre l'errore di seguito
        End With
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. 
(-2147217887
)
Ciao a tutti, omnitow

 ha scritto nel messaggio
news:ahpi4h$3vj$1...@fe1.cs.interbusiness.it...

Mi sembra che
Set tbl = catDB.Tables(TabPunti)
non sia l'esatto modo di aprire la tabella punti.
penserei piuttosto a
tbl.open ..... ecc ecc non sono sicuro però
Che tipo di tabella è TabPunti ???
Saluti
Marco Dell'Oca
D.M.Software

 ha scritto nel messaggio
news:ahpi4h$3vj$1...@fe1.cs.interbusiness.it...

Ciao Marco, premetto che non sono propio un'esperto di programmazione VBA
cmq, ho provato con Tbl.Open ma in ADOX non esiste questo metodo, la tabella
TabPunti è una semplicissima tabella con una chiave primaria, 2/3 indici e,
almeno per ora (sto' ancora strutturando il db), nessuna chiave secondaria
di relazione ad altre tabelle, il recordset che ne deriva dovrebbe essere un
Dynaset (se non erro). I campi che la compongono sono per la maggior parte
testo, un paio Si/No ed un contatore
omnitow

Scusate riposto il messaggio dato che ormai è sommerso dagli altri messaggi



Prova a vedere se questo esempio trovato su MSDN microsoft ti può aiutare?
Saluti
Marco Dell'Oca
D.M.Software
Attributes Property Example (VB)
This example demonstrates the Attributes property of a Column. Setting it to
adColNullable allows the user to set the value of a Recordset Field to an
empty string. In this situation, the user can distinguish between a record
where data is not known and a record where the data does not apply.
' BeginAttributesVB
Sub Main()
    On Error GoTo AttributesXError
    Dim cnn As New ADODB.Connection
    Dim cat As New ADOX.Catalog
    Dim colTemp As New ADOX.Column
    Dim rstEmployees As New Recordset
    Dim strMessage As String
    Dim strInput As String
    Dim tblEmp As ADOX.Table
    ' Connect the catalog.
    cnn.Open "Provider='Microsoft.Jet.OLEDB.4.0';data source=" & _
        "'c:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb';"
    Set cat.ActiveConnection = cnn
    Set tblEmp = cat.Tables("Employees")
    ' Create a new Field object and append it to the Fields
    ' collection of the Employees table.
    colTemp.Name = "FaxPhone"
    colTemp.Type = adVarWChar
    colTemp.DefinedSize = 24
    colTemp.Attributes = adColNullable
    cat.Tables("Employees").Columns.Append colTemp.Name, adWChar, 24
    ' Open the Employees table for updating as a Recordset
    rstEmployees.Open "Employees", cnn, adOpenKeyset, adLockOptimistic,
adCmdTable
    With rstEmployees
        ' Get user input.
        strMessage = "Enter fax number for " & _
            !FirstName & " " & !LastName & "." & vbCr & _
            "[? - unknown, X - has no fax]"
        strInput = UCase(InputBox(strMessage))
        If strInput <> "" Then
            Select Case strInput
                Case "?"
                    !FaxPhone = Null
                Case "X"
                    !FaxPhone = ""
                Case Else
                    !FaxPhone = strInput
            End Select
            .Update
            ' Print report.
            Debug.Print "Name - Fax number"
            Debug.Print !FirstName & " " & !LastName & " - ";
            If IsNull(!FaxPhone) Then
                Debug.Print "[Unknown]"
            Else
                If !FaxPhone = "" Then
                    Debug.Print "[Has no fax]"
                Else
                    Debug.Print !FaxPhone
                End If
            End If
        End If
        .Close
    End With
    'Clean up
    tblEmp.Columns.Delete colTemp.Name
    cnn.Close
    Set rstEmployees = Nothing
    Set cat = Nothing
    Set colTemp = Nothing
    Set cnn = Nothing
    Exit Sub
AttributesXError:
    If Not rstEmployees Is Nothing Then
        If rstEmployees.State = adStateOpen Then rstEmployees.Close
    End If
    Set rstEmployees = Nothing
    If Not tblEmp Is Nothing Then tblEmp.Columns.Delete colTemp.Name
    Set cat = Nothing
    Set colTemp = Nothing
    If Not cnn Is Nothing Then
        If cnn.State = adStateOpen Then cnn.Close
    End If
    Set cnn = Nothing
    If Err <> 0 Then
        MsgBox Err.Source & "-->" & Err.Description, , "Error"
    End If
End Sub
' EndAttributesVB