以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  Invalid parameters for Select method.  (http://foxtable.com/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() 保存。