以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  DataMap可以实现多列值填充吗?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=127199)

--  作者:happyft
--  发布时间:2018/11/8 10:59:00
--  DataMap可以实现多列值填充吗?
如题,DataMap可以生成一个下拉,比如有"客户ID,客户名称,公司等列

If MainTable.Name = "订单" Then
    Dim
dmp As New TableDataMap
   
dmp.DataTable = "客户" \'指定数据来源表
   
dmp.ValueCol = "客户ID" \'指定取值列

    dmp.DisplayCol = "客户名称" \'指定显示列

    \'指定下拉列表时显示哪些列的数据
   
dmp.ListCols = "客户ID,客户名称,公司"

    dmp.Sort = "ID" \'指定排序方式
    Tables(
"订单").Cols("客户ID").DataMap = dmp.CreateDataMap() \'生成并设置DataMap
End If


这种情况只能得到一列的值,  如果订单中还有客户名称,公司等与显示列中相同的列时能否实现一次性填充其他相同的列呢?(我是指不用在其他事件中写代码)


谢谢!


--  作者:有点甜
--  发布时间:2018/11/8 11:32:00
--  

不可以,必须编写代码才可以。或者是用下拉窗口解决

 

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

 


--  作者:HappyFt
--  发布时间:2018/11/8 11:46:00
--  
发现一个奇怪的问题,如果在cellbottonClick中设置了代码发下:
Se lect Case e.Col.name
    Case "部门编码"
        MyTable = e.Table.Name
        Dcol = e.Col.name
        e.Cancel = True \'取消默认动作
        Forms("部门单选").Open()
End Se lect

在窗口的afterLoad中用下面的代码生成datamap
\'查询后通过临时表生成数据字典
Dim q As new QueryBuilder
q.TableName = "部门查询"
q.ConnectionName = Mydata
q.Se lectString = "SE LECT 部门编码,部门名称,负责人 From {dept}"
q.Build

Dim dmp As New TableDataMap
dmp.DataTable = "部门查询"  \'指定数据来源表
dmp.ValueCol = "部门编码" \'指定取值列
dmp.DisplayCol = "部门名称" \'指定显示列
\'指定下拉列表时显示哪些列的数据
dmp.ListCols = "部门编码,部门名称,负责人"
dmp.Sort = "部门编码" \'指定排序方式
Tables(e.Form.name & "_主表").Cols("部门编码").DataMap = dmp.CreateDataMap() \'生成并设置DataMap

经过上述设置后,录入时会弹出cellbottonColik中的"部门单选"窗口,而datamap的下拉窗口就不生效了,但是其同列显示不同值的功能却可以了.
这是巧合,还是一直都可以这样用,即用cellbottonClick的弹出窗口录入数据,让datamap显示不同值.





--  作者:有点甜
--  发布时间:2018/11/8 11:55:00
--  
没看懂你的问题。如果设置了TableDataMap,那肯定是可以显示值、实际值不一样的。任何时候你想不一样,直接设置TableDataMap都可以的。
--  作者:HappyFt
--  发布时间:2018/11/8 14:07:00
--  
意思就是同一列如果在cellbottonClick中设置了代码,又同时设置datamap则此列datamap的下拉就不会出现,但是显示值与实际值不一样这个功能却有效

这样就可以用cellbottonClick弹出的窗口设计复杂的录入界面,而用datamp显示不同值.我前几天问的那个问题就可以解决了,只是稍微麻烦了点.

明白了,谢谢!