以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  查找定位  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178269)

--  作者:采菊东篱下
--  发布时间:2022/6/27 14:02:00
--  查找定位

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220627135842.png
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220627135654.png
图片点击可在新窗口打开查看
我想点查找按钮后自动定位到收费标准表上的行,在查找按钮上这样写报错:
With Tables("收费标准")
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# OrElse [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value))
    If dr IsNot Nothing Then
        Dim idx As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# OrElse [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value), .Position, True )
        If idx >= 0 Then
            .Position = idx
        End If
    End If
    Dim dr1 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# OrElse [亲情计费_起计时间] = #" & e.Form.Controls("TextBox2").Value & "# OrElse [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & "OrElse [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value))
    If dr1 IsNot Nothing Then
        Dim idx1 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# OrElse [亲情计费_起计时间] = #" & CDbl(e.Form.Controls("TextBox2").Value) & "# OrElse [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & "OrElse [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value), .Position, True )
        If idx1 >= 0 Then
            Tables("收费标准").Position = idx1
        End If
    End If
    Dim dr2 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# OrElse [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & "OrElse [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & "OrElse [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value))
    If dr2 IsNot Nothing Then
        Dim idx2 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# OrElse [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & "OrElse [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & "OrElse [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value), .Position, True )
        If idx2 >= 0 Then
            Tables("收费标准").Position = idx2
        End If
    End If
End With

.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2022.5.29.2
错误所在事件:窗口,收费定价,Button2,Click
详细错误信息:
Syntax error: Missing operand after \'OrElse\' operator.
[此贴子已经被作者于2022/6/27 14:02:46编辑过]

--  作者:有点蓝
--  发布时间:2022/6/27 14:07:00
--  
OrElse是代码的用法:http://www.foxtable.com/webhelp/topics/0220.htm


Foxtable里有2套运算符语法,一套是用来写代码的,一套是用在条件表达式的,不要搞混了

--  作者:采菊东篱下
--  发布时间:2022/6/27 14:37:00
--  
这样写一样报错:
输入日期、月租金额便可查找定位;或输入日期、亲情计费_起计时间、亲情计费_24小时最高收费、亲情计费_小时收费便可查找定位;再或输入日期、临时收费_起计时间、临时收费_24小时最高收费、临时收费_小时收费便可查找定位,不用在所有控件输入数据,我这里应该是没在下面的控件输入数据引起错误,应如何避免?

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220627142919.png
图片点击可在新窗口打开查看

With Tables("收费标准")
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value))
    If dr IsNot Nothing Then
        Dim idx As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value), .Position, True )
        If idx >= 0 Then
            .Position = idx
        End If
    End If
    Dim dr1 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or[亲情计费_起计时间] = #" & e.Form.Controls("TextBox2").Value & "# Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & "Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value))
    If dr1 IsNot Nothing Then
        Dim idx1 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [亲情计费_起计时间] = #" & CDbl(e.Form.Controls("TextBox2").Value) & "# Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & "Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value), .Position, True )
        If idx1 >= 0 Then
            Tables("收费标准").Position = idx1
        End If
    End If
    Dim dr2 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & "Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value))
    If dr2 IsNot Nothing Then
        Dim idx2 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & "Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value), .Position, True )
        If idx2 >= 0 Then
            Tables("收费标准").Position = idx2
        End If
    End If
End With

--  作者:有点蓝
--  发布时间:2022/6/27 14:47:00
--  
学会看错误提示

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

1、日期没有值
2、or和前面的0粘到一起了

--  作者:采菊东篱下
--  发布时间:2022/6/27 20:11:00
--  
.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2022.5.29.2
错误所在事件:窗口,收费定价,Button2,Click
详细错误信息:
Syntax error: Missing operand before \'Or\' operator.

