我在VB中用ADO执行SQL动态创建表时,语法如下。
"create table student (xh varchar(16) not NULL,xm varchar(16) not NULL,xb varchar(2) NULL,bj varchar(20) NULL)"创建的student表中bj字段,我本打算是可以为空的。
但ACCESS表的字段为字符型时有另外一个属性:“允许空字符串”。默认为“否”。
使得我的bj字段不能为空,请问怎么更改该属性?

解决方案 »

  1.   

    我的access:“允许空字符串”。默认为“是”,是不是access本身的问题,你重新装或者在别的机器上看看?
      

  2.   

    标准答案来了:
      dim localcon1 As ADODB.Connection
      Set localcon1 = New ADODB.Connection
      localcon1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\localdb.mdb;" & "Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;Jet OLEDB:Database Password="
        Dim cat As New ADOX.Catalog
        Set cat.ActiveConnection = localcon1
        cat.Tables.Item("student").Columns("bj").Properties("Jet OLEDB:Allow Zero Length") = True
        Set cat = Nothing
        localcon1.Close
        set localcon1=nothing
      

  3.   

    不行呀
    cat.Tables.Item("student").Columns("bj").Properties("Jet OLEDB:Allow Zero Length") = True
    这句出错 “未找到项目”
      

  4.   

    dim sql as string
      
    dim localcon1 As ADODB.Connection
      Set localcon1 = New ADODB.Connection
      localcon1.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\localdb.mdb;" & "Mode=Share Deny Read|Share Deny Write;Persist Security Info=False;Jet OLEDB:Database Password="    '加上这两句就行了,原来要先建好表再改属性
        sql = "create table student(ID counter PRIMARY KEY,bj varchar(50))"
        localcon1.Execute sql    Dim cat As New ADOX.Catalog
        Set cat.ActiveConnection = localcon1
        cat.Tables.Item("student").Columns("bj").Properties("Jet OLEDB:Allow Zero Length") = True
        Set cat = Nothing
        localcon1.Close
        set localcon1=nothing