以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQL文本框查询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143220)

--  作者:巷弄太过弯曲
--  发布时间:2019/11/18 10:23:00
--  SQL文本框查询
老师,请问如图,我想要在文本框内出入物料名称的FItemID 列如 输入FItemID是57019,然后自动筛选出FItemID为57019的物料名称等数据

图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20191118101331.png
图片点击可在新窗口打开查看


代码需要怎么改呢?

Dim Filter As String
filter = "  where a.finterid > 0 "

With e.Form.Controls("物料名称")
    If .Value IsNot Nothing Then
        Filter = Filter &  " and d.fitemid = \'" & .Value & "\'"
    End If
End With




Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinF orm.Com boBox
cmd.ConnectionN ame = "ceshi"
cmd.CommandText = "SEL E CT top 2000 a.fbillno as 单据编号,d.fname as 物料名称 " & _
" From POOrder a left join POOrderentry b on a.finterid = b.finterid " & _
" left join t_ICItem d on b.fitemid = d.fitemid " & filter
dt = cmd.ExecuteReader() \'SQL语句拼接表格


Tables("窗口1_Table1").DataSource = dt
Tables("窗口1_Table1").AutoSizeCols() \'自动列宽

--  作者:有点蓝
--  发布时间:2019/11/18 10:52:00
--  
代码没有问题,提示什么错误?
--  作者:巷弄太过弯曲
--  发布时间:2019/11/18 10:57:00
--  
是我事件写错地方,老师请问这个事件写在哪里可以做到数字一输进去就自动执行,我现在是输入后 鼠标要点一下表控件才会执行,我是结合扫码枪。数字直接通过扫码枪输入的
--  作者:有点蓝
--  发布时间:2019/11/18 10:59:00
--  
textchanged事件。建议做个查询按钮,点击后再执行,输入一个字就查询一次,效率很低的
[此贴子已经被作者于2019/11/18 11:02:08编辑过]

--  作者:巷弄太过弯曲
--  发布时间:2019/11/18 11:28:00
--  

可以了,老师我还有一个问题,就是如果我改成数据增加一条要这么修改代码呢。配合扫码枪,扫一下就表控件里面增加物料名称列和数量,比如57019,10   10是数量

Dim Filter As String
filter = "  where a.finterid > 0 "

With e.Form.Controls("物料名称")
    If .Value IsNot Nothing Then
        Filter = Filter &  " and d.fitemid = \'" & .Value & "\'"
    End If
End With



Dim cmd As New SQLCommand
Dim dt As DataTable
Dim cmb As WinF orm.Com boBox
cmd.ConnectionN ame = "ceshi"
cmd.CommandText = "SEL E CT top 2000 a.fbillno as 单据编号,d.fname as 物料名称 " & _
" From POOrder a left join POOrderentry b on a.finterid = b.finterid " & _
" left join t_ICItem d on b.fitemid = d.fitemid " & filter
dt = cmd.ExecuteReader() \'SQL语句拼接表格


Tables("窗口1_Table1").DataSource = dt
Tables("窗口1_Table1").AutoSizeCols() \'自动列宽
[此贴子已经被作者于2019/11/18 11:32:29编辑过]

--  作者:有点蓝
--  发布时间:2019/11/18 11:49:00
--  
没看懂,截图说明一次
--  作者:巷弄太过弯曲
--  发布时间:2019/11/18 12:08:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:企业微信截图_20191118115958.png
图片点击可在新窗口打开查看
如图,我在文本框内,有57019,10 这串数字是用盘点机记录的,57019代表对于的物料名称,10则代表这个物料的数量,我希望的做到的是,当我用盘点机发送这串数据的时候,下面表控件能够自动增加一条物料名称和数量的数据 列如57019代码物料名称A4纸,数量为10


--  作者:有点蓝
--  发布时间:2019/11/18 13:44:00
--  
这个和您1楼的用法有冲突吧。每输入一个字符就加载一次数据,然后增加一条记录?确定要这样?

扫描枪也是逐个字符录入的,“57019,10”有8个字符,会触发8次textchanged的。先搞清楚到底要怎么做?

--  作者:巷弄太过弯曲
--  发布时间:2019/11/18 13:49:00
--  
不做查询了,就做增加,就是打算做库存盘点,扫一下物料的二维码,输入数量后,吧数据发送到文本框内,然后表控件就会生成刚刚扫的物料名称和数量 请问这个需要怎么做
--  作者:有点蓝
--  发布时间:2019/11/18 13:59:00
--  
到keydown事件处理

if e.keycode = keys.enter
e.cancel = true
dim ar() as string = e.sender.split(",")
if ar.length = 2 then
dim r as row = tables(xx).addnew
r("第一列") = ar(0)
……