改为下面代码还是报错
With Tables("收费标准")
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = # " & e.Form.Controls("DateTimePicker1").Value & " # Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value))
    If dr IsNot Nothing Then
        Dim idx As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value), .Position, True )
        If idx >= 0 Then
            .Position = idx
        End If
    End If
    Dim dr1 As DataRow = DataTables("收费标准").Find("[实施日期] = # " & e.Form.Controls("DateTimePicker1").Value & " # Or [亲情计费_起计时间] = " & e.Form.Controls("TextBox2").Value & " Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & " Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value))
    If dr1 IsNot Nothing Then
        Dim idx1 As Integer = .FindRow("[实施日期] = # " & e.Form.Controls("DateTimePicker1").Value & " # Or [亲情计费_起计时间] = " & CDbl(e.Form.Controls("TextBox2").Value) & " Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & " Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value), .Position, True )
        If idx1 >= 0 Then
            Tables("收费标准").Position = idx1
        End If
    End If
    Dim dr2 As DataRow = DataTables("收费标准").Find("[实施日期] = # " & e.Form.Controls("DateTimePicker1").Value & " # Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & " Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value))
    If dr2 IsNot Nothing Then
        Dim idx2 As Integer = .FindRow("[实施日期] = # " & e.Form.Controls("DateTimePicker1").Value & " # Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & " Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value), .Position, True )
        If idx2 >= 0 Then
            Tables("收费标准").Position = idx2
        End If
    End If
End With

--  作者:有点蓝
--  发布时间:2022/6/27 20:34:00
--  
不该有的空格就不要乱加

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


--  作者:采菊东篱下
--  发布时间:2022/6/27 20:57:00
--  
.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2022.5.29.2
错误所在事件:窗口,收费定价,Button2,Click
详细错误信息:
Syntax error: Missing operand before \'Or\' operator.

改为这样了,依然这样报错:
With Tables("收费标准")
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value))
    If dr IsNot Nothing Then
        Dim idx As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value), .Position, True )
        If idx >= 0 Then
            .Position = idx
        End If
    End If
    Dim dr1 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [亲情计费_起计时间] = " & e.Form.Controls("TextBox2").Value & " Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & " Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value))
    If dr1 IsNot Nothing Then
        Dim idx1 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [亲情计费_起计时间] = " & CDbl(e.Form.Controls("TextBox2").Value) & " Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & " Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value), .Position, True )
        If idx1 >= 0 Then
            Tables("收费标准").Position = idx1
        End If
    End If
    Dim dr2 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & " Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value))
    If dr2 IsNot Nothing Then
        Dim idx2 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & " Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value), .Position, True )
        If idx2 >= 0 Then
            Tables("收费标准").Position = idx2
        End If
    End If
End With




--  作者:有点蓝
--  发布时间:2022/6/27 21:00:00
--  
调试是那一句代码错误
--  作者:采菊东篱下
--  发布时间:2022/6/27 21:43:00
--  
With Tables("收费标准")
    Dim dr As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value))
    If dr IsNot Nothing Then
        Dim idx As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [月租收费] = " & CDbl(e.Form.Controls("TextBox1").Value), .Position, True )
        If idx >= 0 Then
            .Position = idx
        End If
    End If
\'    Dim dr1 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [亲情计费_起计时间] = " & e.Form.Controls("TextBox2").Value & " Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & " Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value))
\'    If dr1 IsNot Nothing Then
\'        Dim idx1 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [亲情计费_起计时间] = " & CDbl(e.Form.Controls("TextBox2").Value) & " Or [亲情计费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox3").Value) & " Or [亲情计费_小时收费] = " & CDbl(e.Form.Controls("TextBox4").Value), .Position, True )
\'        If idx1 >= 0 Then
\'            Tables("收费标准").Position = idx1
\'        End If
\'    End If
\'    Dim dr2 As DataRow = DataTables("收费标准").Find("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & " Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value))
\'    If dr2 IsNot Nothing Then
\'        Dim idx2 As Integer = .FindRow("[实施日期] = #" & e.Form.Controls("DateTimePicker1").Value & "# Or [临时收费_起计时间] = " & CDbl(e.Form.Controls("TextBox5").Value) & " Or [临时收费_24小时最高收费] = " & CDbl(e.Form.Controls("TextBox6").Value) & " Or [临时收费_小时收费] = " & CDbl(e.Form.Controls("TextBox7").Value), .Position, True )
\'        If idx2 >= 0 Then
\'            Tables("收费标准").Position = idx2
\'        End If
\'    End If
End With
注识后面两段代码,在时间控件上选择时间,在月租收费上输入数据不报错,但选择时间,删除月租收费数据,在下面任意控件上选择数据就报错,同理,注识第一段代码,在代码对应的控件上输入数据不报错,没数据就报错,这三段代码只要其中一段代码对应控件没数据就报错,不能用同一按钮控制三段代码?有解决办法吗?

--  作者:有点蓝
--  发布时间:2022/6/27 22:01:00
--  
参考这种方法设置查询条件:http://www.foxtable.com/webhelp/topics/1058.htm