Foxtable(狐表)用户栏目专家坐堂 → datalist合计的示例(借花献佛)


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

主题:datalist合计的示例(借花献佛)

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/11 10:16:00 [显示全部帖子]

谢谢

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/12 15:05:00 [显示全部帖子]

前两天的更新有问题,下载的项目的时候,复制到新的目录再运行。


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/12 15:07:00 [显示全部帖子]

另外请检查列名称是否正确。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/12 15:33:00 [显示全部帖子]

代码问题,检查列名称看看

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/12 15:44:00 [显示全部帖子]

问题在这里的:

Dim cps As List(Of String) = Da.GetUniqueValues("","" & Vars("ColName") & "")

没有给全局变量colName赋予一个有效的值,自然出错,这个值必须是列名称之一

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/13 8:48:00 [显示全部帖子]

其实很简单,在关键的代码之前,加上:
Messagebox.Show(Vars("ColName"))

检查一下全局便量ColName是否有值,如果不掌握这些基本的技巧,写代码一旦出错,就很被动。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/13 8:49:00 [显示全部帖子]

调试技巧

很多错误只有在运行的时候,才会发现。
虽然对于运行中的错误,系统会明确提示是哪一个对象的哪一个事件发生了错误,以及错误的原因;但是要具体定位是哪一行代码有问题,往往是一件非常艰巨的工作,特别是代码很长,逻辑较为复杂的时候。我们可以在代码段中插入MessageBox.show(x),将代码分割成多段,x是一个数字,例如:

代码段一
MessageBox.Show(1)
代码段二
MessageBox.Show(2)
代码段三
MessageBox.Show(3)
代码段四
MessageBox.Show(4)
代码段五
MessageBox.Show(5)
...

这样每执行一段代码,就提示一个数字,在上面的例子中,如果提示2后发生了错误,那么说明问题发生在第三段代码,这样我们就可以重点分析该段代码了。

此外,在调试代码的时候,我们还可以利用MessageBox来显示关键变量或数据,这对于分析错误原因,会有很大的帮助。


调试结束后,删除所有用于调试的MessageBox语句即可。

MessageBox语句如果出现在一些特定的事件中,可能会导致死循环,例如表事件PrepareEdit,那么如何来进行调试呢?可以参考下面的例子:

代码段一
If ModifierKey = Keys.Control Then
    MessageBox.Show(1)
End If
代码段二
If ModifierKey = Keys.Control Then
    MessageBox.Show(2)
End If

这样只有始终按下Ctrl键,才会执行MessageBox语句,松开Ctrl键,就回到正常状态,从而避免死循环的出现。

需要注意的是,代码是前后关联的,有的时候某处代码执行时发生错误,并不是该处代码有问题,而是前面的代码造成的,例如:

Dim dr As DataRow
dr =
DataTables("产品").Find("编号 = '03'") '找出编号为03的产品
dr("单价") = 0.1

如果产品表中不存在编号为03的记录,那么上面的代码执行到第三行:

dr("单价") = 0.1

将出现错误提示,但是显然该行代码本身并没有问题,我们需要的是应该加上判断语句:

Dim dr As DataRow
dr =
DataTables("产品").Find("编号 = '03'") '找出编号为03的产品
If dr IsNot Nothing Then '如果找到的话
   
dr("单价") = 0.1
End If

[此贴子已经被作者于2009-2-13 8:49:35编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/13 10:21:00 [显示全部帖子]

不用研究了,下次更新,可以直接在窗口插入任何表。
这样DataList就完全是一个鸡肋了。

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/13 14:24:00 [显示全部帖子]

以下是引用don在2009-2-13 14:16:00的发言:

希望增加一个关闭窗口前执行事件:因不想禁止直接关闭按钮(设为True,直接关闭按钮没有隐蔽,潜意识谁都会点击).



呵呵,如果是模式窗口,已经有这个事件啊:BeforeClose


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/2/13 14:25:00 [显示全部帖子]

以下是引用cpayinyuan在2009-2-13 11:08:00的发言:

早知如何,何必当初!也不让我们大家都费那么大劲,几个月前还让那么多人骂我了!

但是有一个问题,希望贺老师解决!就是,在DataList中,有两个非常有用的功能在表事件中没有,(1)DataList中有一个双击行的事件;(2)DataList可以单击字段名自动排序当子窗口中可以插入任何表了,要想让DataList真正变成鸡胁,贺老师得想办法窗口中加入的表实现这两个功能!否则,会造成两个都可以用,两个都不完善,那就很被动了!

[此贴子已经被作者于2009-2-13 11:17:47编辑过]


那就给表增加一个双击列头排序的功能


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