以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  向高手请教一下一个报错信息该如何改  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=60840)

--  作者:youngling
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间: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
--  发布时间:2014/12/2 11:16:00
--  
把文件发上来吧, 是由于你使用了空值 出现的问题.加入空值判断即可.

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

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

你还是上个例子吧

--  作者:有点甜
--  发布时间:2014/12/2 11:18:00
--  
 第二个问题,你直接控制各个控件的Enabled属性即可啊。
--  作者:youngling
--  发布时间:2014/12/2 12:24:00
--  

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

 

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

 

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

 

 


--  作者:jialihaha
--  发布时间:2014/12/2 13:35:00
--  
取消查询状态

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

--  作者:youngling
--  发布时间:2014/12/2 13:49:00
--  
以下是引用jialihaha在2014-12-2 13:35:00的发言:
取消查询状态

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

 

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


--  作者:youngling
--  发布时间: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
--  发布时间:2014/12/2 13:55:00
--  
代码看看
--  作者:youngling
--  发布时间: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  \'将数据筛选出来