以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请教在窗口中输入报错问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133987)

--  作者:weipeng6999
--  发布时间:2019/4/24 17:33:00
--  请教在窗口中输入报错问题
老师好!我做了个窗口输入,目的是想在“单位名称”中输入“单位1”,在产品中输入“惠普”后,在“价格”总自动输入“4000”。

我在datacolchanged中写的代码:

Dim txt1 As String =e.Form.Controls("DropBox1").text
Dim txt2 As String =e.Form.Controls("TextBox2").text
Dim txt3 As String =e.Form.Controls("TextBox3").text

 Dim dr As DataRow = DataTables("单位资料").find("单位名称 = \'" & txt1 & "\'and 产品 =\'" & txt2 &"\'")
            If dr IsNot Nothing Then
                txt3 = dr("价格")
  End If

运行后报错
“.NET Framework 版本:2.0.50727.8800
Foxtable 版本:2019.4.12.1
错误所在事件:表,单位资料,DataColChanged
详细错误信息:
调用的目标发生了异常。
未将对象引用设置到对象的实例。”

请教老师该如何修改!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:价格.table



--  作者:有点甜
--  发布时间:2019/4/24 17:40:00
--  

没必要这样写,参考

 

http://www.foxtable.com/webhelp/scr/1451.htm

 


--  作者:weipeng6999
--  发布时间:2019/4/26 14:53:00
--  
老师,我修改后,对应的价格还是出不来,请指教! 窗口中单位名称是用的DropDownBox取值

If e.DataCol.Name = "产品" Then 
    If e.NewValue Is Nothing Then 
        e.DataRow("价格") = Nothing 
    Else
        Dim dr As DataRow
        
        dr = DataTables("单位资料").Find("[单位名称] = \'" & e.NewValue & "\'and [产品]=\'" & e.newvalue &"\'")
        If dr IsNot Nothing Then 
            e.DataRow("价格") = dr("价格") 
        End If
    End If
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:价格.table


[此贴子已经被作者于2019/4/26 14:59:11编辑过]

--  作者:有点蓝
--  发布时间:2019/4/26 15:03:00
--  
Select Case e.DataCol.Name
    Case "单位名称","产品"
        If e.DataRow("单位名称") = "单位1" AndAlso e.DataRow("产品") = "惠普" Then
            e.DataRow("价格") = 4000
        End If
End Select

--  作者:weipeng6999
--  发布时间:2019/4/26 15:16:00
--  
我想根据表“单位资料”中的字段“单位名称”和“产品”自动判断“价格”。

Select Case e.DataCol.Name
    Case "单位名称","产品"
        If e.DataRow("单位名称") = "单位1" AndAlso e.DataRow("产品") = "惠普" Then
            e.DataRow("价格") = 4000
        End If
End Select

这个如果在代码中规定死,就不能执行自动判断了。

我的想法是在表中输入一次“单位名称”和“产品”对应的价格后,以后再输入相同的“单位名称”及“产品”后,就能自动显示出“价格”。


[此贴子已经被作者于2019/4/26 15:19:37编辑过]

--  作者:有点蓝
--  发布时间:2019/4/26 15:20:00
--  
那您想做到什么样子?根据什么逻辑?取什么值?
--  作者:weipeng6999
--  发布时间:2019/4/26 15:20:00
--  
我的想法是在表中输入一次“单位名称”和“产品”对应的价格后,以后再输入相同的“单位名称”及“产品”,就能自动显示出“价格”。
[此贴子已经被作者于2019/4/26 15:20:51编辑过]

--  作者:有点蓝
--  发布时间:2019/4/26 15:30:00
--  
Select Case e.DataCol.Name
    Case "单位名称","产品"
        Dim dr As DataRow = e.DataTable.find("[单位名称] = \'" & e.DataRow("单位名称") & "\' and [产品]=\'" & e.DataRow("产品") & "\' and 价格 is not null And [_Identify] <> " & e.DataRow("_Identify"))
        If dr IsNot Nothing Then
            e.DataRow("价格") = dr("价格") 
        End If
End Select

--  作者:weipeng6999
--  发布时间:2019/4/26 15:43:00
--  
完美,谢谢!  请问下_Identify在这里主要是起什么作用?
[此贴子已经被作者于2019/4/26 15:44:35编辑过]

--  作者:有点蓝
--  发布时间:2019/4/26 15:47:00
--  
查询的时候忽略当前行