Foxtable(狐表)用户栏目专家坐堂 → [求助]动态修改表结构问题


  共有2818人关注过本帖树形打印复制链接

主题:[求助]动态修改表结构问题

帅哥哟,离线,有人找我吗?
薛翁
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:80 积分:836 威望:0 精华:0 注册:2015/8/29 18:22:00
[求助]动态修改表结构问题  发帖心情 Post By:2020/9/6 22:24:00 [只看该作者]

我在做工资程序时碰到一个头疼的问题  
          恳请赐教!谢谢!

在工资系统中用户自定义了“工资结构”表
有列名、类型和宽度(如:姓名,C,4)
外表数据源的"当前工资表"中除第一个列外,其他列均删除
执行下面的程序后达到预期效果。
Dim Names As New List(Of String)
For Each cn As Col In Tables("当前工资表").Cols
    names.Add(cn.name)
Next
Dim Builder As New ADOXBuilder("CAIWU")
Builder.Open() '打开ADOXBuilder
With Builder.Tables("当前工资表")
    For i As Integer = 1 To Names.Count -1
        .DeleteColumn(names(i))
    Next
End With
Builder.Close()

下面这段增加列的程序无法运行,提示错误:
对 COM 组件的调用返回了错误 HRESULT E_FAIL。
请老师看一下这段程序有什么错误。

Dim jg As Table = Tables("工资结构")
Dim Builder As New ADOXBuilder("CAIWU") '要指定数据源名称
Builder.Open()
With  Builder.Tables("当前工资表")
    For Each r As Row In jg.Rows
        Dim zdm As String = r("列名")
        Dim lx As String = r("类型")
        Dim kd As Integer = r("宽度")
        If lx = "C" Then
            .AddColumn( zdm ,ADOXType.String, kd )
        ElseIf lx = "N" Then
            .AddColumn( zdm ,ADOXType.Double )
        End If
    Next
End With
Builder.Close()
MessageBox.Show("OK!")
[此贴子已经被作者于2021/4/20 2:31:19编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/9/6 22:29:00 [只看该作者]

1、所有开发功能在编译后都无法使用
2、如果是外部表,可以使用sql更改:https://www.baidu.com/baidu?word=SQL+更改列,内部表没有办法
建议在开发阶段就设置足够大的列长度

 回到顶部