以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=133759)

--  作者:圣权
--  发布时间:2019/4/19 17:25:00
--  [求助]
有这样一个字典组,Dim xzbjs As New Dictionary(Of String,Double)
请问如何获取字典中的最大值和它对应的键???



--  作者:有点甜
--  发布时间:2019/4/19 17:38:00
--  

比较麻烦,如

 

Dim zd As New Dictionary(Of String, Integer)
zd.Add("苹果",5)
zd.Add("香蕉",9)
zd.Add("波罗",2)
zd.Add("桔子",1)

Dim mval As Double = 0
Dim mkey As String = ""
For Each key As String In zd.Keys
    If zd(key) > mval Then
        mval = zd(key)
        mkey = key
    End If
Next

msgbox(mkey & " " & mval)


--  作者:圣权
--  发布时间:2019/4/28 13:28:00
--  

\'计算每个供应商的小宗商品总金额,并将“供应商,总金额”的组合添加到字典
Dim xzbjs As New Dictionary(Of String,Double)
Dim gyss As New List(Of String)
gyss = DataTables("报价表").GetValues("供应商")
Dim sum As Double
For Each gys  As String In gyss
    sum = DataTables("报价表").Compute("sum(金额)","菜品属性 = \'小宗\'and 供应商 = \'gys\'")
    xzbjs.Add(gys,sum)
Next

\'比较各供应商的总金额,并找出总金额最低的供应商

Dim mval As Double = 0
Dim mkey As String = ""
For Each key As String In xzbjs.Keys
    If  xzbjs(key) > mval Then
        mval =  xzbjs(key)
        mkey = key
    End If
Next

‘将总金额最低的供应商对应的商品报价信息复制到一个新的表格中

Dim xzsps As List(Of String)
xzsps = DataTables("报价表").GetValues("菜品编号","菜品属性 = \'小宗\' and 供应商 = \'mkey\'")
For Each xzsp As String In xzsps
    Dim  dr As DataRow =  DataTables("报价表").Find("菜品编号 = xzsp and 菜品属性 = \'小宗\' And 供应商 = mkey")
    Dim bjdr As DataRow = DataTables("比价表").AddNew()
    bjdr("日期") = dr("日期")
    bjdr("菜品编码") = dr("菜品编码")
    bjdr("菜品名称") = dr("菜品名称")
    bjdr("品类") = dr("品类")
    bjdr("单位") = dr("单位")
    bjdr("规格") = dr("规格")
    bjdr("数量") = dr("数量")
    bjdr("单价") = dr("单价")
    bjdr("金额") = dr("金额")
    bjdr("供应商") = dr("供应商")
    bjdr("菜品属性") = dr("菜品属性")

Next


请问老师 上述代码 哪里出错了吗  试了好久都没有找出问题???


--  作者:有点甜
--  发布时间:2019/4/28 14:40:00
--  

比如

 

xzsps = DataTables("报价表").GetValues("菜品编号","菜品属性 = \'小宗\' and 供应商 = \'" & mkey & "\'")

 

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

 


--  作者:圣权
--  发布时间:2019/4/28 17:22:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:360截图20190428171854673.jpg
图片点击可在新窗口打开查看

老师,您好 上面编写的代码总是出现这种报错,这是回事呀???

--  作者:圣权
--  发布时间:2019/4/28 17:24:00
--  
还要请问老师如何获取字典中的最小值,以及其对应的键???
--  作者:有点甜
--  发布时间:2019/4/28 17:28:00
--  
请具体做一个实例发上来,说明你要做的功能。
--  作者:圣权
--  发布时间:2019/4/28 19:46:00
--  



 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:供应商比价系统.foxdb

老师 这是我做的实例











--  作者:圣权
--  发布时间:2019/4/28 19:49:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:供应商报价.png
图片点击可在新窗口打开查看

老师,我需要从报价表中根据  金额  列  筛选出每个商品报价最低的供应商  并把该行的全部信息复制到 比价表   中   



--  作者:有点甜
--  发布时间:2019/4/29 11:37:00
--  
Dim xzsps As List(Of String)
xzsps = DataTables("报价表").GetValues("菜品编号","菜品属性 = \'小宗\'")
For Each xzsp As String In xzsps
    Dim  dr As DataRow =  DataTables("报价表").Find("菜品编号 = \'" & xzsp & "\' And 菜品属性 = \'小宗\'", "金额")
    Dim bjdr As DataRow = DataTables("比价表").AddNew()
    bjdr("日期") = dr("日期")
    bjdr("菜品编号") = dr("菜品编号")
    bjdr("菜品名称") = dr("菜品名称")
    bjdr("品类") = dr("品类")
    bjdr("单位") = dr("单位")
    bjdr("规格") = dr("规格")
    bjdr("数量") = dr("数量")
    bjdr("单价") = dr("单价")
    bjdr("金额") = dr("金额")
    bjdr("供应商") = dr("供应商")
    bjdr("菜品属性") = dr("菜品属性")
   
   
Next