Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
If Tables(e.form.Name).Current("请购依据") ="销售订单" Then
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 系统单号 From {销售订单}"
dt = cmd.ExecuteReader()
e.Sender.ComboList= dt.GetComboListString("系统单号")
End If
我在控件里面判断如果是下销售订单的时候,可以下拉显示系统单号,但是如果显示手工录入的时候,本框下拉没有数据,要手工输入,我应该怎么设置?
第二个:我用这个判断 If DataTables("产品").HasChanges Then 但是发现一个问题,复制和自动输入的数据不会判断修改,这个是怎么回事?
1、第一个问题,下来框没有数据,说明你的代码没有执行,这样判断一下啊:
Messagebox.show(Tables(e.form.Name).Current("请购依据"))
Messagebox.show(Tables(e.form.Name).Current("请购依据") ="销售订单")
If Tables(e.form.Name).Current("请购依据") ="销售订单" Then
'其他代码
End If
2、第二个问题不存在,不管以任何形式修改数据,HasChanges都会等于True。第一次编辑,你得等编辑结束后,离开单元格或者编辑框,也就是表的数据发生变化后,HasChanges才会等于True。
并非你在单元格或者编辑框输入的过程,HasChanges的值就会发生变化。
老大你理解错了,我是说我选择了销售订单的时候, 那个框子可以将系统单号下拉列出来.
但是我改为手工单号的时候,那个框下拉还会显示系统单号出来,我的要求是 :
Current("请购依据") ="销售订单" 为销售订单时,那个框子可以下拉选择,为手工单号只能手输,不要选择.
第二个问题,是我的问题,我在查!
这样就行了:
If Tables(e.form.Name).Current("请购依据") ="销售订单" Then
'现在的代码
Else
e.Sender.ComboList = “”
End If
老大你真厉害.第二个问题,我写了个通用的退出的函数.
我有很多个窗口,有的窗口是有窗口表,有的是没有窗口表,我想不管是窗口表修改还是主表修改,退出时都有对话框提示是否保存什么的?代码如下:
Dim e As FormEventArgs = args(0)
Dim Result As DialogResult
If Vars("开关") = True Then
MessageBox.Show(1)
If Tables(e.form.Name).DataTable.HasChanges Then
Result = MessageBox.Show("是否将更改并保存本单据?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
If Tables(e.form.Name).Rows.Count>0 Then
Tables(e.form.Name).Current("修改人") = _UserName
Tables(e.form.Name).Current("修改时间") = Date.Now()
Tables(e.form.Name).DataTable.Save()
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.DataRows.Count>0 Then
Tables(e.form.Name & "_Table1").DataTable.Save
End If
End If
End If
MessageBox.show(2)
ElseIf Result = DialogResult.No Then
If Tables(e.form.Name).DataTable.HasChanges Then
Tables(e.form.Name).DataTable.RejectChanges()
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.DataRows.Count>0 Then
Tables(e.form.Name & "_Table1").DataTable.RejectChanges()
End If
For Each re As Relation In Relations
Tables(Re.ChildTable.Name).DataTable.RejectChanges()
Next
End If
Else
e.Cancel=True
End If
End If
End If
Else '如果不是新单
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.HasChanges Then '如果子表有变动
Result = MessageBox.Show("是否将更改并保存本单据?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
Tables(e.form.Name & "_Table1").DataTable.Save '则无条件保存
ElseIf Result = DialogResult.No Then
Tables(e.form.Name & "_Table1").DataTable.RejectChanges()
Else
e.Cancel=True
End If
vars("开关") = False
End If
End If
End If
本来C版帮我加了个开关,当时测试没有问题. 现在测试下来居然主表修改不提示,窗口表修改会提示.
在窗口事件中vars("开关") = False 我加了这个,在新增按钮中加了先开后关的设置.
不知道问题出在什么地方,这个通用代码有没有简单的写法.
呵呵,用MessageBox去调试,去检测关键的值吧。
既然要满足两个条件:
Vars("开关") = True
Tables(e.form.Name).DataTable.HasChanges
才会有提示,那就去检测这两个条件啊
你的第一个问题,说明你现在有点不在状态了,你应该休息一下了。
老大,我跟踪不出来了,已经晕了.C版又不在.
能不能按照这样的逻辑不用开关来解决,
通用的代码,就是如有20个表单,有一些是有窗口表,有一些没有窗口表.不管是窗口表还是主表修改后关闭窗口时都会出来提示是否保存?
按是,就全部保存退出窗口,按否不保存退出窗口,按取消不退出窗口什么都不做.
就我那个代码帮我修改一下或者用其他代码都行.
这样跟踪:
Dim e As FormEventArgs = args(0)
Dim Result As DialogResult
MssageBox.Show("开关值 =" & Vars("开关"))
If Vars("开关") = True Then
MssageBox.Show("开关开启了")
If Tables(e.form.Name).DataTable.HasChanges Then
MssageBox.Show(e.Form.Name & "有变动了 ,所以会提示!")
Result = MessageBox.Show("是否将更改并保存本单据?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
If Tables(e.form.Name).Rows.Count>0 Then
Tables(e.form.Name).Current("修改人") = _UserName
Tables(e.form.Name).Current("修改时间") = Date.Now()
Tables(e.form.Name).DataTable.Save()
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.DataRows.Count>0 Then
Tables(e.form.Name & "_Table1").DataTable.Save
End If
End If
End If
MessageBox.show(2)
ElseIf Result = DialogResult.No Then
If Tables(e.form.Name).DataTable.HasChanges Then
Tables(e.form.Name).DataTable.RejectChanges()
If e.form.ExistControl("Table1") =True Then
If Tables(e.form.Name & "_Table1").DataTable.DataRows.Count>0 Then
Tables(e.form.Name & "_Table1").DataTable.RejectChanges()
End If
For Each re As Relation In Relations
Tables(Re.ChildTable.Name).DataTable.RejectChanges()
Next
End If
Else
e.Cancel=True
End If
End If
End If
Else '如果不是新单
MssageBox.Show("开关关闭了")
If e.form.ExistControl("Table1") =True Then
MssageBox.Show("窗口有Tabl1控件")
If Tables(e.form.Name & "_Table1").DataTable.HasChanges Then '如果子表有变动
MssageBox.Show(e.form.Name & "_Table1") & "有变动,所以要提示")
Result = MessageBox.Show("是否将更改并保存本单据?", "提示!", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
Tables(e.form.Name & "_Table1").DataTable.Save '则无条件保存
ElseIf Result = DialogResult.No Then
Tables(e.form.Name & "_Table1").DataTable.RejectChanges()
Else
e.Cancel=True
End If
vars("开关") = False
End If
End If
End If
下次更新会加一个参数,返回Table控件对应的DataTable