以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]窗体中怎么取值(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=25467)

--  作者:wayiok
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间: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
--  发布时间:2012/11/10 9:22:00
--  
有点甜,谢谢你的解答。

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

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

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

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



--  作者:lin_hailun
--  发布时间: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
--  发布时间:2012/11/10 10:20:00
--  
 前辈,还是有些不明白,这段程序写在哪里?订单表的DatacolChanged中吗?

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

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

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

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

--  作者:lin_hailun
--  发布时间:2012/11/10 10:23:00
--  
 楼主,说起来麻烦,你把你的项目上传一下,输入少量数据。这个问题挺好解决的。
--  作者:wayiok
--  发布时间:2012/11/10 13:23:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table


请见附件。

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

--  作者:wayiok
--  发布时间:2012/11/10 16:42:00
--  
 还没有解决,顶一顶~~~
--  作者:blackzhu
--  发布时间: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
--  发布时间:2012/11/10 17:08:00
--  
 楼主,我看下例子,不明白楼主的用意。