我用了下面的方法
   Dim oCnn As New ADODB.Connection
   Dim strLink As String
       '连接数据库
    strLink = "Driver={Microsoft dBASE Driver (*.dbf)};" & _
                 "DriverID=277;" & _
                 "Dbq=c:\;"
                 
    oCnn.CursorLocation = adUseClient
    oCnn.Open strLink
    oCnn.Execute "alter table Test 'fobjid5' varchar(50)"
可是出错说
[Microsoft][ODBC dBase Driver] 含有数据的表不支持的操作。
还用了ADOX的TABLE对象的APPEND方法
也提示说出错
对象或提供程序不能执行所需的操作
请问该如何为DBF文件添加一个字段?谢谢大家了
又该如何删除一个字段呢?

解决方案 »

  1.   

    ALTER TABLE 语句修改已用 CREATE TABLE 语句创建好的表设计。注意   Microsoft Jet 数据库引擎并不支持使用 ALTER TABLE,或任何非 Microsoft Jet 数据库数据定义语言 (DDL) 语句。而由 DAO Create 方法取代。语法ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] |
    CONSTRAINT multifieldindex} |
    DROP {COLUMN field I CONSTRAINT indexname} }ALTER TABLE 语句分为以下几个部分:部分 说明
    table 欲修改的表之名称。
    field 欲在表内增加或删除的字段的名称。
    type 字段的数据类型。
    size 字段的字符长度 (仅文本字段及二进制字段)。
    index 字段索引。关于如何构造字段索引的详细信息,请参阅 CONSTRAINT 子句主题。
    multifieldindex 欲增加至表 中的多重字段索引的定义。关于如何构造此子句的详细信息,请参阅 CONSTRAINT 子句主题。
    indexname 欲删除的多重字段索引的名称。
    说明使用 ALTER TABLE 语句,可用多种不同方法更改当前已存在的表:?使用 ADD COLUMN 在表中添加新的字段。需要指定字段名、数据类型、还可以 (对文本和二进制字段)指定长度。 例如,下列语句在员工表中增加一 25 个字符的、名为 Notes 的文本字段:ALTER TABLE Employees ADD COLUMN Notes TEXT(25)也可以定义此字段的索引。关于单一字段索引的详细信息,请参阅CONSTRAINT 子句主题。如果对一字段指定 NOT NULL,则在这字段中添加的新记录必须有有效的数据。?使用 ADD CONSTRAINT 添加多重字段索引。关于多重字段索引的详细信息,请参阅 CONSTRAINT 子句主题。
    ?使用 DROP COLUMN 删除字段。只要指定欲删除的字段名即可。
    ?使用 DROP CONSTRAINT 删除多重字段索引。只要在 CONSTRAINT 保留字后面指定索引名即可。注意?不能同时添加或删除一个以上的字段或索引。
    ?可以使用 CREATE INDEX 语句添加单一或多重字段索引至一表,也可以用 ALTER TABLE 或 DROP语句来删除用 ALTER TABLE 或 CREATE INDEX 创建的索引。
    ?可以在单一字段上使用 NOT NULL,或在名为 CONSTRAINT 的子句中使用 NOT NULL,这个名为 CONSTRAINT 的子句应用于单一字段或名为 CONSTRAINT 
    的多重字段。不管怎样,只能在一字段上使用 NOT NULL 一次,否则将发生执行时的错误。============================================================================此示例在员工表中增加 Currency 数据类型的一个工资字段。Sub AlterTableX1() Dim dbs As Database '在您的计算机中修改此行使其正确指到 Northwind 
    '的路径。
    Set dbs = OpenDatabase("Northwind.mdb") '添加工资字段至员工表中,
    '并且设置为 Currency 数据类型。
    dbs.Execute "ALTER TABLE Employees " _
    & "ADD COLUMN Salary CURRENCY;" dbs.CloseEnd Sub此示例从员工表中删除工资字段。Sub AlterTableX2() Dim dbs  As Database '在您的计算机中修改此行使其正确指到 Northwind 
    '的路径。
    Set dbs = OpenDatabase("Northwind.mdb") '从员工表中删除工资字段。
    dbs.Execute "ALTER TABLE Employees " _
    & "DROP COLUMN Salary;" dbs.CloseEnd Sub此示例在订单表中增加一外部键。这个外部键是基于员工编号字段和引用至员工的表中的员工编号字段。此示例中,在 REFERENCES 子句中并没有列出员工表的员工编号字段,这是因为员工编号为员工表的主键。Sub AlterTableX3() Dim dbs As Database '在您的计算机中修改此行使其正确指到 Northwind 的路径。
    Set dbs = OpenDatabase("Northwind.mdb") '在订单表中添加外部键。
    dbs.Execute "ALTER TABLE Orders " _
    & "ADD CONSTRAINT OrdersRelationship " _
    & "FOREIGN KEY (EmployeeID) " _
    & "REFERENCES Employees (EmployeeID);" dbs.CloseEnd Sub此示例从订单表中删除外部键。SubSub() Dim dbs As Database '在您的计算机中修改此行使其正确指到 Northwind 的路径。
    Set dbs = OpenDatabase("Northwind.mdb") '由订单表中删除 OrdersRelationship 外部键。
    dbs.Execute "ALTER TABLE Orders " _
    & "DROP CONSTRAINT OrdersRelationship;" dbs.CloseEnd Sub
      

  2.   

    谢谢楼上的朋友,按您的意见,我试了
    可是仍然提示说所用的表,并不提供所做的操作
    请问该如何解决呢?
    DBF文件是DBASE的,不是VF的