以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  奇怪了,怎么定位不了??  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184975)

--  作者:hitzfeld
--  发布时间:2023/1/28 15:31:00
--  奇怪了,怎么定位不了??
下面这段代码是放在字符框控件的keydown事件里面,希望达到找到对应单据就自动定位的功能。

If e.KeyCode = keys.Enter Then
Dim x As String = e.Form.Controls("TEXTBOX1").text
Dim dr As DataRow
dr = DataTables("工作单").sqlFind("[工作单号] = \'" & x & "\'")
If dr Is Nothing Then
msgbox("找不到此工作单")
Else
    Dim wz As Integer = Tables("入库单_table1").FindRow(dr)
    If wz >= 0 Then
        Tables("入库单_table1").Position = wz

    End If
End If
End If

入库单_table1是副本表,用fill方式加载,输入单号后回车,没有吧焦点定位到此行,而是在第一条记录原地不动???
单号肯定没错,试了几十次了
尝试 用
With Tables("入库单_table1")
    .Position = .Position + 1
End With
可以正确移动

[此贴子已经被作者于2023/1/28 15:42:30编辑过]

--  作者:有点蓝
--  发布时间:2023/1/28 15:50:00
--  
FindRow功能只能定位已经加载的数据,Table的所有功能都针对已经加载的数据的。

sqlFind改为Find

--  作者:hitzfeld
--  发布时间:2023/1/28 16:05:00
--  
蓝老师好,然而我吧代码改为下面这样,也是不会定位?

If e.KeyCode = keys.Enter Then
Dim x As String = e.Form.Controls("TEXTBOX1").text
With Tables("入库单_table1")
    Dim r As Integer
    r = .Find("\'& x &\'", .RowSel + 1, "工作单号", False, False, True)
    If r > - 1 Then \'如果找到符合条件的行
        .Position = r \'则选择该行
    End If 
End With
End If

--  作者:有点蓝
--  发布时间:2023/1/28 16:08:00
--  
r = .Find(x, .RowSel + 1, "工作单号", False, False, True)

--  作者:hitzfeld
--  发布时间:2023/1/28 23:10:00
--  
谢谢蓝老师!我太糊涂了图片点击可在新窗口打开查看