在 ADO 中动态改变Access表中的字段的类型,将字符型字段的‘允许空字符串’ 设置为‘是’。缺省为‘否’在VB中可以这样                  ADOX 可以。                        Function ChengTableFieldPro_ADO()
                            Dim MyTableName As String
                            Dim MyFieldName As String
                            Dim GetFieldDesc_ADO
                            Dim GetFieldDescription
                            MyTableName = "ke_hu"
                            MyFieldName = "dw_name"
                            
                            Dim MyDB As New ADOX.Catalog
                            Dim MyTable As ADOX.Table
                            Dim MyField As ADOX.Column
                            On Error GoTo Err_GetFieldDescription
                            
                            MyDB.ActiveConnection = CurrentProject.Connection
                            Set MyTable = MyDB.Tables(MyTableName)
                            GetFieldDesc_ADO = 
                        MyTable.Columns(MyFieldName).Properties("Description")
                               
                              
                            Dim pro As ADODB.Property
                            For Each pro In 
                        MyTable.Columns(MyFieldName).Properties
                                Debug.Print pro.Name & " : " & pro.Value & " 
                        ---- type : " & pro.Type
                            Next
                            
                            With MyTable.Columns(MyFieldName)
                                
                                '.Properties("nullable") = True    '必填
                                '必填无法用上述代码设置,出错提示为:
                                '多步 OLE DB 操作产生错误。如果可能,请检查每个 OLE DB 状态值。没有工作被完成。
                                '目前可以用以下语句设置:
                                
                        'CurrentDb.TableDefs("ke_hu").Fields("DW_NAME").Properties("Required") 
                        = False
                                .Properties("Jet OLEDB:Allow Zero Length") = 
                        True   '允许空 
                                .Properties("default") = "默默默默认认认认"      '默认值
                            End With
                            Set MyDB = Nothing
                        Bye_GetFieldDescription:
                            Exit Function
                        Err_GetFieldDescription:
                            Beep
                            Debug.Print Err.Description
                            MsgBox Err.Description, vbExclamation
                            GetFieldDescription = Null
                            Resume Bye_GetFieldDescription
                        End Function

解决方案 »

  1.   

    ALTER TABLE [TABLE_NAME] ALTER COLUMN [COLUMN_NAME] [datatype] NOT NULL
    TABLE_NAME:表名
    COLUMN_NAME:字段名
    datatype:数据类型(此处应使用原来的数据类型)
    可通过TADOQuery的ExecSQL执行。
      

  2.   

    Alter Table Table1 ALTER COLUMN Column1 Char(20) Default 1
      

  3.   

    我知道用ALTER TABLE [TABLE_NAME] ADD COLUMN [COLUMN_NAME] [DATATYPE] NOT NULL
    增加一个字段,但是我要增加的这个字段 允许空字符串 NOT NULL 为不允许为空(不允许等于NULL) 允许空字符串为可以为“”;
    例 : 增加一个字段为‘内容’,varchar(50) not null 允许空字符串
      

  4.   

    关注难道这个问题就没人懂吗?看来delphi板块水平还是不行呀。
      

  5.   

    四年前就要解决这个问题,结论是用SQL不行,用DAO可以。当时这么说的,不知对不对
      

  6.   

    结论就是:在当前的OLEDB连接中没办法做到,它不支持;,只能做到的是,sCompany Text(32) Null Default "", 我找了很多资料,只找到这些结果;据说在AccessXp中支持,期待中……