以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在MessageBox对话框语句中调用函数时,有时会出错,但有时也不会,不知大家遇到过没有?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=95324)

--  作者:百灵
--  发布时间:2017/1/16 17:48:00
--  在MessageBox对话框语句中调用函数时,有时会出错,但有时也不会,不知大家遇到过没有?
MessageBox对话框语句中调用函数时,有时会出错,但有时也不会,不知大家遇到过没有?我的一个项目中,如下代码:
Dim Result As DialogResult
        Result = MessageBox.Show("删除列后将无法恢复,是否删除列?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
        If Result = DialogResult.Yes Then         
            Functions.Execute("删除列")   
        End If
有时就出现“找不到datatable("当前表表名”)“的情况,查不出什么问题


--  作者:百灵
--  发布时间:2017/1/16 17:58:00
--  
Functions.Execute("删除列") 删除窗口表中列,代码如下:
Dim tb As Table = CurrentTable
Dim n As String = tb.DataTable.name
Dim cl As Col = tb.cols(tb.ColSel)
Dim y As String = tb.DataTable.ConnectionName
If DataTables(n).dataCols.Contains(cl.Name)  Then
    \'删除列
    Dim cmd As New SQLCommand
    cmd.ConnectionName = y
    Dim s As String
    s  = "alter Table  " & n & " drop column " & cl.Name
    cmd.CommandText = s
    cmd.ExecuteNonQuery()
    
    \'重新加载表
    DataTables.UnLoad(n)
    Dim q As new OuterTableBuilder
    q.TableName = n
    q.TableCaption = n
    q.ConnectionName = y
    q.SelectString = "Select * Fro m {" & n & "}"
    q.Build    
    \'绑定表
    If Tables.Contains(n) Then
        MainTable = Tables(n)
        Tables("导航_Table1").DataSource  = DataTables(n)
    End If
End If

--  作者:百灵
--  发布时间:2017/1/16 17:59:00
--  
初步判断是MessageBox对话框语句中调用函数的问题,不知道是不是?
--  作者:有点色
--  发布时间:2017/1/16 18:11:00
--  

你的那些都是OuterTableBuilder表吗?这句代码可以去掉 DataTables.UnLoad(n)

 

你给你的函数加入msgbox,看看,是哪一句代码开始出错的。


--  作者:百灵
--  发布时间:2017/1/16 18:24:00
--  
 试了一下,偶尔这句过不了,
q.SelectString = "Select * Fro m {" & n & "}"
    q.Build
但大多数时候又可以

--  作者:百灵
--  发布时间:2017/1/16 18:29:00
--  
有问题时就出现这个
图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20170116182220.png
图片点击可在新窗口打开查看

--  作者:百灵
--  发布时间:2017/1/16 18:30:00
--  
然后是这个
[此贴子已经被作者于2017/1/16 19:20:21编辑过]

--  作者:有点色
--  发布时间:2017/1/16 18:33:00
--  
 你外部数据库那里,有对应的表名吗?是数据库的表名。
--  作者:百灵
--  发布时间:2017/1/16 18:37:00
--  
access数据库在本机,“测试”是我要删除列的表名,大多数情况下可以,少数情况下报错
--  作者:百灵
--  发布时间:2017/1/16 18:45:00
--  
想上传的截图,不知怎么也上传不了