Foxtable(狐表)用户栏目专家坐堂 → [求助]字段转换类型后,再参与条件表达式问题


  共有3006人关注过本帖树形打印复制链接

主题:[求助]字段转换类型后,再参与条件表达式问题

帅哥哟,离线,有人找我吗?
wangjh8888
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
[求助]字段转换类型后,再参与条件表达式问题  发帖心情 Post By:2021/9/24 0:15:00 [显示全部帖子]

老师好


Dim val1 As Double =3.1

With CurrentTable

    Dim r As Integer

    r = .FindRow("[cont] >= " & val1) '从第一行开始查找

    If r >= 0 Then '如果找到的话

        .Position = r '定位到找到的行.

    End If

End With


上面代码 在[cont] 是数据Double类型时,没有问题,


偏偏我的[cont]是字符型,如“12.34”

试了    r = .FindRow("CDbl([cont]) >= " & val1) 报错

怎么样写代码呀,完成查找


 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2021/9/24 8:56:00 [显示全部帖子]

你好
val1 是数值,不能用单引号来引用吧

我本意是有两数字字符串,需要比较大小
如 
dim a as string ="3.18"
dim b as string ="22.18"   b:从数据表【Cont1】而来

用字符来比较,a>b
我想要的结果是   CDbl(b)> CDbl(a)来定位position,所以需要把字符字段转换为数值字段转,再来比较

被困住了,求办法






 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2021/9/24 9:50:00 [显示全部帖子]

老师  
出现错误

.NET Framework 版本:2.0.50727.5420
Foxtable 版本:2018.10.9.1
错误所在事件:DropBox1,DropDownOpened
详细错误信息:
输入字符串的格式不正确。   怎么回事?

 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2021/9/24 10:17:00 [显示全部帖子]

Dim txt1 As String = Forms("GPS接收").controls("ComboBox-数据来源").Text
Dim txt2 As String = Forms("GPS接收").controls("ComboBox-来源名称").Text
Dim txt3 As String = e.Form.DropDownBox.Text

Dim t As Table = Forms("当前节点下拉窗口").controls("Table1").Table   ''Tables("窗口1_Table1")  ''e.Form.controls("Table1")
t.RowHeaderVisible = False

t.Filter = "[Class] = '定位数据' and [Scene] ='"  & txt1 & "'  And [Cont1] = '" & txt2 & "'"

Dim i As Integer=0
i = t.FindRow("Convert([Cont3],'System.Double') >= " & CDbl(txt3) )

If i >= 0 Then
    t.Position = i
End If

t.Select()

 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2021/9/24 10:45:00 [显示全部帖子]

只用 2条记录(“10“和”20”)  测试了,还是一样报错,???

 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2021/9/24 11:38:00 [显示全部帖子]

Dim txt1 As String = Forms("GPS接收").controls("ComboBox-数据来源").Text
Dim txt2 As String = Forms("GPS接收").controls("ComboBox-来源名称").Text
Dim txt3 As String = e.Form.DropDownBox.Text

Dim t As Table = Forms("当前节点下拉窗口").controls("Table1").Table   ''Tables("窗口1_Table1")  ''e.Form.controls("Table1")
t.RowHeaderVisible = False

t.Filter = "[Class] = '定位数据' and [Scene] ='"  & txt1 & "'  And [Cont1] = '" & txt2 & "'"

Dim i As Integer=0
i = t.FindRow("Convert([Cont3],'System.Double') >= " & CDbl(txt3) )

If i >= 0 Then
    t.Position = i
End If

t.Select()

老师 我用下面代码  替换上面的红色代码,就没有报错,
For Each r As Row In t.Rows
    r("IDNO")=CDbl(r("Cont3"))
Next

问题还是在  i = t.FindRow("Convert([Cont3],'System.Double') >= " & CDbl(txt3) )
又找不到原因!!求救

 回到顶部
帅哥哟,离线,有人找我吗?
wangjh8888
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:502 积分:4924 威望:0 精华:0 注册:2016/7/11 10:12:00
  发帖心情 Post By:2021/9/24 12:59:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:test.zip



原因应该是:findrow不是作用在table,而是datatable,有没有办法,只在筛选后的table进行查找?

 回到顶部