Foxtable(狐表)用户栏目专家坐堂 → PrepareEdit事件


  共有1818人关注过本帖树形打印复制链接

主题:PrepareEdit事件

美女呀,离线,留言给我吧!
Springamy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
PrepareEdit事件  发帖心情 Post By:2018/11/12 14:48:00 [只看该作者]

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/12 14:56:00 [只看该作者]

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

 

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

 

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


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By: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事件中可以找到就是不能保存的


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/12 16:47:00 [只看该作者]


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By: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事件代码改成这样还是不对呢老师,价格出不来

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By:2018/11/12 17:10:00 [只看该作者]

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

这个代码我有点看不懂

不是应该这样吗:

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

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


 回到顶部
美女呀,离线,留言给我吧!
Springamy
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:427 积分:2969 威望:0 精华:0 注册:2017/4/6 15:51:00
  发帖心情 Post By: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(),但是不会弹出,是什么原因呢

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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楼。不会做上传实例。


 回到顶部