Foxtable(狐表)用户栏目专家坐堂 → [求助]外部数据源动态修改表结构


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

主题:[求助]外部数据源动态修改表结构

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


加好友 发短信
等级:幼狐 帖子:80 积分:836 威望:0 精华:0 注册:2015/8/29 18:22:00
[求助]外部数据源动态修改表结构  发帖心情 Post By:2021/4/20 2:45: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!")

 回到顶部