Foxtable(狐表)用户栏目专家坐堂 → [求助]窗体中怎么取值(已解决)


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

主题:[求助]窗体中怎么取值(已解决)

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


加好友 发短信
等级:幼狐 帖子:71 积分:716 威望:0 精华:0 注册:2012/10/9 13:40:00
[求助]窗体中怎么取值(已解决)  发帖心情 Post By:2012/11/9 20:49:00 [只看该作者]

做了个窗体,"TextBox1"中放着订单号(绑定订单表),"Table1"中放着订单.订单明细表,窗体中还有个Button2做为确定按钮。订单明细表中有两个逻辑列,“待发运”和“发运”。

希望在Table1中将“待发运”勾选,按确定后“,该订单号对应的订单明细中的“发运”自动勾选。

参照帮助文件再谈TableDataTable 中的示例六,在Button2的Click中写了如下程序,

但是,没有第一段程序的情况下,订单表中所有”待发运“=True的“发运”都被勾选了;
加了第二段程序,总提示错误“从字符串“待发运”=True到类型“long”的转换无效”。这是什么意思?该如何修改??

Dim Fa As String
With e.Form.Controls("TextBox1")
    If .Value IsNot Nothing Then
        Fa = .Value
    End If
End With

Dim drs As List(Of DataRow)
'drs = DataTables("订单.订单明细").Select("[待发运] = True")
drs = DataTables("订单.订单明细").Select("[待发运] = True" And "[订单号]=Fa")
For Each dr As DataRow In drs
    dr("发运") = True
Next
[此贴子已经被作者于2012-11-11 11:10:58编辑过]

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


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

其实你找错地方了,两个表已经建立了关联,那么很简单:
 
http://www.foxtable.com/help/topics/0431.htm
http://www.foxtable.com/help/topics/2649.htm


 设置订单表的DatacolChanged事件为:
 
If e.DataCol.Name = "发运"  AndAlso e.DataRow("发运") = true Then
    For each dr As DataRow in e.Datarow.GeChildrows("订单明细")
           dr("发运") = true
    next
End If


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


加好友 发短信
等级:幼狐 帖子:71 积分:716 威望:0 精华:0 注册:2012/10/9 13:40:00
  发帖心情 Post By:2012/11/10 9:22:00 [只看该作者]

有点甜,谢谢你的解答。

你的程序,我理解是“订单表”中的“发运”列=True时,将“订单明细表”的发运改成True,对吗?

 现在,我的“待发运”和“发运”两个逻辑列都在“订单明细表”中。

我想,通过窗口查询“订单号”后找到了该订单的订单明细,
希望按“确定”按钮后,
该订单号下的订单明细数据中的“待发运”=True 后面的“发运”才更改为True。

另外,设置DatacolChanged事件的话,是不是“按钮”就没有用了?



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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/10 9:42:00 [只看该作者]

这样写。

 If e.DataCol.Name = "发运"  AndAlso e.DataRow("发运") = true Then
    For each dr As DataRow in e.Datarow.GeChildrows("订单明细")
           dr("发运") = dr("待发运")
    next
End If

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


加好友 发短信
等级:幼狐 帖子:71 积分:716 威望:0 精华:0 注册:2012/10/9 13:40:00
  发帖心情 Post By:2012/11/10 10:20:00 [只看该作者]

 前辈,还是有些不明白,这段程序写在哪里?订单表的DatacolChanged中吗?

我的订单表中没有“发运”这一列。订单明细表中有。

用窗体,是把同一个订单号的订单明细找出来,在“待发运”上打个勾,然后希望有个按钮,按确定后实现“发运”的自动勾选。

我理解的,应该是通过按钮的Click事件触发的吧?

上面这段程序如果放在按钮的Click事件中,提示编译错误:“DataCol”不是“ControlEventArgs”的成员

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/10 10:23:00 [只看该作者]

 楼主,说起来麻烦,你把你的项目上传一下,输入少量数据。这个问题挺好解决的。

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


加好友 发短信
等级:幼狐 帖子:71 积分:716 威望:0 精华:0 注册:2012/10/9 13:40:00
  发帖心情 Post By:2012/11/10 13:23:00 [只看该作者]

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


请见附件。

打开“订单明细表”,然后运行“发货查询”,选订单号D12110803,然后在“待发运”处任选一个,点击“发运确认”。
然后在“订单明细表”中就可以看到,D2012101501中的两个“待发运”也变成了“发运”=True(不希望这样)

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


加好友 发短信
等级:幼狐 帖子:71 积分:716 威望:0 精华:0 注册:2012/10/9 13:40:00
  发帖心情 Post By:2012/11/10 16:42:00 [只看该作者]

 还没有解决,顶一顶~~~

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/11/10 16:49:00 [只看该作者]

Dim drs As List(Of DataRow)
drs = DataTables("OrderDetail").Select("[待发运] = True")
'drs = DataTables("OrderDetail").Select("[待发运] = True" And "[OrderNumber]=Fa")
For Each dr As DataRow In drs
    dr("发运") = True
Next

 

  你的代码不是要勾选吗?


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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/10 17:08:00 [只看该作者]

 楼主,我看下例子,不明白楼主的用意。

 回到顶部
总数 13 1 2 下一页