以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- Invalid parameters for Select method. (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47700) |
-- 作者:jnletao -- 发布时间:2014/3/15 10:35:00 -- Invalid parameters for Select method. .NET Framework 版本:2.0.50727.5477 Foxtable 版本:2014.3.8.1 错误所在事件: 详细错误信息: Invalid parameters for Select method. 什么意思? |
-- 作者:Bin -- 发布时间:2014/3/15 10:37:00 -- 无效的参数 你在执行什么操作的时候出现这个错误? 有具体的问题才会有具体的答复, 问题定位越精准越详细,越快可以得到解决. 有例子就更好了.
|
-- 作者:jnletao -- 发布时间:2014/3/15 10:53:00 -- 在窗体,有查询表,当前表,关联表, 单击保存按钮 语句
If e.Form.Controls("手工关联单号").Value = "" Then Messagebox.Show("原收费单号不能为空!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return End If Dim Rsum As Integer Dim Rtotal As Integer For Each r As Row In Tables("车辆退费_TableFYlist") ‘查询表 If r.IsNull("数量") Or r.IsNull("费用单价") Then Messagebox.Show("数量或单价存在有零的记录,请删除或修改后再保存!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Error) Return Else r("金额") = r("数量") * r("费用单价") Rsum += r("数量") * r("费用单价") Rtotal += r("数量") End If Next If Rsum = 0 Then Messagebox.Show("金额不能为零,请修改后再保存!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return End If If Rsum > Vars("MaxOutMoney") Then Messagebox.Show("你修改后的单据金额大于原始单据金额,无法保存!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return End If With Tables("费用记录单").Current If .IsNull("支出原因") Then Messagebox.Show("退费原因不能为空!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return ElseIf .IsNull("付费单位") Then Messagebox.Show("退费单位不能为空!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return ElseIf .IsNull("进场编号") Then Messagebox.Show("车辆编号不能为空!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return ElseIf .IsNull("费用方式") Then Messagebox.Show("退费方式不能为空!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return ElseIf e.Form.Controls("ComFFFS").Text = "银行" Then If .IsNull("付费银行") Or .IsNull("付费银行账号") Or .IsNull("收费银行") Or .IsNull("收费银行账号") Then Messagebox.Show("退费方式为银行时,请填全银行信息!","保存失败提示",MessageBoxButtons.OK,MessageBoxIcon.Warning) Return End If End If End With \'以上代码全部为保存前条件判断 Dim MessStr As String Dim MNums As Integer = 0 \'定义数量 用于续费倍数,建议采用此项时最好保证费用记录是一条,不然有可能计算不准 Dim MLists As String \'定义进度记录,用于累计此次交费项 Try \'Tables("费用记录单").Current.Save() For Each r As Row In Tables("车辆退费_TableFYlist") Tables("费用记录单.费用记录").AddNew() Tables("费用记录单.费用记录").Current("费用项目") = r("费用项目") Tables("费用记录单.费用记录").Current("费用单价") = r("费用单价") Tables("费用记录单.费用记录").Current("数量") = r("数量") Tables("费用记录单.费用记录").Current("金额") = r("金额") Tables("费用记录单.费用记录").Current("付费方式") = Tables("费用记录单").Current("费用方式") Tables("费用记录单.费用记录").Current("对应IC卡密") = Tables("费用记录单").Current("对应IC卡密") Tables("费用记录单.费用记录").Current("进场编号") = Tables("费用记录单").Current("进场编号") Tables("费用记录单.费用记录").Current("费用单号") = Tables("费用记录单").Current("费用单号") Tables("费用记录单.费用记录").Current("对应银行") = Tables("费用记录单").Current("收费银行") Tables("费用记录单.费用记录").Current("公司银行账号") = Tables("费用记录单").Current("收费银行账号") Tables("费用记录单.费用记录").Current("费用类型") = r("费用类型") Tables("费用记录单.费用记录").Current("单据类别") = Tables("费用记录单").Current("单据类别") Tables("费用记录单.费用记录").Current("收付") = -1 Tables("费用记录单.费用记录").Current("是否流程") = r("是否流程") Tables("费用记录单.费用记录").Current("流程顺序") = r("流程顺序") Tables("费用记录单.费用记录").Current("固定收费") = r("固定收费") Tables("费用记录单.费用记录").Current("有效期") = r("有效期") MLists = MLists & "," & r("费用项目") If r("流程顺序") = -365 Or r("流程顺序") = -3 Or r("流程顺序") = -1 Or r("流程顺序") = 1 Then MNums = MNums + r("数量") * r("有效期") End If Next \'MNums = MNums * -1 Dim cdr As DataRow = DataTables("车辆基本信息").SQLFind("进场编号 = \'" & Tables("费用记录单").Current("进场编号") & "\'") If cdr IsNot Nothing Then DataTables("车辆基本信息").AllowEdit = True \'流程号:-365 -3 -2 -1 0 1-255 9999说明:-365年费续交 , -3临时卡超期补费,-2未交任何费用 \'-1已交临时表押金 0是不含流程 的部分项目, 1-255 是流程的顺序号, 9999是特定收费项目 \'Dim Sdate As Date = Functions.Execute("ServerDate") If MNums > 0 Then cdr("有效期结束") = cdr("有效期结束").AddDays(MNums * - 1) MessStr = "已进入退费流程!有效期减少" & MNums & "天,请注意调整用户流程进度!" Else MessStr = "已进入退费流程! 请注意调整用户流程进度!" End If cdr("进度记录") = cdr("进度记录") & "→ 【退费】" & MLists.Trim(",") Tables("费用记录单").Current("手工关联单号") = e.Form.Controls("手工关联单号").Value Tables("费用记录单").Current("退费锁定") = True Dim TTdr As DataRow = DataTables("费用记录单").SQLFind("费用单号 = \'" & e.Form.Controls("手工关联单号").Value & "\'") If TTdr IsNot Nothing Then TTdr("退费锁定") = True End If DataTables("费用记录单").Save() Tables("费用记录单.费用记录").DataTable.Save() DataTables("车辆基本信息").Save() DataTables("车辆基本信息").AllowEdit = False Else Tables("费用记录单").Current.Reject() DataTables("费用记录").RejectChanges() DataTables("车辆基本信息").RejectChanges() Messagebox.Show("没找到该单对应车辆,请联系管理员查找原因,该单据未能保存!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error) Return End If Catch ex As Exception Tables("费用记录单").Current.Reject() DataTables("费用记录").RejectChanges() DataTables("车辆基本信息").RejectChanges() Messagebox.Show("出现意外错误,该单据未能保存!","系统提示",MessageBoxButtons.OK,MessageBoxIcon.Error) Return End Try Messagebox.Show(MessStr,"保存退费单成功",MessageBoxButtons.OK,MessageBoxIcon.Information) e.Form.Controls("手工关联单号").Enabled = False e.Form.Controls("TextFFYH").ReadOnly = BooleanEnum.True e.Form.Controls("TextFFYHZH").ReadOnly = BooleanEnum.True e.Form.Controls("ComSFYH").ReadOnly = BooleanEnum.True e.Form.Controls("TextSFYHZH").ReadOnly = BooleanEnum.True e.Form.Controls("支出原因").ReadOnly = BooleanEnum.True e.Form.Controls("ComFFFS").Enabled = False e.Form.Controls("BtnSave").Enabled = False e.Form.Controls("BtnReDo").Enabled = False e.Form.Controls("BtnPrint").Enabled = True e.Form.Controls("BtnClose").Enabled = True [此贴子已经被作者于2014-3-15 10:53:36编辑过]
|
-- 作者:Bin -- 发布时间:2014/3/15 10:56:00 -- 建议您用这个方法: http://www.foxtable.com/help/topics/1485.htm 先找出是哪一行出错,然后分析原因,搞不定,贴出代码,并告诉我们运行到哪一行出错,以及错误提示。
|
-- 作者:jnletao -- 发布时间:2014/3/15 11:18:00 -- 去掉 try 就好了,是不是 Catch ex As Exception 里用的return 的事? 还有一个疑问! ………… Dim cdr As DataRow = DataTables("车辆基本信息").SQLFind("进场编号 = \'" & Tables("费用记录单").Current("进场编号") & "\'") If cdr IsNot Nothing Then DataTables("车辆基本信息").AllowEdit = True If MNums > 0 Then cdr("有效期结束") = cdr("有效期结束").AddDays(MNums * - 1) MessStr = "已进入退费流程!有效期减少" & MNums & "天,请注意调整用户流程进度!" Else MessStr = "已进入退费流程! 请注意调整用户流程进度!" End If cdr("进度记录") = cdr("进度记录") & "→ 【退费】" & MLists.Trim(",") Tables("费用记录单").Current("手工关联单号") = e.Form.Controls("手工关联单号").Value Tables("费用记录单").Current("退费锁定") = True Dim TTdr As DataRow = DataTables("费用记录单").SQLFind("费用单号 = \'" & e.Form.Controls("手工关联单号").Value & "\'") If TTdr IsNot Nothing Then TTdr("退费锁定") = True End If …………
这两处查询出 列都未成功更新!不知什么原因造成的。他的.AllowEdit 已true
|
-- 作者:Bin -- 发布时间:2014/3/15 11:20:00 -- 你要找到TTdr 这个行才会执行里面的更新. 你需要利用楼上我说得方法,测试一下 是否找到了行. 如果没找到行.说明条件不对.
|
-- 作者:jnletao -- 发布时间:2014/3/15 12:14:00 -- 谢谢bin老师,找到原因。 1,Catch ex As Exception 好像不能用 return 2,通过 dr as datarow = …… SQLFind 查找的行 不能用datatable保存,而是直接用 dr.Save() 保存。
|