以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  PrepareEdit事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=127354)

--  作者:Springamy
--  发布时间:2018/11/12 14:48:00
--  PrepareEdit事件

PrepareEdit事件中

If e.Col.Name ="订单号" Then
            
        \'2018-11-06新增参考价格1,参考价格2,从B表中读取数据
        cmd.CommandText = "select je1,je2 fr om xm where xmdh =\'" & e.Row("订单号") & "\'"
        Dim dt1 As DataTable = cmd.ExecuteReader
        If dt1.DataRows.Count >0 Then
            e.Row("价格1") = dt1.DataRows(0)("je1")
            e.Row("价格2") = dt1.DataRows(0)("je2")
     
       End If
       
       
    End If
End If
DataTables("订单_Table1").Save

 

为什么保存不了价格数据呢,保存不到数据库中.


--  作者:有点甜
--  发布时间:2018/11/12 14:56:00
--  

1、不能,也不应该在prepareEdit事件写这样的代码。不然程序很容易卡死的;

 

2、读取数据过来,请在datacolchanged事件做 http://www.foxtable.com/webhelp/scr/1453.htm

 

3、数据不保存的问题,你的table1不能是查询表,必须是sqlTable表。


--  作者:Springamy
--  发布时间:2018/11/12 16:38:00
--  

If e.DataCol.Name ="订单号" Then
    If e.DataRow("订单号") <> "" Then
              
        \'2018-11-12新增参考价格1,参考价格2,从B表中读取数据
        cmd.CommandText = "select je1,je2 fr om xmdd where xm =\'" & e.DataRow("订单号") & "\'"
        Dim dt1 As DataTable = cmd.ExecuteReader
        If dt1.DataRows.Count >0 Then
            e.DataRow("价格1") = dt1.DataRows(0)("ckje1")
            e.DataRow("价格2") = dt1.DataRows(0)("ckje2")
     
       End If
       
       
    End If
End If
datatable("窗口_Table1").save

 

代码搬迁到datacolchanged事件中,完全木有效果阿?找不到价格呢,在prepareEdit事件中可以找到就是不能保存的


--  作者:有点甜
--  发布时间:2018/11/12 16:47:00
--  

重置列

 

 

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

 


--  作者:Springamy
--  发布时间:2018/11/12 17:01:00
--  

If e.DataRow("供应商")="XXX有限公司" Then
    If  e.DataRow("价格1") ="" Then
        DataTables("窗口_Table1").DataCols("价格1").RaiseDataColChanged()
        DataTables("窗口_Table1").DataCols("价格2").RaiseDataColChanged()
        cmd.CommandText = "select ckje1,ckje2 fr om xmdd where xmdhout =\'" & e.DataRow("订单号") & "\'"
        Dim dt1 As DataTable = cmd.ExecuteReader
        If dt1.DataRows.Count >0 Then
            e.DataRow("价格1") = dt1.DataRows(0)("ckje1")
            e.DataRow("价格2") = dt1.DataRows(0)("ckje2")
        End If
    End If
End If

datacolchanged事件代码改成这样还是不对呢老师,价格出不来

 


--  作者:有点甜
--  发布时间:2018/11/12 17:02:00
--  

1、代码改成

 

If e.DataCol.Name ="订单号" Then
    If e.DataRow("订单号") <> "" Then
              
        \'2018-11-12新增参考价格1,参考价格2,从B表中读取数据
        cmd.CommandText = "select je1,je2 fr om xmdd where xm =\'" & e.DataRow("订单号") & "\'"
        Dim dt1 As DataTable = cmd.ExecuteReader
        If dt1.DataRows.Count >0 Then
            e.DataRow("价格1") = dt1.DataRows(0)("ckje1")
            e.DataRow("价格2") = dt1.DataRows(0)("ckje2")      
       End If                
    End If
End If

 

2、在需要计算的时候,执行代码

 

DataTables("窗口_Table1").DataCols("订单号").RaiseDataColChanged()


--  作者:Springamy
--  发布时间:2018/11/12 17:10:00
--  

DataTables("窗口_Table1").DataCols("订单号").RaiseDataColChanged()

这个代码我有点看不懂

不是应该这样吗:

DataTables("窗口_Table1").DataCols("价格1").RaiseDataColChanged() 重置价格列,

我是要根据订单号从B表中查找价格1 跟价格2,把这两列数据放到Table1中,不是重置订单号列哦


--  作者:Springamy
--  发布时间:2018/11/12 17:53:00
--  

If e.Col.Name ="订单号" Then
         msgbox("执行代码")   


        \'2018-11-06新增参考价格1,参考价格2,从B表中读取数据
        cmd.CommandText = "select je1,je2 fr om xm where xmdh =\'" & e.Row("订单号") & "\'"
        Dim dt1 As DataTable = cmd.ExecuteReader
        If dt1.DataRows.Count >0 Then
            e.Row("价格1") = dt1.DataRows(0)("je1")
            e.Row("价格2") = dt1.DataRows(0)("je2")
     
       End If
       
       
    End If
End If
添加了msgbox(),但是不会弹出,是什么原因呢

 


--  作者:有点甜
--  发布时间:2018/11/12 17:54:00
--  
以下是引用Springamy在2018/11/12 17:10:00的发言:

DataTables("窗口_Table1").DataCols("订单号").RaiseDataColChanged()

这个代码我有点看不懂

不是应该这样吗:

DataTables("窗口_Table1").DataCols("价格1").RaiseDataColChanged() 重置价格列,

我是要根据订单号从B表中查找价格1 跟价格2,把这两列数据放到Table1中,不是重置订单号列哦

 

照抄6楼。不会做上传实例。