CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

被猪拿把杷站在前面挡住两星期---两字:郁闷~~

楼主lyfer(叼着白沙写程序)2006-03-05 10:06:07 在 .NET技术 / VB.NET 提问

Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click  
                  On   Error   Resume   Next  
                  Dim   conn   As   New   ADODB.Connection  
                  Dim   rs   As   New   ADODB.Recordset  
                  Dim   rs1   As   New   ADODB.Recordset  
                  Dim   sql   As   String  
                  Dim   tmp(100)   As   Long  
                  Dim   i   As   Integer  
                  Dim   t   As   Long  
                  ListBox1.Items().Clear()  
                  If   RadioButton1.Checked   =   True   Then  
                          sql   =   "select   name   from   type   where   type=1"  
                  ElseIf   RadioButton2.Checked   =   True   Then  
                          sql   =   "select   name   from   type   where   type=2"  
                  ElseIf   RadioButton3.Checked   =   True   Then  
                          sql   =   "select   name   from   type"  
                  End   If  
                  conn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=data\\data.mdb")  
                  rs.Open(sql,   conn,   1,   1)  
                  Do   While   Not   rs.EOF  
                          i   =   i   +   1  
                          If   RadioButton4.Checked   =   True   Then  
                                  sql   =   "select   sum(number)   as   total   from   data   where   name='"   &   rs.Fields(0).Value   &   "'   and     time=#   "   +   DateTimePicker1.Value   +   "   #"  
                          ElseIf   RadioButton5.Checked   =   True   Then  
                                  sql   =   "select   sum(number)   as   total   from   data   where   name='"   &   rs.Fields(0).Value   &   "'   and   time>=#   "   +   DateTimePicker1.Value   +   "#   and   time<=#   "   +   DateTimePicker2.Value   +   "#"  
                          End   If  
                          rs1.Open(sql,   conn,   1,   1)  
                          ListBox1.Items().Add(rs.Fields(0).Value   &   "-----总数为:"   &   rs1.Fields(0).Value)  
                          If   rs.Fields(0).Type   =   ADODB.DataTypeEnum.adEmpty   =   False   Then  
                                  tmp(i)   =   rs1.Fields(0).Value  
                          End   If  
                          rs1.Close()  
                          rs.MoveNext()  
                  Loop  
                  i   =   0  
                  For   i   =   0   To   UBound(tmp)  
                          t   +=   tmp(i)  
                  Next   i  
                  ListBox1.Items().Add("所有的总数为:"   &   t)  
                  rs.Close()  
                  rs   =   Nothing  
                  rs1   =   Nothing  
                  conn.Close()  
                  conn   =   Nothing  
          End   Sub  
   
  问题出在这一句:  
  If   rs.Fields(0).Type   =   ADODB.DataTypeEnum.adEmpty   =   False   Then  
                                  tmp(i)   =   rs1.Fields(0).Value  
                          End   If  
   
  为什么当查询结果为空时就出错!望各位帮帮忙!(出错提示rs1.Fields(0).Value=dbnull) 问题点数:100、回复次数:4Top

1 楼zhouxiaotan(夜雨悠扬)回复于 2006-03-05 11:54:16 得分 40

因为如果没有数据的时候rs.Fields的总个数是0  
  使用rs.Fields(0)数组超出下标,所以会出错。  
  建议使用之前先要判断数据个数。  
  另外如果number字段中如果有NULL值的话,也可能出错,建议要在SQL文中进行NULL值判断Top

2 楼mint(mint)回复于 2006-03-05 11:57:37 得分 40

对rs.fileds先做判断:  
    if   rs.filds.count<>0   then  
  ''取值处理  
   
    end   if  
    如果要对元素的值取的话,就要再作以下判断:  
    if   not   isdbnull(rs.filds(0))   then    
  /....  
  end   if    
   
   
   
  ====CSDN   小助手   V2.5   2005年11月05日发布====  
  CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件  
  界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx  
  下载:http://szlawbook.com/csdnv2  
   
  Top

3 楼why2002plus()回复于 2006-03-05 12:47:36 得分 20

rs.Fields(0)是第一条记录,不是空记录.记录索引从0开始啊.空了就没这个rs.Fields(0),引用当然要出错.Top

4 楼lyfer(叼着白沙写程序)回复于 2006-03-05 13:14:20 得分 0

谢谢楼上的三位兄弟,问题已在你们的指点下搞定!谢啦Top

相关问题

  • 关于TC的问题(最迟两星期给分)
  • 跳槽了。新老板既然要求我先用VB。要求在两星期搞定VB希望大家给点建议。我以前是用VC的
  • 跳槽了。新老板既然要求我先有VB。要求在两星期搞定VB希望大家给点建议
  • **小弟我学Delphi已整两星期了,现编了第一个程序,是一个Flash播放器,希望各位前辈、学长看看!谢谢!!**
  • ~~呵呵!!辛苦两星期终于可以放300分了,再此,谢谢各位同仁,特别是danny,天蓝,基恩!!我回答的问题都是蒙的,望不要见笑!!呵呵~~
  • 层被select,iframe挡住
  • TabStrip把WebBrowser挡住了
  • 层怎样才可以挡住表单?
  • 请教:右键菜单被挡住
  • 层被框架挡住问题

关键词

  • csdn
  • sql
  • radiobutton
  • rs
  • elseif
  • dim
  • checked
  • fields
  • conn
  • true then sql

得分解答快速导航

  • 帖主:lyfer
  • zhouxiaotan
  • mint
  • why2002plus

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo