Foxtable(狐表)用户栏目专家坐堂 → [求助]老师看下代码错在哪?


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

主题:[求助]老师看下代码错在哪?

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]老师看下代码错在哪?  发帖心情 Post By:2014/12/29 13:57:00 [显示全部帖子]

e.Form.Controls("DateTimePicker_日期").Text = Nothing  ‘这一句有错误
e.Form.Controls("ComboBox_审核").Text = Nothing  ‘这一句没有错误

错误提示:
.NET Framework 版本:2.0.50727.6421
Foxtable 版本:2014.10.23.1
错误所在事件:
详细错误信息:
无法在 System.DateTime 和 System.String 上执行“=”操作。
[此贴子已经被作者于2014-12-29 13:58:25编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/29 14:06:00 [显示全部帖子]

还是错的,我感觉错误的代码是在另一段造成的,我把详细详细情况说下:
窗口中有一清除筛选按钮,代码如下:
e.Form.Controls("DateTimePicker_日期").Value = Nothing
e.Form.Controls("ComboBox_卷号").value = Nothing
e.Form.Controls("ComboBox_审核").Text = Nothing
Tables("生产记录表").Filter = ""

有一日期输入框,ValueChanged 的代码如下:
If e.Form.Controls("CheckBox_联动筛选").Checked = True Then
    Dim rq As WinForm.DateTimePicker  = e.Form.Controls("DateTimePicker_日期")
    Dim jh As WinForm.ComboBox = e.Form.Controls("ComboBox_卷号")
    Dim sh As WinForm.ComboBox = e.Form.Controls("ComboBox_审核")
    jh.ComboList = DataTables("生产记录表").GetComboListString("卷号","日期= '" & rq.value & "'" )
    Tables("生产记录表").Filter="[日期] = '" & e.Sender.Value & "'"
Else
    e.Form.Controls("ComboBox_卷号").Value = Nothing
    e.Form.Controls("ComboBox_审核").Value = Nothing
    Tables("生产记录表").Filter="[日期] = '" & e.Sender.Value & "'"
End If

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/29 14:20:00 [显示全部帖子]

原方法可以按日期进行筛选的,只是点了清除筛选才会出错,按老师的方法改,依旧是点了清除筛选后出错,但出现了不同的错误提示。

If e.Form.Controls("CheckBox_联动筛选").Checked = True Then
    Dim rq As WinForm.DateTimePicker  = e.Form.Controls("DateTimePicker_日期")
    Dim jh As WinForm.ComboBox = e.Form.Controls("ComboBox_卷号")
    Dim sh As WinForm.ComboBox = e.Form.Controls("ComboBox_审核")
    jh.ComboList = DataTables("生产记录表").GetComboListString("卷号","日期=  '" & rq.value & "'" )
    
    Tables("生产记录表").Filter="[日期] = #" & e.Sender.Value & "#"
Else
    e.Form.Controls("ComboBox_卷号").Value = Nothing
    e.Form.Controls("ComboBox_审核").Value = Nothing
    Tables("生产记录表").Filter="[日期] = #" & e.Sender.Value & "#"
End If


.NET Framework 版本:2.0.50727.6421
Foxtable 版本:2014.10.23.1
错误所在事件:
详细错误信息:
表达式包含无效的日期常量“##”。


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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/29 14:26:00 [显示全部帖子]

搞定了,但我感觉原来错误的地方是由老师新加的第一个IF判断解决的,’ 改成 # 并不是主要原因,因为我尝试了下,用以下代码一样能正确执行,老师看看这是为什么?
If e.Sender.Text <> Nothing Then
    If e.Form.Controls("CheckBox_联动筛选").Checked = True Then
        Dim rq As WinForm.DateTimePicker  = e.Form.Controls("DateTimePicker_日期")
        Dim jh As WinForm.ComboBox = e.Form.Controls("ComboBox_卷号")
        Dim sh As WinForm.ComboBox = e.Form.Controls("ComboBox_审核")
        jh.ComboList = DataTables("生产记录表").GetComboListString("卷号","日期='" & rq.value & "'")
        
        Tables("生产记录表").Filter="[日期] = '" & e.Sender.Text & "'"
    Else
        e.Form.Controls("ComboBox_卷号").Value = Nothing
        e.Form.Controls("ComboBox_审核").Value = Nothing
        Tables("生产记录表").Filter="[日期] = '" & e.Sender.Text & "'"
    End If
End If

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


加好友 发短信
等级:五尾狐 帖子:1105 积分:8967 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/29 14:31:00 [显示全部帖子]

造成不出错的原因是不是以下造成的:
此表的DataColChanged 

'月份及日期生成模块
If e.DataCol.Name = "起始时间" Then
    e.DataRow("月份")=Format(e.DataRow("起始时间"),"yyyy-MM")
    e.DataRow("日期")=Format(e.DataRow("起始时间"),"yyyy-MM-dd")
End If

起始时间这个列是通过人工输入的,列的类型为datetime
日期这一列是自动生成的,列的类型为date


 回到顶部