以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  表达式问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=65558)

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

--  作者:有点甜
--  发布时间:2015/3/18 14:22:00
--  
 回复3楼,肯定可以。
--  作者:有点甜
--  发布时间:2015/3/18 14:24:00
--  

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