以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  网络环境下,记录窗口下拉列表中如何获取新最数据  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=25313)

--  作者:jinruan
--  发布时间:2012/11/6 14:59:00
--  网络环境下,记录窗口下拉列表中如何获取新最数据
请教:如题:网络环境下,记录窗口下拉列表中如何获取新最数据?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网络环境下获取新最数据.table


补充:使用SQL外部数据源
[此贴子已经被作者于2012-11-6 15:03:11编辑过]

--  作者:lin_hailun
--  发布时间:2012/11/6 15:04:00
--  
 动态设置 数据字典,如下

http://www.foxtable.com/help/topics/2653.htm

--  作者:jinruan
--  发布时间:2012/11/6 15:16:00
--  

如果A用户正在录入订单窗口选择【付款期】时,发现少了所需付款期,

让B用户在另一台电脑上增加了新的付款期信息,

这时A用户不退出订单录入窗口,再次点【付款期】下拉列表时,如下方法不能看到新记录


动态设置 数据字典,如下

http://www.foxtable.com/help/topics/2653.htm

例如我们在项目事件MainTableChanged事件中设置代码:

If MainTable.Name = "订单" Then
    Dim 
dmp As New TableDataMap
    
dmp.DataTable = "客户" \'指定数据来源表
    
dmp.ValueCol = "ID" \'指定取值列
    
dmp.DisplayCol = "公司" \'指定显示列
    
\'指定下拉列表时显示哪些列的数据
    
dmp.ListCols = "ID,公司,姓氏,名字,职务,业务电话,传真号,地址,城市,邮政编码"
    
dmp.Sort = "城市" \'指定排序方式
    Tables(
"订单").Cols("客户 ID").DataMap = dmp.CreateDataMap() \'生成并设置DataMap
End If

这样在客户表修改数据后,重新切换到订单表,就会自动重新生成数据字典,保证数据字典的内容是最新的。


--  作者:lin_hailun
--  发布时间:2012/11/6 15:21:00
--  
 那么,就在DataTable上想办法。编辑这一列的时候,去查一遍吧。

 Dim cmd As New SqlCommand
 cmd.Conn...name = "数据源"
 cmd.CommandText = "select * from {订单}"
 dmp.DataTable = cmd.ExecuteReader
 ......
[此贴子已经被作者于2012-11-6 15:22:56编辑过]

--  作者:jinruan
--  发布时间:2012/11/6 15:22:00
--  
或者在  订单的表事件PrepareEdit中加入事件,获取最新付款期记录
--  作者:jinruan
--  发布时间:2012/11/6 15:23:00
--  
好,我试试
--  作者:jinruan
--  发布时间:2012/11/6 17:09:00
--  


在【销售订单】的startEdit事件中加了如下内容后,【付款期ID】下拉按钮不正常了,不知写不对,还是没放对事件位置:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:网络环境下获取新最数据.rar


If e.Col.Name = "付款期ID"  Then
    \'那么,就在DataTable上想办法.编辑这一列的时候,去查一遍吧.
    
    
    Dim cmd As New SqlCommand
    Dim dt As DataTable
    cmd.ConnectionName  = "test1"
    cmd.CommandText = "select * from {付款期}"
    dt = cmd.ExecuteReader()
    
    Dim dmp As New TableDataMap
    dmp.DataTable = "dt"
    dmp.ValueCol = "付款期ID" \'指定取值列
    dmp.DisplayCol = "付款期" \'指定显示列
    \'指定下拉列表时显示哪些列的数据
    dmp.ListCols = "付款期ID,付款期,付款天数"
    dmp.Sort = "付款期ID" \'指定排序方式
    Tables("订单").Cols("付款期ID").DataMap = dmp.CreateDataMap() \'生成并设置DataMap
    
End If

--  作者:lin_hailun
--  发布时间:2012/11/6 17:36:00
--  
 呵呵,这个办法行不通!

 因为这个临时的dt会在这个事件结束后消失。

 用老办法吧,把那个表重新加载一次。

 DataTables("付款期").LoadFilter = ""
 DataTables("付款期").Load
--  作者:jinruan
--  发布时间:2012/11/6 17:49:00
--  
DataTables("付款期").LoadFilter = ""
 DataTables("付款期").Load
方法可以,谢谢!



--  作者:jinruan
--  发布时间:2012/11/6 20:09:00
--  
DataTables("付款期").LoadFilter = ""
DataTables("付款期").Load
此方法放在发下事件中,都取不到最新的记录,应该应在哪件事件中呢:
PrepareEdit
StartEdit
click