以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]录入定位问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=75334)

--  作者:18929005187
--  发布时间:2015/10/5 21:08:00
--  [求助]录入定位问题
 窗口  录入 供应商名字   
1. 如果此应商已经录入 ,则在自动定位到已录入的供应商列;
2. 如果此供应商没有录入 ,如果不存在此供应商,增加一行录入此供应商;

个人用的dorpdownbox控件录入供应商,并且绑定到 供应商表 的 供应商名称列
 代码分别  leave 和   Valuechanged  事件中测试过  实现不了我的要求
  代码如下

Dim de As String
With Forms("供应商编辑").Controls("txname1")
    If .Value IsNot Nothing Then
        de =  .Value
        With CurrentTable
            Dim r As Integer
            r = .FindRow("[供应商ID] = \'de\'", 0, True ) \'从第一行行开始查找
            If r >= 0 Then \'如果找到的话
                Tables("供应商表").Current.Delete
                .Position = r \'定位到找到的行.
            Else
                .Position = .Rows.Count - 1 \'定位到最后一行
            End If
        End With
    End If
End With

--  作者:18929005187
--  发布时间:2015/10/6 18:38:00
--  
求助   解决


--  作者:18929005187
--  发布时间:2015/10/6 21:04:00
--  
   去掉绑定 供应商表的供应商公司列在 leave  事件中
Dim de As String
With Forms("供应商编辑").Controls("txname1")
    If .Value IsNot Nothing Then
        de =  .Value
        With Tables("供应商表")
            Dim a As String = Tables("供应商表").Rows.Count - 1
            Dim r As Integer
            r = .Find( de , 0, "供应商公司", True, True, True)
            MessageBox.show(r)
            If r > - 1 Then \'如果找到符合条件的
                Tables("供应商表").Current.Delete
                .Position = r \'则选择该行
            End If
            If r = -1 Then
                Dim dr As DataRow = DataTables("供应商表").DataRows(a)
                dr("供应商公司") = de
                .Position = a
            End If
        End With
    End If
End With

好像解决了我这个问题。求大家给点意见,指出漏洞
[此贴子已经被作者于2015/10/6 21:05:25编辑过]

--  作者:大红袍
--  发布时间:2015/10/7 10:02:00
--  

Dim de As String
With Forms("供应商编辑").Controls("txname1")
    If .Value IsNot Nothing Then
        de = .Value
        With Tables("供应商表")
            Dim idx As Integer = Tables("供应商表").findRow("供应商公司 = \'" & de & "\'")
            If idx >= 0 Then
                Tables("供应商表").Current.Delete
                .Position = idx \'则选择该行
            Else
                Dim dr As Row = Tables("供应商表").AddNew
                dr("供应商公司") = de
            End If
        End With
    End If
End With