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

兄弟们呀,帮帮我吧!(原代码,SQL SERVER)

楼主citymeteor(流星)2001-03-09 16:34:00 在 VB / 基础类 提问

'''兄弟们呀,帮帮我吧!  
  '''  
  '''在服务器上动行时提示value   的field   方法失败。  
  '''  
  '''  
  Option   Explicit  
  Dim   Conn   As   New   ADODB.Connection             'SQL   SERVER     的连接  
  Dim   RsTabList   As   New   ADODB.Recordset     '要改动的表名列表  
   
  Dim   RsDeptOldNew   As   New   ADODB.Recordset     '新旧部门对照表  
  Dim   RsOldTab   As   New   ADODB.Recordset             '要被改动的旧表  
   
  'Dim   CmUpdate   As   New   ADODB.Command     '调用更改存贮过程  
   
  Dim   strTabName   As   String     '要发生变动的表名  
  Dim   strFieldName   As   String     '表中要改变的字段名  
  Dim   strOldDeptCode   As   String     '旧的部门编号  
  Dim   strNewDeptCode   As   String     '新的部门编号  
   
  Dim   strSQL   As   String  
  ---------------------------------------------------------------  
  Private   Sub   Command1_Click()  
           
          With   Conn       '打开连接  
                  .Provider   =   "SQLOLEDB"  
                  .CursorLocation   =   adUseServer  
                  .Properties("Data   Source")   =   "love"  
                  .Properties("Initial   Catalog")   =   "Test"  
                  .Properties("User   Id")   =   "sa"  
                  .Properties("Password")   =   ""  
                  .Properties("prompt")   =   adPromptNever  
                  .Open  
                  DoEvents  
          End   With  
           
  '         With   CmUpdate  
  '                 .ActiveConnection   =   Conn  
  '  
  '         End   With  
          With   RsTabList     '打开要改动的表名列表  
                  .ActiveConnection   =   Conn  
                  .Source   =   "select   *   from   bsjTab"  
                  .Open  
          End   With  
           
          With   StepMain  
                  'RsTabList.MoveLast  
                  'RsTabList.MoveFirst  
                  .Value   =   0  
                  .Max   =   19   'RsTabList.RecordCount  
                  .Min   =   0  
          End   With  
          Do   Until   RsTabList.EOF       '循环开始  
                   
                  strTabName   =   Trim(RsTabList!tabName)       '取表名  
                  strFieldName   =   Trim(RsTabList!myField)       '取字段名  
                  Label1.Caption   =   "正在更改“"   &   strTabName   &   "”表……"  
                  strSQL   =   "select   *   from   "   &   strTabName  
                   
                  With   RsOldTab  
                          .ActiveConnection   =   Conn  
                          .CursorLocation   =   adUseServer  
                          .Source   =   strSQL  
                          .Open         '打开要被改动的旧表  
                  End   With  
                  If   (Not   RsOldTab.EOF)   And   (Not   RsOldTab.BOF)   Then  
                          With   Step  
                                  'RsOldTab.MoveLast  
                                  'RsOldTab.MoveFirst  
                                  .Value   =   0  
                                  .Max   =   1000   'RsOldTab.RecordCount  
                                  .Min   =   0  
                          End   With  
                  End   If  
                  Do   Until   RsOldTab.EOF         '循环开始  
                          '取得旧部门编号  
                          strOldDeptCode   =   Trim(RsOldTab.Fields(strFieldName).Value)  
                          '取得新部门编号  
                          strNewDeptCode   =   Trim(GetNewDeptCode(strOldDeptCode))  
                          '更改部门编号  
                          RsOldTab.Fields(strFieldName).Value   =   strNewDeptCode  
                          '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  
                                            '提示value   的field   方法失败  
   
   
                           
                          Stop  
                          'strSQL   =   "update   "   &   strTabName   &   "   set   "   &   strFieldName   &   "='"   &   strNewDeptCode   &   "'   where   "   &   strFieldName   &   "   =   "   &   strOldDeptCode  
                          'Conn.Execute   strSQL  
                          RsOldTab.Update  
                           
                          RsOldTab.MoveNext  
                          Step.Value   =   Step.Value   +   1  
                          DoEvents  
                  Loop                                           '循环结束  
                  RsOldTab.Close                               '关闭被打开的旧表  
                  RsTabList.MoveNext  
                  StepMain.Value   =   StepMain.Value   +   1  
                  DoEvents  
          Loop                                           '循环结束  
          RsTabList.Close  
          Conn.Close  
  End   Sub  
  ------------------------------------------------------------------  
   
  Function   GetNewDeptCode(ByVal   strDeptCode)   As   String  
          '根据旧部门编号取得新部门编号  
          strSQL   =   "select   *   from   bsjDept   where   oldCode='"   &   strDeptCode   &   "'"  
          RsDeptOldNew.Open   strSQL,   Conn  
          GetNewDeptCode   =   RsDeptOldNew!newCode  
          RsDeptOldNew.Close  
  End   Function  
  -----------------------------------------------------------------  
  Private   Sub   Form_Unload(Cancel   As   Integer)  
          Set   RsTabList   =   Nothing  
          Set   RsDeptOldNew   =   Nothing  
          Set   RsOldTab   =   Nothing  
          Set   Conn   =   Nothing  
  End   Sub  
  问题点数:50、回复次数:8Top

1 楼cxchina(cxchina)回复于 2001-03-09 17:01:00 得分 25

recordset打開模式不對﹐  
  出現這樣大範圍的修改﹐只是說明數据庫  
  最初設計就有問題﹗  
  需要這模麻煩嗎﹖  
  一條語句﹕  
  tablename   為     數据表名稱  
  update   tableName   set   (myField=(select   newCode   from   bsjDept   where    
  oldCode=tableName.myField))Top

2 楼citymeteor(流星)回复于 2001-03-10 07:51:00 得分 0

要用什么模式打开才行呀?  
  客户要求把以前的部门编号完全更改成新的编号,真麻烦,  
  所有的表都与部门表有关联。Top

3 楼citymeteor(流星)回复于 2001-03-10 07:53:00 得分 0

如果改成SQL语句  
  'strSQL   =   "update   "   &   strTabName   &   "   set   "   &   strFieldName   &   "='"   &   strNewDeptCode   &   "'   where   "   &   strFieldName   &   "   =   "   &   strOldDeptCode  
   
  这条语句过不去,提示超时。Top

4 楼Random(随便)回复于 2001-03-10 12:03:00 得分 5

可能是各个表之间关联(即表之间存在主外键关系)的原因,修改后可能会导致数据完整性错误,  
  因此修改被拒绝  
  Top

5 楼citymeteor(流星)回复于 2001-03-10 12:57:00 得分 0

表之间没有关系.Top

6 楼Random(随便)回复于 2001-03-10 13:58:00 得分 15

你的recordset   打开方式不对,用了默认的方式,默认是只读的,应该如下方式打开  
   
  .open   ,adOpenKeyset,adLockOptimistic  
   
   
  Top

7 楼Random(随便)回复于 2001-03-10 13:58:00 得分 5

你的recordset   打开方式不对,用了默认的方式,默认是只读的,应该如下方式打开  
   
  .open   ,,adOpenKeyset,adLockOptimistic  
   
   
  Top

8 楼citymeteor(流星)回复于 2001-03-10 19:01:00 得分 0

我用UPDATA语句也改不了,是怎么回事呀?Top

相关问题

  • 求sql server连接代码
  • 连接SQL SERVER 2000的代码错误
  • sql server 2000的错误代码
  • 怎样让SQL server 执行SQL server外的代码。
  • 直连SQL SERVER2000怎么写代码?SQLCA.DBMS= "MSS microsoft sql server 2000"
  • 求新闻文章系统的源代码,asp.net(C#) sql server,带源代码
  • 跪求.net (C#代码)学习代码 最好sql server 数据库 优秀代码 马上接贴
  • sql server里面job的代码放在哪里???
  • 怎样创建SQL Server DSN?请给出代码。谢谢
  • 谁有vb+sql server开发的管理类软件源代码?

关键词

  • 语句
  • sql
  • 表
  • strfieldname
  • 打开
  • recordset
  • dim
  • 部门
  • 方式
  • 编号

得分解答快速导航

  • 帖主:citymeteor
  • cxchina
  • Random
  • Random
  • Random

相关链接

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

广告也精彩

反馈

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