Foxtable(狐表)用户栏目专家坐堂 → 有个奇怪的错误,请帮忙分析分析


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

主题:有个奇怪的错误,请帮忙分析分析

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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
有个奇怪的错误,请帮忙分析分析  发帖心情 Post By:2019/9/9 23:37:00 [只看该作者]

我碰到个莫名其妙的错误,实在是测不出来哪里出的问题。因为比较复杂,很难发例子上来,看看我是否能描述清楚:
一个窗体,两个table控件,两个外部数据源的表。入库表,入库明细表,按需加载。
窗体beforeclose有代码,判断入库表或者明细表有haschange=true,则messagebox,提醒。
奇怪的是,我的确认保存按钮(add)一按,后台数据库一切正常运行,但关闭窗口便弹出以上的messagebox。
经测试是明细表的原因。但是不管是用历遍所有列的值,弹出一个个检查,还是后台sqlserver查看,都显示数据是没有任何更改的。
我的add按钮点击之后,会把add按钮本身enable设为false。只要把这句代码e.Form.Controls("add").Enabled = False,注释掉,beforeclose的弹窗居然就不弹了。
请老师帮忙分析一下,可能是什么原因呢。我实在是用来好多办法,都解决不了

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:108006 积分:549429 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/10 8:45:00 [只看该作者]

beforeclose和保存按钮全部代码发上来看看。

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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/9/10 21:46:00 [只看该作者]

table1是明细表,table2是入库表

beforeclose代码:
If DataTables("StockInN_Table2").HasChanges Or DataTables("StockInN_Table1").HasChanges Then
    Dim rst As Dialogresult
    rst = MessageBox.show("入库单未入库,是否直接退出? 如果要保存请按【确认入库】按钮","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)
    Se/ect Case rst
        Case DialogResult.no
            e.cancel = True
    End Se/ect
End If

确认入库按钮(add1),click事件:
Dim tb1 As Table = Tables("StockInN_Table1")
Dim tb2 As Table = Tables("StockInN_Table2")
DataTables("StockInN_Table2").save()
If DataTables("StockInN_Table2").HasChanges = True Then
    Return
Else
    DataTables("StockInN_Table1").save()
    If DataTables("StockInN_Table1").HasChanges = True Then
        Return
    End If
End If    '先保存,如果不能保存就不继续

Dim sql As new SQLCommand
Dim lsb As DataTable
sql.C
sql.CommandText = "se/ect * fr om {产品库存信息} where 1 = 0"
lsb = sql.ExecuteReader(True)    '生成临时表,设成True,库存信息可以保存
Dim ck As String = tb2.Rows(0)("仓库编号")
Dim gys As String = tb2.Rows(0)("供应商编号")
Dim bh As String = tb2.Rows(0)("对应编号")
Dim hs As Integer = tb1.Rows.Count
For i As Integer = 0 To hs -1
    Dim hh As String = tb1.Rows(i)("基础货号")
    Dim gj As String = tb1.Rows(i)("产地国家码")
    Dim kcm As String = hh & gj & gys & ck    '生成产品库存码,基础货号+国家码+供应商码+仓库码
    Dim h As DataRow
    h = lsb.SQLFind("产品库存码 = '" & kcm & "'")
    If h IsNot Nothing Then
        h("当前库存数量") = h("当前库存数量") + tb1.Rows(i)("数量")
        h.save()
    Else
        Dim xh As DataRow
        xh = lsb.AddNew()
        xh("产品库存码") = kcm
        xh("基础货号") = hh
        xh("产品基本名称") = tb1.Rows(i)("产品基本名称")
        xh("原产地国") = tb1.Rows(i)("原产地国")
        xh("产地国家码") = gj
        xh("供应商名称") = tb2.Rows(0)("供应商名称")
        xh("供应商编号") = gys
        xh("仓库名称") = tb2.Rows(0)("入库仓库")
        xh("仓库编号") = ck
        xh("当前库存数量") = tb1.Rows(i)("数量")
    End If
Next
lsb.save()
If ancs = "cgrk" Then    ‘这是全局变量,判断入库类型,会有不同的设置,也很奇怪,只有这个类型会出现我说的错误,其他类型就不出现。但是注释掉这整段还是一样会出现弹窗。
    Dim sql3 As new SQLCommand
    sql3.C
    sql3.CommandText = "up d ate {采购下单表} se t 采购单状态 = '已入库' w here 采购编号 = '" & bh & "'"
    sql3.ExecuteNonQuery    '添加之后便到采购下单表标注一下单子已成功
End If
e.Form.Controls("ad").Enabled = False
e.Form.Controls("del").Enabled = False
e.Form.Controls("beiz").Enabled = False
e.Form.Controls("dybh").Enabled = False
e.Form.Controls("rkck").Enabled = False
e.Form.Controls("gys").Enabled = False
e.Form.Controls("add1").Enabled = False        ‘只要把这条注释掉就没弹窗了
e.Form.Controls("add").Enabled = True
e.Form.Controls("bq").Enabled = True
For Each l As Col In tb1.Cols
    MessageBox.show(tb1.Current(l.Name))
Next

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

备份项目。把"add1"这个按钮删除,然后重新添加,按钮名不再使用"add1",换个名称。然后退出项目,删除bin目录,重启项目,再试试。

按钮还有没有其它事件代码?窗口全局事件有没有什么代码?

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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/9/10 22:11:00 [只看该作者]

按钮就这一个事件,全局代码就定义了几个变量,无其他。我用你的方法试试看

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


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/9/11 8:05:00 [只看该作者]

完全按你的步骤操作,成功了。非常感谢!

 回到顶部