以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求教用ADOXBuilder如何修改列类型 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=32552) |
-- 作者:cxabc123 -- 发布时间:2013/5/3 22:52:00 -- 求教用ADOXBuilder如何修改列类型 在帮助中用ADOXBuilder可以动态创建表和列、重命名列,那么如何用ADOXBuilder修改列类型,或者有其他办法 又如:对字符列的长度进行修改,该如何写代码 [此贴子已经被作者于2013-5-3 22:53:52编辑过]
|
-- 作者:cxabc123 -- 发布时间:2013/5/4 13:30:00 -- 以下是引用muhua在2013-5-4 8:57:00的发言:
先执行DeleteColumn 再执行AddColumn
您说的这个方法是在表刚创建还可以用,但是创建之后并录入了数据,发现设置的列类型有问题需要修改时就不能用了,比如字符列,由于设置时对字符长度估计不准,需要修改为备注型时,或者需要对字符长度进行修改时,这种方法就不好使了. |
-- 作者:don -- 发布时间:2013/5/4 13:36:00 -- 以下是引用cxabc123在2013-5-4 13:30:00的发言:
您说的这个方法是在表刚创建还可以用,但是创建之后并录入了数据,发现设置的列类型有问题需要修改时就不能用了,比如字符列,由于设置时对字符长度估计不准,需要修改为备注型时,或者需要对字符长度进行修改时,这种方法就不好使了. 这个是设计师责任了:比如设计一座桥梁,当初没充分考虑过几年后可能车流量,几年后满足不了车流量,如何解决?能简单加宽吗? |
-- 作者:傻马难骑 -- 发布时间:2013/5/7 20:47:00 -- 以下是引用don在2013-5-4 13:36:00的发言:
期待狐狸爸爸解释下,应该有解决的办法吧 |
-- 作者:don -- 发布时间:2013/5/7 23:37:00 -- 以下是引用傻马难骑在2013-5-7 20:47:00的发言:
期待狐狸爸爸解释下,应该有解决的办法吧 曲线救国的办法也是有的: 储存 ==> 删除 ==>增加 ==> 赋值 Dim cmd As New SQLCommand Dim dt As DataTable cmd.C cmd.CommandText = "SELECT * From {客户}" dt = cmd.ExecuteReader() Dim Builder As New ADOXBuilder("Sale") \'要指定数据源名称 Builder.Open() With Builder.Tables("客户") .DeleteColumn("客户名称") .AddColumn("客户名称" ,ADOXType.String, 100) End With Builder.Close() \'关闭ADOXBuilder For Each dr As DataRow In dt.datarows Dim cmd1 As New SQLCommand cmd1.C cmd1.CommandText = "UPDATE {客户} SET 客户名称 = \'" & dr("客户名称") & "\' WHERE 客户ID = \'" & dr("客户ID") & "\'" cmd1.ExecuteNonQuery() Next Syscmd.Project.Open(ProjectFile) |
-- 作者:cxabc123 -- 发布时间:2013/5/8 9:03:00 -- 这种办法和2楼的一样,并不是很理想
|
-- 作者:don -- 发布时间:2013/5/8 9:08:00 -- 以下是引用cxabc123在2013-5-8 9:03:00的发言:
这种办法和2楼的一样,并不是很理想
在老大強大ADOXBuilder前,這是唯一能做的 |
-- 作者:don -- 发布时间:2013/5/8 9:17:00 -- 搜索到SQL修改列類型的方法: 例:表table2中的列id为int型,现改为char型 alter table table2 alter column id char |
-- 作者:don -- 发布时间:2013/5/8 9:32:00 -- 試驗成功! Dim cmd As New SQLCommand Dim dt As DataTable cmd.Connection Name = "Sale" cmd.CommandText = "alter Table 客户 alter Column 客户名称 Text" cmd.ExecuteNonQuery() Syscmd.Project.Open(ProjectFile)
|
-- 作者:cxabc123 -- 发布时间:2013/5/8 10:32:00 -- 谢谢帮助 |