Foxtable(狐表)用户栏目专家坐堂 → 向高手请教一下一个报错信息该如何改


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

主题:向高手请教一下一个报错信息该如何改

美女呀,离线,留言给我吧!
youngling
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
向高手请教一下一个报错信息该如何改  发帖心情 Post By:2014/12/2 11:12:00 [只看该作者]

各位高手,我是一个菜鸟,平时要带小孩,实在没有那么多时间来研究帮助文件,这个项目是以前有空的时候参考视频啊帮助文件做的,做了一半没有做好,现在想把它继续弄好,现在碰到个问题,应该是个很简单的问题,但我看了半天帮助还是没有弄好,请高手帮忙,谢谢啦。
 

问题描述:

 

点击 查询 按钮后 会报错

 

错误描述:

 

.NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:窗口,客户录入,ValueChanged
详细错误信息:
未将对象引用设置到对象的实例。

查询按钮 click 代码如下:(论坛搜到的,我改了下) 

 

Dim Filter ,colname ,txt As String    '定义变量
colname =e.Form.Controls("ComboBox1").Value   '定义组合框的值
txt  = e.Form.Controls("TextBox2").Value    '定义文本框的值
If colname  Is Nothing Then    '如果组合框的值为空
    Return   '返回
End If
For Each dc As Col In Tables("客户信息").Cols '遍历表的所有列
    ''If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then  '如果是时间列,逻辑列,数值列
      '  Continue For    '排除
    'End If
    If dc.Name = colname Then   '如果列名和组合框的值相符
        If Filter > "" Then      
            Filter  = Filter & " Or "
        End If
        Filter = Filter  & "[" & dc.Name & "] Like '*" & txt & "*'"    '定义筛选字符串
    End If  '根据控件值迷糊筛选
Next
Tables("客户信息").Filter = Filter  '将数据筛选出来

 

valuechanged 代码如下:

 

Dim djijl As WinForm.TextBox = e.Form.Controls("第几条记录")
Dim gjtjl As  WinForm.TextBox = e.Form.Controls("共几条记录")


With Tables("客户信息")
    If .Current.DataRow.RowState = DataRowState.Unchanged Then '如果当前行未曾修改
       gjtjl.value ="共"& .Rows.Count  & "条记录"
djijl.value ="目前是第" & .position + 1 & "条记录"
    End If
End With

 

要求解决的问题:

 

1. 如何改下代码,消去这个错误代码

 

2. 如何写代码实现 取消查询状态,返回浏览状态。(也就是如果查询结果是一个数据,点击 上一个,下一个按钮会失效,如何可以继续浏览呢)

 

 

其实应该是很简单的,但我就是不知道该上哪儿找的帮助文件,谢谢各位高手啦。


图片点击可在新窗口打开查看此主题相关图片如下:报错1.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-12-2 14:42:00编辑过]

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


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

ValueChanged事件

 

Dim djijl As WinForm.TextBox = e.Form.Controls("第几条记录")
Dim gjtjl As  WinForm.TextBox = e.Form.Controls("共几条记录")


With Tables("客户信息")
    If .Current IsNot Nothing AndAlso .Current.DataRow.RowState = DataRowState.Unchanged Then '如果当前行未曾修改
        gjtjl.value ="共"& .Rows.Count  & "条记录"
        djijl.value ="目前是第" & .position + 1 & "条记录"
    End If
End With


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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2014/12/2 11:16:00 [只看该作者]

把文件发上来吧, 是由于你使用了空值 出现的问题.加入空值判断即可.

要返回未帅选状态,那么就 设置FIlter="" 即可

上一行一下行应该加入判断 到达最末行和第一行的处理

你还是上个例子吧

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


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

 第二个问题,你直接控制各个控件的Enabled属性即可啊。

 回到顶部
美女呀,离线,留言给我吧!
youngling
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2014/12/2 12:24:00 [只看该作者]

谢谢 有点甜 和 Bin,这个问题我折腾了好几个小时,真真是惭愧的很。

 

根据有点甜的答复我改好了第一个问题。

 

至于第二个问题,我没看懂 有点甜 老师的答复,决定采取偷懒的方法,也就是取消这个按钮,需要实现这个功能就退出这个页面重新打开页面,毕竟对于新手来说,能用是第一位的,细节问题以后再慢慢完善吧。

 

 


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


加好友 发短信
等级:四尾狐 帖子:998 积分:6656 威望:0 精华:0 注册:2014/10/20 11:06:00
  发帖心情 Post By:2014/12/2 13:35:00 [只看该作者]

取消查询状态

代码:
tables(“表名”).filter = “”

 回到顶部
美女呀,离线,留言给我吧!
youngling
  7楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2014/12/2 13:49:00 [只看该作者]

以下是引用jialihaha在2014-12-2 13:35:00的发言:
取消查询状态

代码:
tables(“表名”).filter = “”

 

对了,是我要的功能,谢谢啦。


 回到顶部
美女呀,离线,留言给我吧!
youngling
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2014/12/2 13:50:00 [只看该作者]

另外想请教下,如何我想查询 付款天数是 30 天的客户,我发现原来的代码就不行了,这个该如何改呢,谢谢。

 

错误提示 

 

 .NET Framework 版本:2.0.50727.3655
Foxtable 版本:2014.11.11.1
错误所在事件:
详细错误信息:
无法在 System.Int16 和 System.String 上执行“Like”操作。

 

付款天数在表格里是 短整型

客户名称等是 字符型

应该是语句错了。

一边等答复一边自己查找原因。

[此贴子已经被作者于2014-12-2 13:56:40编辑过]

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


加好友 发短信
等级:四尾狐 帖子:998 积分:6656 威望:0 精华:0 注册:2014/10/20 11:06:00
  发帖心情 Post By:2014/12/2 13:55:00 [只看该作者]

代码看看

 回到顶部
美女呀,离线,留言给我吧!
youngling
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2014/12/2 13:57:00 [只看该作者]

以下是引用jialihaha在2014-12-2 13:55:00的发言:
代码看看

查询按钮 click 代码如下:(论坛搜到的,我改了下) 

 

Dim Filter ,colname ,txt As String    '定义变量
colname =e.Form.Controls("ComboBox1").Value   '定义组合框的值
txt  = e.Form.Controls("TextBox2").Value    '定义文本框的值
If colname  Is Nothing Then    '如果组合框的值为空
    Return   '返回
End If
For Each dc As Col In Tables("客户信息").Cols '遍历表的所有列
    ''If dc.DataCol.IsDate OrElse dc.DataCol.IsBoolean OrElse dc.DataCol.IsNumeric Then  '如果是时间列,逻辑列,数值列
      '  Continue For    '排除
    'End If
    If dc.Name = colname Then   '如果列名和组合框的值相符
        If Filter > "" Then      
            Filter  = Filter & " Or "
        End If
        Filter = Filter  & "[" & dc.Name & "] Like '*" & txt & "*'"    '定义筛选字符串
    End If  '根据控件值迷糊筛选
Next
Tables("客户信息").Filter = Filter  '将数据筛选出来


 回到顶部
总数 18 1 2 下一页