Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共55 条记录, 每页显示 10 条, 页签: [1][2] [3] [4][5][6]
[浏览完整版]

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

21楼
mr725 发表于:2009/2/12 15:50:00
楼主啊:代码问题和检查列名称的工作你自己去做啊,我只是帮着运行你的程序看看有什么事情发生(如提示错误什么的),哈哈~
22楼
blackzhu 发表于:2009/2/12 18:12:00
以下是引用狐狸爸爸在2009-2-12 15:44:00的发言:
问题在这里的:

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

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

 

我看见的变量是:Vars.Add("colname",GetType(String))是这样的,这个列名称是怎么赋予的?代码怎么写,望狐爸指教一下.

23楼
blackzhu 发表于:2009/2/12 18:13:00
比如说我要赋予的列名称为"IO".
24楼
czy 发表于:2009/2/12 20:43:00
以下是引用blackzhu在2009-2-12 18:13:00的发言:
比如说我要赋予的列名称为"IO".


Vars.Add("colname",GetType(String),"IO")

25楼
czy 发表于:2009/2/12 20:50:00
以下是引用mr725在2009-2-11 15:33:00的发言:

czy版主,你好,ComboBox1的Click事件改成你给的代码后,选完类别等 在将光标落在【请选择项目】空框中不会提示错误了。而且,得到运算结果的速度提高到只需两三秒钟(也还显慢!)

但是
【请选择项目】有内容时 再将光标落在【请选择项目】框中又会提示错误?!~

图片点击可在新窗口打开查看此主题相关图片如下:【请选择项目】.jpg

[此贴子已经被作者于2009-2-11 16:31:51编辑过]


6楼的代码我测试正常,也不应该出错的。

我解决的是当ComboBox1为空值时返回不操作,速度方面没有涉及,我想最好的解决办法是不用每次都增加临时表,这样速度就会大幅提升。

26楼
blackzhu 发表于:2009/2/13 7:48:00
以下是引用czy在2009-2-12 20:43:00的发言:


Vars.Add("colname",GetType(String),"IO")

   是这样做的呀,昨日我就是按照这一个弄得但是还是如图所说的出错,所以我才发上来的.CZY版主你帮我测试一下文本框有没有这个问题出来?狐爸你有没有测试,是不是变量的问题?谢谢!因为发上来的示例复选款是人家做的,文本框的是我自己做的.

27楼
狐狸爸爸 发表于:2009/2/13 8:48:00
其实很简单,在关键的代码之前,加上:
Messagebox.Show(Vars("ColName"))

检查一下全局便量ColName是否有值,如果不掌握这些基本的技巧,写代码一旦出错,就很被动。
28楼
狐狸爸爸 发表于: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编辑过]
29楼
blackzhu 发表于:2009/2/13 9:30:00

原因找出来了,代码中变量删掉就正常了.

30楼
mr725 发表于:2009/2/13 10:14:00
以下是引用blackzhu在2009-2-13 9:30:00的发言:

原因找出来了,了代码中变量删掉就正常.

能再发一个‘代码中变量删掉就正常’的样例来测试一下吗,我还是没有搞懂,呵呵·~

共55 条记录, 每页显示 10 条, 页签: [1][2] [3] [4][5][6]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .02734 s, 2 queries.