Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

如何增加或者减少字段名称

研究研究  发表于:2015-10-21 18:59:29  
复制

点击下载此附件


本人新手很多地方都搞不明白想高手指点

    Dim db1 As Database
    Dim rs1 As Recordset
    Set db1 = OpenDatabase(ThisWorkbook.Path & "\学生成绩管理.mdb")
    Set rs1 = db1.OpenRecordset(Name:="期末成绩", Type:=dbOpenDynaset)

接下来我想完成2个动作

      if rs1下面没有 "总分"的字段名称 then 创建一个   "总分"
      if rs1下面有 "体育"的字段名称 then 删除  "体育" 




 

Top
杜超 发表于:2015-10-22 16:36:10
可以用隐藏

研究研究 发表于:2015-10-22 19:12:23

我的意思是:

                如果 【期末成绩】表的字段 有【体育】 则删除

                如果 【期末成绩】表的字段 没有【总分】 则增加一个 



最终结果是这样样子





各位大侠我想要详细的VBA过程,不是最后的结果。因为我想学习一下ACCESS和EXCEL



研究研究 发表于:2015-10-23 12:46:47
自己顶一下

研究研究 发表于:2015-10-24 12:37:01

搞不明白下面2句话怎么才能加到我的代码中让其生效







煮江品茶 发表于:2015-10-24 14:46:58

试试:

Public Sub AddOrDeleteField(ByVal filepath As String, ByVal tablename As String, ByVal fieldname As String, ByVal b As Boolean)
    '功能:增加或删除表中字段
    '引用:Mocrosoft ADO Ext 2.8 for DDL and Securty
    '参数:filepath--数据库文件地址
    '      tablename--表名
    '      fieldname--字段名
    '      b--新增还是删除,true(新增) false(删除)
    Dim conn As New ADODB.Connection
    Dim cat As New ADOX.Catalog
    Dim tb As ADOX.table
    Dim f As ADOX.Column
   
    conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & filepath
    conn.Open
    Set cat.ActiveConnection = conn
    Set tb = cat.Tables(tablename)
   
    If b = True Then
        If ExistField(tb, fieldname) = False Then
            Set f = New ADOX.Column
            f.name = fieldname
            f.Type = adDecimal
            tb.Columns.Append f
        End If
    Else
        If ExistField(tb, fieldname) = True Then
            Set f = tb.Columns(fieldname)
            tb.Columns.Delete f
        End If
    End If

    conn.Close
    Set cat = Nothing
    Set conn = Nothing
    Set tb = Nothing
    Set f = Nothing
End Sub

 



研究研究 发表于:2015-10-24 17:35:15
ExistField  报错 

煮江品茶 发表于:2015-10-25 12:27:22

 


Public Function ExistField(ByRef tb As ADOX.table, ByVal fieldname As String) As Boolean
    Dim b As Boolean
    Dim f As ADOX.Column
    b = False
    For Each f In tb.Columns
        If f.name = fieldname Then
            b = True
            Exit For
        End If
    Next
    ExistField = b
End Function

 



研究研究 发表于:2015-10-25 13:52:13
亲  加上这段代码后继续报错与  tb.Columns.Delete f

研究研究 发表于:2015-10-26 19:21:04

已经有高手在这里回答了。谢谢各位

http://www.accessoft.com/bbs/showtopic.asp?ID=25233&BoardID=17


煮江品茶  虽然最后还是不能用,但我还是要谢谢你及各位高手的帮助



总记录:9篇  页次:1/1 9 1 :