ACCESS 利用ADO和ADOX 修改表字段名称(原创)
这次的教学是运用ADO和ADOX 来修改一个ACCESS表中的字段名称.相信有一部分的高级设计者需要用到..
窗体设计首先多谢浪子(QQ 695020102)的模板.我只是加上代码而己
1.首先新建一个ABC表内容为A1,B1,C1 三个字段.之后新建一个窗体.拉入一个列表框(大家可以用其他方法来显示.不必一定用列表框.原理一样而己)

2.在窗体的按钮点击或窗体载入事件中..加入读取ABC表字段的代码
Dim rs As ADODB.Recordset
Dim yyy As String
Dim b As Recordset
Dim m As Integer
Dim y As String
Set rs = New ADODB.Recordset
y = "select * from abc"
rs.Open y, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
m = rs.Fields.Count
For i = 0 To m - 1
Me.列表框.AddItem (rs.Fields.Item(i).Name) '把ADO中RS取得的表字段名.用FOR 写入到列表框中.
Next i
3.检视窗体.我把代码放到窗体的载入事件中..运行如下图
4.建立另一个窗体.是用来修改字段的.格式如下图.
在旧字段的文字控件>数据来源中.填上 =Forms!工资项目设置!旧字段 作用是取得当前窗体取得的焦点的数据值.如下图
4.现在是到ADOX出场了.为什么不能用ADO一次做呢..在我翻查的资料中 ACCESS的JSQL语句和ADO中的语法.
都是不能直接修改表中的字段.JSQL只能先删除.再新建.这样就会令数据消失了..而ADOX正好提供了一个可以修改
表中字段的方法.
大家在使用ADOX代码时.一定要先在VBA模块中引用.要不然会报错的.用中方法如下图
把ADO EXT的勾选.点确定.就可以正式使用ADOX的代码了.
6.在窗体2的VBA代码中建立一个FUNCTION.ChangeTableFieldName_ADO()是我们自己定议的一个类.再填上要用到的三个参数
Function Test()
ChangeTableFieldName_ADO "ABC", Me.旧字段, Me.Text0 '参数1.ABC 表名 2.ME.旧字段 原字段名 3.ME.TEXT0 新字段名 ME.是引用窗体上控件的意思.
End Function
之后就是编写这个类了.代码如下
Function ChangeTableFieldName_ADO(MyTableName As String, MyFieldName As String, strNewName As String)
'3个参数:
'MyTableName 字符串,表名
'MyFieldName 字符串,原来的字段名
'strNewName 字符串,新的字段名
Dim MyDB As New ADOX.Catalog
Dim MyTable As ADOX.Table
MyDB.ActiveConnection = CurrentProject.Connection
Set MyTable = MyDB.Tables(MyTableName)
MyTable.Columns(MyFieldName).Name = strNewName
End Function
7.好了.在窗体2的VBA模块中编写好了代码之后...新填一个保存的按钮.添加代码如下
If IsNull(Me.Text0) Then '当窗体子旧字段空为真时
MsgBox "新字段未填写,请重输!", , "浪子提示"
Me.Text0.SetFocus
Else
Call Test '调用ADOX的类
MsgBox "项目已更改完成"
Forms!窗体2!旧字段.Requery
DoCmd.Close
End If
当按下按钮.提示更改完成.再新打开一次窗体1.就能看到效果的了.
.第一次发这么多图字的文章..有什么错误或不明白可以回覆
或加入我们的QQ群 17906566 ACCESS交流群
转截请标明本域名作者 MK2-风 QQ 15825970
11/4/2008 3:54:07 AM 回复该留言
老大..谢谢你的杰作..也让新人学了不少!再次谢谢!