以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  find返回值不生效  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=51539)

--  作者:kao_go
--  发布时间:2014/5/28 14:24:00
--  find返回值不生效

 Dim dr As DataRow
        dr = .DataTable.Find("yhdm = \'"& yhdm &"\'")
        If dr IsNot Nothing Then
            MessageBox.Show(.Cols("yhdm").Caption+yhdm+"已经存在!","警告")
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
            e.Form.Controls("you1").BaseControl.Row=0
            e.Form.Controls("you1").BaseControl.Col=1
            e.Form.Controls("you1").BaseControl.StartEditing
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
        Else

end if
以上代码,.DataTable.Find("yhdm = \'"& yhdm &"\'")无论输入什么都会提示已经存在,如果直接改成.DataTable.Find("yhdm = \'005‘)常量就能正常判断

求帮助

--  作者:Bin
--  发布时间:2014/5/28 14:26:00
--  
检查你 yhdm  这个变量 是否正常.
--  作者:kao_go
--  发布时间:2014/5/28 14:26:00
--  
Dim yhdm As String=.current("yhdm"),,yhdm是这样定义的
之前直接用.【.current("yhdm")】也是不行

我用MessageBox.show(yhdm)能获取到在yhdm输入的值
[此贴子已经被作者于2014-5-28 14:28:42编辑过]

--  作者:Bin
--  发布时间:2014/5/28 14:28:00
--  
如果你是取本表的当前行,当然你怎么FIND都是有值得啊.

你利用messagebox.show 弹出一下变量的值,人工判断一下看看吧.

FIND是不可能有问题的.

--  作者:kao_go
--  发布时间:2014/5/28 14:31:00
--  
完整代码
\'窗口变量,编辑状态
Dim bianji As String=e.Form.Controls("bianji").text

With Tables("yonghu")
    Dim yhdm As String=.current("yhdm")
    Dim yhmc As String=.current("yhmc")
    If yhdm="" Or yhmc="" Then
        If yhdm="" Then
            If MessageBox.Show(.Cols("yhdm").Caption+"不能为空!","警告",MessageBoxButtons.ok,MessageBoxIcon.Question) = DialogResult.ok Then
            End If
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
            e.Form.Controls("you1").BaseControl.Row=0
            e.Form.Controls("you1").BaseControl.Col=1
            e.Form.Controls("you1").BaseControl.StartEditing
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
        ElseIf yhmc="" Then
            If MessageBox.Show(.Cols("yhmc").Caption+"不能为空!","警告",MessageBoxButtons.ok,MessageBoxIcon.Question) = DialogResult.ok Then
            End If
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
            e.Form.Controls("you1").BaseControl.Row=1
            e.Form.Controls("you1").BaseControl.Col=1
            e.Form.Controls("you1").BaseControl.StartEditing
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
        End If
    Else
        Dim dr As DataRow
        dr = .DataTable.Find("yhdm = \'"&yhdm&"\'")
        If dr IsNot Nothing Then
            MessageBox.Show(.Cols("yhdm").Caption+yhdm+"已经存在!","警告")
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
            e.Form.Controls("you1").BaseControl.Row=0
            e.Form.Controls("you1").BaseControl.Col=1
            e.Form.Controls("you1").BaseControl.StartEditing
            \'新增或者修改时默认选中第一行第一列,并进入编辑状态
        Else
            .Current.Save()  \'保存后禁止编辑 其他相应按钮禁用
            .AllowEdit = False
            e.Form.Controls("baocun").Enabled =False  \'设置按钮状态
            e.Form.Controls("quxiao").Enabled =False
            e.Form.Controls("xinzeng").Enabled =True
            e.Form.Controls("xiugai").Enabled =True
            e.Form.Controls("shanchu").Enabled =True
            e.Form.Controls("shuaxin").Enabled =True
            e.Form.Controls("daochu").Enabled =True
            e.Form.Controls("dayin").Enabled =True
            e.Form.Controls("shezhi").Enabled =True
            e.Form.Controls("guanbi").Enabled =True  \'设置按钮状态
            e.Form.Controls("bianji").text="0"        \'窗口变量,编辑状态
        End If
    End If
End With

--  作者:Bin
--  发布时间:2014/5/28 14:32:00
--  
看4楼自己调试一下, 搞不定就上例子.
--  作者:kao_go
--  发布时间:2014/5/28 14:36:00
--  
利用messagebox.show 弹出一下变量的值是正确的,就是我输入的值
--  作者:Bin
--  发布时间:2014/5/28 14:37:00
--  
检查表中是否有对应的值.
--  作者:有点甜
--  发布时间:2014/5/28 14:40:00
--  

很矛盾的代码,肯定是查得到的啊。

 

With Tables("yonghu")
    Dim yhdm As String=.current("yhdm")
    Dim yhmc As String=.current("yhmc")
    If yhdm="" Or yhmc="" Then
       
    Else
        Dim dr As DataRow
        dr = .DataTable.Find("yhdm = \'"&yhdm&"\'")
        If dr IsNot Nothing Then
            MessageBox.Show(.Cols("yhdm").Caption+yhdm+"已经存在!","警告")
 

--  作者:kao_go
--  发布时间:2014/5/28 14:40:00
--  
用的是外部数据源,表里面没有对应的值(表里面只有【001
002
003
004
005
006
】)
yhdm数据类型是varchar(50)