CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  数据库(包含打印,安装,报表)

请问:多步操作产生错误,请检查每步的状态值!是什么错误?内有代码

楼主zhangzs8896(小二)2005-02-22 15:36:00 在 VB / 数据库(包含打印,安装,报表) 提问

代码如下:  
   
  Function   Change(ByVal   material   As   String)  
      Dim   MyCon   As   New   ADODB.Connection  
      Dim   MyRs   As   New   ADODB.Recordset  
      Dim   ConStr   As   String  
      ConStr   =   "Provider=SQLOLEDB;Persist   Security   Info=False;User   ID=sa;PassWord=zhangzs;DataBase=Mytest"  
      On   Error   GoTo   Error:  
      MyCon.ConnectionString   =   ConStr  
      MyCon.CommandTimeout   =   0  
      MyCon.Open  
      MyRs.CursorLocation   =   adUseClient  
      MyRs.ActiveConnection   =   MyCon  
      Dim   MySqlStr   As   String  
      MySqlStr   =   "select   mat   from   matdz   where   material='"   +   material   +   "'"  
      MyRs.Open   MySqlStr  
    '   MyRs.MoveFirst         '保证只有一条记录  
      Change   =   Trim(MyRs("mat").Value)   --获取对照表中的Mat字段值  
      Exit   Function  
  Error:  
      MsgBox   Err.Description,   vbOKOnly,   "error"  
  End   Function  
   
   
  Sub   MatTotal()  
      Dim   MyCon   As   New   ADODB.Connection  
      Dim   MyRs   As   New   ADODB.Recordset  
      Dim   ConStr   As   String  
      ConStr   =   "Provider=SQLOLEDB;Persist   Security   Info=False;User   ID=sa;PassWord=zhangzs;DataBase=mytest"  
      On   Error   GoTo   Error:  
      MyCon.ConnectionString   =   ConStr  
      MyCon.CommandTimeout   =   0  
      MyCon.Open  
      MyRs.CursorLocation   =   adUseClient  
      MyRs.ActiveConnection   =   MyCon  
   
      MyRs.LockType   =   adLockBatchOptimistic  
      MyRs.CursorType   =   adOpenDynamic  
   
      Dim   MySqlStr   As   String  
      MySqlStr   =   "select   *   from   mat"  
      MyRs.Open   MySqlStr  
       
      MyRs.MoveFirst  
      Do   While   Not   MyRs.EOF  
        MyRs("Material")   =   Change(trim(MyRs("Material").Value))     ----这个地方报的错误  
        '错误:多步操作产生错误,请检查每步的状态值!但是如果mat字段为<10位就正确。  
        '这个字段是   varchar(50)啊  
        MyRs.MoveNext  
      Loop  
   
  请问各位,谁遇到过这个问题,应该怎么解决?  
      Set   DataGrid1.DataSource   =   MyRs  
      DataGrid1.Refresh  
      DataGrid1.Columns(2).Width   =   700  
      Exit   Sub  
  Error:  
      MsgBox   Err.Description,   vbOKOnly,   "error"  
  End   Sub  
  问题点数:20、回复次数:15Top

1 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2005-02-22 15:54:50 得分 12

你用一个数据连接变量不行么?怎么子程序中又创建一个ConnectionTop

2 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2005-02-22 15:56:12 得分 0

而且子程序中的CONNECTION在连接后没有及时关闭就又想打开。这肯定会报错。Top

3 楼zhangzs8896(小二)回复于 2005-02-22 15:58:35 得分 0

我现在只能在sql上测试,其实第一段代码是sql里的一个对照表,而第二段应该属于oracle上的,我机器连不上oracle,暂时用也用sqlserver上同结构的表代替的。  
   
  Top

4 楼zhangzs8896(小二)回复于 2005-02-22 16:03:35 得分 0

MyRs.Close  
      MyCon.Close  
  我关闭也是如此,因为是,只要我的mat字段的值小于等于10位,就不会有错误,而只要大于10位就报上面的错误。这是怎么回事啊。我这个字段的值,应该是6--18位的都有。Top

5 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2005-02-22 16:16:01 得分 0

 
  你那报错的地方,程序进入CHANG子程序了么?是在进入前就报错了?Top

6 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2005-02-22 16:20:03 得分 0

是循环了几遍以后报的错,是吧?Top

7 楼lxjlz()回复于 2005-02-22 16:26:06 得分 8

你把MyRs("Material")的長度加長就沒有問題了,是因為trim(MyRs("Material").Value的長度太長了,field存不下.Top

8 楼zhangzs8896(小二)回复于 2005-02-22 16:27:05 得分 0

进入了子程序,是遇到mat字段值长度大于10时报的错误  
  请楼上大侠帮忙看看哪的事,该怎么写?Top

9 楼zhangzs8896(小二)回复于 2005-02-22 16:31:32 得分 0

这个怎么加长呢?  
  MyRs("material").DefinedSize   =   20   ?好象不行Top

10 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2005-02-22 16:37:44 得分 0

改varchar(50)为大些Top

11 楼zhangzs8896(小二)回复于 2005-02-22 16:45:44 得分 0

我改成了500了,还是那样。  
  因为我最长的也过不了20的,真是奇怪了。  
    lxjlz(事在人為)   所说,是不是MyRs中的各字段都有一个默认的长度呢?  
  那么这个长度应该怎么去更改呢?Top

12 楼lxjlz()回复于 2005-02-22 16:45:57 得分 0

在查詢分析器里執行下面的腳本.  
  use   Mytest  
  go  
  alter   table   mat   alter   column   material   varchar(200)  
  go  
  Top

13 楼lxjlz()回复于 2005-02-22 16:52:52 得分 0

把這句Function   Change(ByVal   material   As   String)改成  
  Public   Function   Change(ByVal   material   As   String)   as   string  
  試試Top

14 楼zhangzs8896(小二)回复于 2005-02-22 16:53:58 得分 0

晕,是有一个地方设置成varchar(10)了,只注意到一个。  
   
  那么为什么我对recordset或者Connection关闭与否都不影响呢?  
  Top

15 楼haohaohappy(50岁以前拿命换钱,50岁以后拿钱换命)回复于 2005-02-22 17:01:50 得分 0

On   Error   GoTo   Error:Top

相关问题

  • 错误 : "多步操作产生错误,请检查每一步的状态值"
  • 多步操作产生错误。请检查每一步的状态值。
  • “多步 OLE DB 操作产生错误。请检查每个 OLE DB 状态值。没有工作被完成。”——??
  • 多步 OLE DB 操作产生错误。请检查每个 OLE DB 状态值。没有工作被完成。
  • “多步操作产生错误,请检查每一步的状态值”是如何引起的???
  • 如何侦错? ---- 实时错误 '-2147217887(80040e21)多步OLE DB操作产生错误。请检查每个OLE DB状态值,没有工作被完成。
  • 多步OLE DB 操作产生错误。请检查每个OLE DB的状态值。没有工作完成 实时错误‘-2147217887’
  • 错误提示:多步 OLE DB操作产生错误.请检查每个ole db状态值.没有工作被完成???如何解决???
  • “多步操作产生错误。请检查每一步的状态值”,请问这是什么错误啊???谢谢!!!
  • 请问此问题如何解决:“多步OLE DB操作产生错误。请检查每个OLE DB状态值。没有工作被完成。"

关键词

  • myrs
  • mycon
  • mysqlstr
  • constr
  • mat
  • material
  • dim
  • error
  • new adodb

得分解答快速导航

  • 帖主:zhangzs8896
  • haohaohappy
  • lxjlz

相关链接

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

广告也精彩

反馈

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