CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

请教一个简单问题

楼主wayuf(北极星)2003-12-03 22:43:42 在 VB / 数据库(包含打印,安装,报表) 提问

有段程序代码在sql   server数据库时可以编译通过,但是换成access数据库时  
  就会出错,说是对象变量或是with变量未设置。其中提示mrc=nothing,MsgText提示为  
  查询错误,至少有一个参数没有被指定值。是不是sql语句的问题?  
  还请各位高手为小弟指点迷津,不胜感激!!!代码如下:  
          txtSQL   =   "select   distinct   datepart(yy,wxdate)   from   repair"  
          Set   mrc   =   ExecuteSQL(txtSQL,   MsgText)  
         
            If   mrc.EOF   Then  
      '       If   Not   mrc.EOF   Then  
                  With   mrc  
                          Do   While   Not   .EOF  
                                  cboYear(0).AddItem   .Fields(0)  
                                  cboYear(1).AddItem   .Fields(0)  
                                  .MoveNext  
                          Loop  
                  End   With  
                   
                  For   i   =   0   To   1  
                          cboYear(i).ListIndex   =   0  
                  Next   i  
                   
                  For   i   =   0   To   1  
                          For   j   =   1   To   12  
                                  cboMonth(i).AddItem   j  
                          Next   j  
                  Next   i  
                  For   i   =   0   To   1  
                          cboMonth(i).Text   =   Month(Now())  
                  Next   i  
          Else  
                  cmdOk.Enabled   =   False  
          End   If 问题点数:30、回复次数:9Top

1 楼eports(飘零风)回复于 2003-12-03 22:53:52 得分 5

If   mrc.EOF   Then  
      '       If   Not   mrc.EOF   Then  
                  With   mrc  
                          Do   While   Not   .EOF  
   
  这几句让我糊涂。为什么要注释掉第二句?第一句和第四句不是完全相反的判断吗?这样当然会导致   mrc=Nothing了。我的理解,程序应该是这样的:  
   
      '       If   mrc.EOF   Then         '<--把这句注释掉  
            If   Not   mrc.EOF   Then   '<--应该执行这句  
                  With   mrc  
                          Do   While   Not   .EOF  
                                  cboYear(0).AddItem   .Fields(0)  
                                  cboYear(1).AddItem   .Fields(0)  
                                  .MoveNext  
                          Loop  
                  End   With  
      ……Top

2 楼wayuf(北极星)回复于 2003-12-03 23:07:29 得分 0

那两条语句,那是小弟为了解决问题所做的尝试。If   mrc.EOF   Then  
      '       If   Not   mrc.EOF   Then     。两条语句功能一样,我想是否改一下就好用,但是  
  还是出现同样的错误。另外,把     If   Not   mrc.EOF   Then   改为If   mrc.EOF   =   False   Then  
  还是出现相同的错误。   小弟实在很着急,还请高手不吝赐教,如果分不够的话,可以加  
  Top

3 楼wayuf(北极星)回复于 2003-12-03 23:12:01 得分 0

这个问题是不是由于使用不同的数据库所致,为什么在sql   server数据库下编译通过,而在  
  access数据库下出现错误呢?Top

4 楼xayzmb(行者)回复于 2003-12-04 08:40:38 得分 10

我觉得你应该查查生成的SQL语句  
  把它在ACCESS中执行一下  
  看能不能通过?Top

5 楼SoHo_Andy(冰)回复于 2003-12-04 09:00:17 得分 5

单独执行这一句不通过  
  最可能Access不支持   datepart   语句  
   
  select   distinct   datepart(yy,wxdate)   from   repairTop

6 楼wayuf(北极星)回复于 2003-12-04 09:27:49 得分 0

多谢楼上指点  
  select   distinct   datepart("yyyy"   ,wxdate)     from   repair    
  在access查询中,可以生成查询结果    
  但是当在vb程序中付值给    
  txtsql="select   distinct   datepart("yyyy"   ,wxdate)     from   repair"    
  进行查询时总是出错,我想是不是在引号中又加引号的原因导致    
  还请高手指点迷津   应该怎么修改Top

7 楼jpinglee(想去海边)回复于 2003-12-04 21:05:29 得分 5

txtsql="select   distinct   date(wxdate)     from   repair"Top

8 楼chao778899(220330)回复于 2003-12-04 21:13:24 得分 5

select   distinct   datepart("yyyy",'"+wxdate+"')   from   repairTop

9 楼wayuf(北极星)回复于 2003-12-04 21:42:50 得分 0

经过努力,问题终于解决了  
  给分拉!!!Top

相关问题

  • 简单!
  • 简单
  • 简单~~~
  • 简单
  • 简单!
  • 简单
  • 简单
  • 简单……
  • 简单问题不简单!
  • 简单的简单啊!

关键词

  • mrc
  • cboyear
  • additem
  • eof then
  • next

得分解答快速导航

  • 帖主:wayuf
  • eports
  • xayzmb
  • SoHo_Andy
  • jpinglee
  • chao778899

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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