Foxtable(狐表)用户栏目专家坐堂 → 表达式问题


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

主题:表达式问题

帅哥哟,离线,有人找我吗?
utcxray
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
表达式问题  发帖心情 Post By:2015/3/18 12:34:00 [只看该作者]



问题:每次在“采购明细”表中输入“型号”时,就在“采购明细”表中找与输入“型号”相近的记录,并弹出对话框告诉输入者所有包含与输入“型号”字符的记录发生的“供应商”、“采购日期”、“单价”。
原因:1、由于时间的变动,不同时期同“型号”的单价不一样。
         2、由于供货来源的变动,同“型号”的产品可能来自不同的供应商。

我的问题
一、
'以下确保型号以及价格的唯一性、准确性
If e.DataCol.Name = "型号"  Then '如果内容发生变动的是型号列
  Dim dr As DataRow
  With DataTables("采购明细")
    dr = .Find("型号 LIKE '" & e.NewValue &  " '","采购日期 Desc") '找出最后一次订购该产品的记录
    'dr = .Find("型号 = '" & e.NewValue & " '","采购日期 Desc",1) '找出倒数第二次订购该产品的记录
           If dr IsNot Nothing Then '如果找到的话
     MessageBox.Show("最近一次订货在 " & dr("供应商") & "时间是: "  & dr("采购日期") & "价格是: " & dr("单价"), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
           End If
   End With
End If
出现的问题:此方式只能找到一个。
比如:我输入SURT5000UXICH,系统中本来还有SURT5000UXICH-BJ,SURT5000UXICH-BJTJ,我希望所有含SURT5000UXICH字符的记录都找出来,我的方式是dr = .Find("型号 LIKE '" & e.NewValue &  " '",
并以这种方式弹出对话框 MessageBox.Show("所有订货在 " & dr("供应商") & "时间是: "  & dr("采购日期") & "价格是: " & dr("单价"), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)。

二、
帮助中说要找出所有记录用SELECT.例子如下:
Dim drs As List(Of DataRow)
drs = DataTables("订单").Select("[产品] = 'PD01' And [日期]= #1/4/1999#")
但如何输出呢?
三、
还有没其它方式
想了很久,请指点

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/18 13:37:00 [只看该作者]

Dim drs As List(Of DataRow)
drs = DataTables("订单").Select("型号 like '" & e.NewValue & "%'")
for each dr as datarow in drs
   mMessageBox.Show("所有订货在 " & dr("供应商") & "时间是: "  & dr("采购日期") & "价格是: " & dr("单价"), "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
next

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


加好友 发短信
等级:三尾狐 帖子:668 积分:5053 威望:0 精华:0 注册:2011/10/22 13:37:00
  发帖心情 Post By:2015/3/18 14:16:00 [只看该作者]

想做成像中文输入法类似的,跟随式的。事先做了个”型号对应“的窗口,窗口中有个TABLE1的SQL查询表,此表先对型号、单价、供应商做了筛选。这样行吗
'以下确保价格的准确
If e.DataCol.Name = "型号"  Then '如果内容发生变动的是型号列
    If e.DataRow.IsNull("型号") Then
           Dim txt As String = "'%" & e.newvalue & "%'"
            Dim tbl As Table = Tables("型号对应_Table1")
       If txt = "" Then
                tbl.Filter = ""
               Else
                  Dim frm As WinForm.Form
                   frm = Forms("型号对应")  
                        frm.Open()
                        tbl.Filter = "型号 Like " & txt & " "
               End If
         End If
  End If
BIN的方案在实际中存在如有很多行,就会弹出许多对话框

[此贴子已经被作者于2015/3/18 14:17:46编辑过]

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


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

 回复3楼,肯定可以。

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


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


 回到顶部