以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]代码报错及移动行的代码求助 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=172015) |
-- 作者:huangfanzi -- 发布时间:2021/9/18 9:42:00 -- [求助]代码报错及移动行的代码求助 先说报错: 全局代码:PrepareEdit If e.Table.Cols.Contains("审核") AndAlso e.Table.IsRelation =False Then If e.Row("审核") = True AndAlso e.Col.Name <> "审核" Then \'本条记录审核后禁止编辑除审核外的所有列 e.Cancel = True ElseIf e.Row("审核") = False Then \'未审核的记录在编辑前检查是否在后台已经被审核 Dim cmd As New SQLCommand cmd.C cmd.C ommandText = "S elect [审核] F rom {" & e.Table.Name & "} Where [_Identify] = " & e.Row("_Identify") \'从后台读取记录的审核列值 Dim sh As Boolean = cmd.ExecuteScalar() \'后台读取的审核列值赋值给sh变量 If sh = True Then Dim 行号 As Integer = e.Row("_Identify") \'将即将被移除的行的_Identify值赋值给变量行号 e.Table.DataTable.RemoveFor("[_Identify] = " & e.Row("_Identify")) \'移除本行 e.Table.DataTable.AppendLoad("[_Identify] = " & 行号) \'重新加载之前移除的行 MessageBox.Show("本条记录已经在后台被审核,现已重新加载!" , "提示" , MessageBoxButtons.OK ,MessageBoxIcon.Information) End If End If End If 以下是窗口表设置: 想不明白这是何解,请老师帮忙看看 另外,在这个窗口表上,我想按 CTRL + ↑ 及 CTRL + ↓ 来移动行,这样排工序方便点,不要在顺号列录序号来控制了,请老师帮忙写下示例代码,谢谢! |
-- 作者:有点蓝 -- 发布时间:2021/9/18 10:19:00 -- 代码放到startedit事件 If e.Table.Cols.Contains("审核") AndAlso e.Table.IsRelation =False Then If e.Row("审核") = True AndAlso e.Col.Name <> "审核" Then \'本条记录审核后禁止编辑除审核外的所有列 e.Cancel = True ElseIf e.Row("审核") = False Then \'未审核的记录在编辑前检查是否在后台已经被审核 Dim cmd As New SQLCommand cmd.C cmd.C ommandText = "S elect [审核] F rom {生产计划辅表} Where [_Identify] = " & e.Row("_Identify") \'这里必须使用数据库的表名,不能使用窗口表名称 Dim sh As Boolean = cmd.ExecuteScalar() \'后台读取的审核列值赋值给sh变量 If sh = True Then e.Row.load(false) \'http://www.foxtable.com/webhelp/topics/2895.htm MessageBox.Show("本条记录已经在后台被审核,现已重新加载!" , "提示" , MessageBoxButtons.OK ,MessageBoxIcon.Information) End If End If End If |
-- 作者:huangfanzi -- 发布时间:2021/9/18 11:30:00 -- 看来问题就出在窗口表名称上,这个代码的功能是要用于所有主表的,所以放在全局代码中了,如何判定某表是窗口中的表,从而对代码中的数据库名进行调整 |
-- 作者:有点蓝 -- 发布时间:2021/9/18 11:34:00 -- 判断名称中有下划线的就是窗口表。可以考虑把窗口表控件名称改为和表名一致,比如table1改为生产计划辅表,然后根据下划线拆分字符串即可 |