Foxtable(狐表)用户栏目专家坐堂 → 甜版,表达式问题求教!!!!!


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

主题:甜版,表达式问题求教!!!!!

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/7 23:17:00 [只看该作者]

  要什么条件,就加上去。

 

Dim fdr As DataRow = DataTables("证书编号表").Find("鉴定等级 = '高级工' And 申报鉴定工种 = '" & e.DataRow("申报鉴定工种") & "' And 证书编号 = '" & e.DataRow("证书编号") & "' And convert(substring(证书编号,1,2),'System.Int32') <= " & Date.Today.Year - 2000 - 5)


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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/7 23:45:00 [只看该作者]

Dim fdr As DataRow = DataTables("证书编号表").Find("鉴定等级 = '高级工' And 申报鉴定工种 = '" & e.DataRow("申报鉴定工种") & "' And 证书编号 = '" & e.DataRow("证书编号") & "' And convert(substring(证书编号,1,2),'System.Int32') <= " & Date.Today.Year - 2000 - 5)

 

总算看懂了,这行代码的意思是:如果“证书编号表”中该员工的“申报鉴定工种”、证书取得年限够就能报名。我要还要有什么条件就用and再加!不过表没反应


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/8 9:01:00 [只看该作者]

 重置列啊,如果没有反应,说明没有满足条件的行啊。

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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/8 9:32:00 [只看该作者]

 If e.DataRow("鉴定等级") = "技师" Then
        Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = '" & e.DataRow("身份证号码") & "' And 申报鉴定工种 = '" & e.DataRow("申报鉴定工种") & "' And 证书编号 = '" & e.DataRow("证书编号") & "' And convert(substring(证书编号,1,2),'System.Int32') <= " & Date.Today.Year - 2000 - 5)
        Dim fdr As DataRow = DataTables("报名登记表").Find("原技术资格工种 = '助理工程师' And  & Date.Today.Year - 2000 - 5>=4)

    If fdr IsNot Nothing Then
            e.DataRow("是否合格") = True
        Else
            e.DataRow("是否合格") = False
        End If
    End If

根据对甜版代码的理解,我修改了一下,

1、因为只要两表的身份证号码列、证书编号(在报名登记表里是“原资格证书编号”列、在证书编号表里是“证书编号”列)、以及在原资格证书编号列中提取的年份>=3,那就证明该员工符合报名条件,则在“是否合格”列自动填充“是”;

2、如报名登记表里的“原技术资格工种”是“助理工程师”且年份满4年,则在“是否合格”列自动填充“是”;

3、另外如用甜版写的代码,表里没反应,用重置列也不行;

 

    代码报错,请甜版指教!


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/8 9:36:00 [只看该作者]

 是否合计列不要弄成表达式啊,弄成数据列啊。

 

 代码没问题。


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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/8 9:38:00 [只看该作者]

我又检查了一下,这句代码有问题:Dim fdr As DataRow = DataTables("报名登记表").Find("原技术资格工种 = '助理工程师' And  & Date.Today.Year - 2000 - 5>=4)

 

我的本意是如果报名登记表里的“原技术资格工种”是助理工程师且“原资格取得时间”列的年份到现在满4年就证明该员工符合报名条件,不过还是报错!


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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/8 9:42:00 [只看该作者]

是我刚写的代码没问题?“是否合格”列我昨天就改成了字符型,还要改成数据型?单精度小数?


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/1/8 9:45:00 [只看该作者]

去把帮助看一遍啊,不想给你说太多基础啊

 

If e.DataRow("鉴定等级") = "技师" Then
    If e.DataRow("原技术资格工种") = "助理工程师" AndAlso e.DataRow("原资格取得时间") <= Date.Today.Year - 4 Then
        e.DataRow("是否合格") = True
    Else
        Dim fdr As DataRow = DataTables("证书编号表").Find("身份证号码 = '" & e.DataRow("身份证号码") & "' And 申报鉴定工种 = '" & e.DataRow("申报鉴定工种") & "' And 证书编号 = '" & e.DataRow("证书编号") & "' And convert(substring(证书编号,1,2),'System.Int32') <= " & Date.Today.Year - 2000 - 5)
       
        If fdr IsNot Nothing Then
            e.DataRow("是否合格") = True
        Else
            e.DataRow("是否合格") = False
        End If
    End If
End If


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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/8 9:49:00 [只看该作者]

我真是很愚钝,帮助我是看了很多遍,但真正写起来的时候就一筹莫展!

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


加好友 发短信
等级:二尾狐 帖子:531 积分:3216 威望:0 精华:0 注册:2014/12/2 9:23:00
  发帖心情 Post By:2015/1/8 23:53:00 [只看该作者]

Dim gzdw As WinForm.ComboBox = e.Form.Controls("工作单位")
Dim jdpc As WinForm.ComboBox = e.Form.Controls("鉴定批次")
Dim sfhg As WinForm.ComboBox = e.Form.Controls("是否合格")
gzdw.ComboList = DataTables("报名登记表").GetComboListString("工作单位")
jdpc.ComboList = DataTables("报名登记表").GetComboListString("鉴定批次")
sfhg.ComboList = DataTables("报名登记表").GetComboListString("是否合格")
gzdw.ComboList = DataTables("审核合格表").GetComboListString("工作单位")
jdpc.ComboList = DataTables("审核合格表").GetComboListString("鉴定批次")
sfhg.ComboList = DataTables("审核合格表").GetComboListString("是否合格")


Tables("报名登记表").Filter = ""
Tables("审核合格表").Filter = ""

 

这是1个窗口的afterload事件代码,窗口中有1个页面集合控件,其页面1有“报名登记表”、页面2有“审查合格表”;还有1个GroupBox控件,里面有几个ComboBox、TextBox控件放查询条件和1个查询按钮控件,目标是实现在页面1里,点按钮,页面1的表显示查询结果,页面2的表不动,反之页面2显示,页面1不动;

查询按钮click事件代码如下:

Dim gzdw As WinForm.ComboBox = e.Form.Controls("工作单位")
Dim xgs As WinForm.ComboBox = e.Form.Controls("县公司")
Dim jdpc As WinForm.ComboBox = e.Form.Controls("鉴定批次")
Dim sfhg As WinForm.ComboBox = e.Form.Controls("是否合格")
Dim xm As WinForm.TextBox = e.Form.Controls("姓名")
Dim sfzhm As WinForm.TextBox = e.Form.Controls("身份证号码")
Dim yzgzsbh As WinForm.TextBox = e.Form.Controls("原资格证书编号")
Dim filter As String = "1=1"
If gzdw.Text > "" Then
    filter &= " and 工作单位 = '" & gzdw.Text & "'"
End If
If xgs.Text > "" Then
    filter &= " and 县公司 = '" & xgs.Text & "' "
End If
If jdpc.Text > "" Then
    filter &= " and  鉴定批次 like '*" & jdpc.Text & "*'"
End If
If xm.Text > "" Then
    filter &= " and  姓名 like '*" & xm.Text & "*' "
End If
If sfzhm.Text > "" Then
    filter &= " and  身份证号码 like '*" & sfzhm.Text & "*'"
End If
If yzgzsbh.Text > "" Then
    filter &= " and  原资格证书编号 like '*" & yzgzsbh.Text & "*'"
End If
If sfhg.Text > "" Then
    filter &= " and  是否合格 like '*" & sfhg.Text & "*'"
End If

Tables("报名登记表").Filter = filter
Tables("审核合格表").Filter = filter

 

现在点查询按钮,页面1和2都同时动,上述代码语法上有什么问题?请指教!


 回到顶部
总数 93 上一页 1 2 3 4 5 6 7 8 9 10 下一页