一个有关ADO的简单代码,请大家帮我修改一下,谢谢!

RedShoes 2003-08-21 08:14:34

Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String

Private Sub form_Load()
Dim connstr As String
connstr = "provider=microsoft.jet.oledb.4.0;data source=D:\mis\data.mdb"
conn.Open connstr
rs.CursorLocation = adUseClient
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd"
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


当我运行后点击cmdfind按钮时,系统提示
----------------------
实时错误'3750':
对象打开时操作不被允许。
----------------------

应当是最后两行有问题,请教如何进行修改呢?
...全文
80 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhenglc 2003-08-21
  • 打赏
  • 举报
回复
with rs
if .state = adstateopen then .close
.open sql, conn, ....
end with

如上做查询试试用rs.filter
lisong770818 2003-08-21
  • 打赏
  • 举报
回复
在每次打开记录集时,加一句 if rs.state then rs.close
射天狼 2003-08-21
  • 打赏
  • 举报
回复
Option Explicit
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String

Private Sub form_Load()
Dim connstr As String
connstr = "provider=microsoft.jet.oledb.4.0;data source=D:\mis\data.mdb"
conn.Open connstr
rs.CursorLocation = adUseClient
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd"
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs


Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Close
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
道素 2003-08-21
  • 打赏
  • 举报
回复
不要set rs=nothing 要close
可以这样
Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
‘-------------增加一句
if rs.state<>0 then rs.close
’-----------------
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
dreamreality 2003-08-21
  • 打赏
  • 举报
回复
Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
'改动过的地方
set rs=new ADODB.recordset
'改动过的地方
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
lisong770818 2003-08-21
  • 打赏
  • 举报
回复
同上。
stonegoldaustin 2003-08-21
  • 打赏
  • 举报
回复
LockType
  Recordset对象Open方法的LockType参数表示要采用的Lock类型,如果忽略这个参数,那么系统会以Recordset对象的LockType属性为预设值。LockType参数包含adLockReadOnly、adLockPrssimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:

常数 常数值 说明
adLockReadOnly 1 缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法

adLockPrssimistic 2 当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。

adLockOptimistic 3 当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。

adLockBatchOptimistic 4 当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、
   删、改的操作。

因为你在Form_Load里已经OPEN了一次(但没有关闭,且用的参数会锁住其他用户的操作),所以,你第二次OPEN的时候就出错了.

请将adLockPessimistic参数改为adLockOptimistic,并且养成好的习惯,及时关闭(释放)无用的资源.
x8bits 2003-08-21
  • 打赏
  • 举报
回复
你在Form_Load已经打开过rs,在cmdfind_Click中没关闭又再打开rs.你应该在再次打开之前调用rs.Close一次
饮水需思源 2003-08-21
  • 打赏
  • 举报
回复
在每个rs.open .....这句之前加一句:if rs.state=adstateopen then rs.close
LCAAA 2003-08-21
  • 打赏
  • 举报
回复
Private Sub cmdfind_Click()
If txtname.text="" then
Msgbox "请输入所要查询的名字。",16,"提示"
exit sub
else
set rs=nothing
sql = "select 工号,姓名,性别,身份证号码,学历,籍贯,单位编号,职别编号,入厂日期 from rszd where 姓名='" & txtname.text & "'"
end if
rs.Open sql, conn, adOpenKeyset, adLockPessimistic
Set DataGrid1.DataSource = rs
RedShoes 2003-08-21
  • 打赏
  • 举报
回复

想不到竟然有这么多好心的朋友帮我解决了这个问题,我感动的真不知道说些什么。

我是一个初学者,对于VB有很多的地方都是一知半解,在这种情况下很需要大家的指点,有些问题我在书上翻半天也找不到答案,在这儿经过大家的稍稍点拨就有一种豁然开朗的感觉。

因为我技术差,所以我也回答不了别人的问题,我也赚不到可用分,现在我的可用分是越来越少了,所以这个问题只能给30分,真是不对不起大家了,我只能说句谢谢你们!
《VC++.NET精彩百例》配套代码

[涉及平台] VC++.NET
[作者] void
[文件大小] 2969KB
[更新日期] 2005-10-30

一、资源说明

第1章 界面编程
实例1 "欢迎"界面
实例2 动态字幕效果
实例3 透明窗体
实例4 静态切分窗口
实例5 滚动视图
实例6 字形窗口
实例7 多边形窗口
实例8 HTML浏览器
实例9 窗口的动画效果
实例10 实现动画图标
实例11 动态切分窗口
实例12 橡皮区矩形
实例13 多个定时器
实例14 椭圆窗体


第2章 图像和多媒体编程

实例 15 BMP文件浏览器
实例 16 图像的镜像处理
实例 17 图像的分割处理
实例 18 使用画笔
实例 19 使用画刷
实例 20 显示空心字
实例 21 显示渐进字体
实例 22 显示艺术字体
实例 23 马赛克效果
实例 24 MiDi播放器
实例 25 CD播放器
实例 26 纹理场景效果
实例 27 Bezier线框曲面
实例 28 输出旋转文本

第3章 对话框与控件编程
实例 29 树形控件
实例 30 列表控件
实例 31 时间控件
实例 32 彩色按钮
实例 33 组合框控件
实例 34 单选按钮和复选框
实例 35 工具栏编程
实例 36 状态栏编程
实例 37 对话框显示图片
实例 38 模式对话框
实例 39 非模式对话框
实例 40 位图按钮
实例 41 对话栏编程

第4章 文件与系统编程
实例 42 鼠标绘图
实例 43 键盘输入
实例 44 获取文件属性
实例 45 访问修改注册表
实例 46 设定计算机名称
实例 47 列举驱动器
实例 48 关闭操作系统
实例 49 查找文件
实例 50 获取磁盘空间
实例 51 读写文件
实例 52 系统进程检测
实例 53 获取系统信息
实例 54 获取文件夹路径
实例 55 设定系统时间

第5章 线程操作与COM组件编程
实例 56 创建线程
实例 57 线程间的通信
实例 58 使用自定义消息
实例 59 线程间的优先级
实例 60 线程间的同步
实例 61 重用C++对象
实例 62 创建永久对象
实例 63 MFC建立COM
实例 64 测试COM组件


第6章 网络和数据库编程
实例 65 聊天室服务器
实例 66 HTTP应用程序
实例 67 FTP应用程序
实例 68 HTTP服务器
实例 69 发送电子邮件
实例 70 接收电子邮件
实例 71 ATL Server Web
实例 72 DOA获取信息
实例 73 DAO数据库编程
实例 74 ADO访问数据库

第7章 OPENGL编程
实例 75 绘制对比矩形
实例 76 绘制直线
实例 77 绘制圆和椭圆
实例 78 绘制三角形
实例 79 缩放变换
实例 80 旋转变换
实例 81 平移变换
实例 82 绘制点
实例 83 OpenGL编程
实例 84 实现简单动画
实例 85 视口投影变换
实例 86 键盘控制图形

第8章 OLE和GDI+编程
实例 87 OLE容器
实例 88 保存OLE信息
实例 89 设置跟踪矩形
实例 90 显示多个OLE项
实例 91 ActiveX服务器
实例 92 插值模式
实例 93 图像区域平铺
实例 94 文字填充
实例 95 图形容器
实例 96 线帽组合
实例 97 半透明线条
实例 98 颜色再变换表
实例 99 旋转和扭曲图像
实例 100 显示垂直文本

二、使用说明
本书所附光盘的内容包含了开发实例的所有程序源码,所有程序源码都是在Visual C++.NET上编译通过的。要运行本光盘上的实例,用户需要先安装Visual C++.NET编译环境,将光盘上的实例拷贝到本机硬盘上,并去掉其只读属性。程序拷贝到本机硬盘后,经编译即可直接运行。(注意:各文件的文件名与原书中的名称保持一致)

  关于读者近期反映的《Visual C++.net精彩编程百例》附带源码光盘问题,经核查,我们发现光盘中的确存在着源代码命名与原书不匹配的现象。发生这种现象的原因主要是由于工作人员失误,光盘在刻制过程采用了较旧的8×3文件名格式,导致某些文件/文件夹的名称信息丢失,使读者不能够直接使用。我们已经以最快的速度对此问题进行了初步更正。对于此次发布的新版源代码,您可以根据原书章节直接找到对应的源代码目录,然后根据原书中的文件名,将源代码中相应的文件名予以纠正即可正常使用。

  给读者的阅读使用造成了诸多不便,在此表示深深的歉意!希望能得到您的体谅并一如既往支持我们的工作,谢谢
Report Machine 2.6
===================

这是一个报表控件包,For Borland Delphi Versions 3,4,5,6,7.100% 源码.

最后更新日期:2002.10.11

目录
-----
说明
特点
最后更新
历史
安装
Demo程序
版权说明
注册

1.说明
----
Report Machine是一个报表控件包, Report Machine is reporting
tool component. It consists of report engine,designer and preview. Its capabilities
comparable with in QuickReport,ReportBuilder. It written on 100% Object Pascal
and can be installed in Delphi 2/3/4/5/6 and C++Builder 1/3/4/5/6.

2.特点
----
复杂的报表?在report machine面前,还会有什么复杂的报表存在吗?
不,不会有的,因为这是一个功能强大,完全自动化、完全自由设计的报表控件。
对于一般的主从表,单表,你甚至只需要点动鼠标次数=你的数据字段个数就可以
完成一个完全自定义的,并且支持用户进行格式修改加工,重新设计格式的报表!
想想fast report 吧,report machine会fast report会的,还会它不会的!
这是一个完全中文化报表控件,支持delphi3到delphi6,BCB3到BCB6。
它的最大优点就是:强大与自由!

report machine目前主要能做的:
一、支持屏幕打印,控制方法多样,可以打印全部rxlib控件
全部InfoPower控件,TDBGrid,TStringGrid,TImage,TEdit等,TDBGridEh,f1book,
TDecisionGrid等等众多控件。
二、支持最终用户设计、修改报表,只需连接相关的数据源,指出数据的位
置(设置报表样式),无论是主从表,子报表,套表,都可迅速生成。开发
一个报表只需几分钟的时间。
三、报表样式可以保存为rmf格式,下次可通过读入使用(配合SQL脚本就可以生成
报表)。并可以把带数据的报表保存为rmp格式,在任何机器上都可以浏览、打印,
而不需要数据库。
四、生成后的报表支持修改,包括字体的设置,边框的设置,修改内容等。
五、报表编辑器内自带ado,bde,ibx,Diamond dao,dbisam等数据访问控件,可以
通过这些控件开发独立的报表制作工具。其使用方法和delphi中的控件是一样的。
六、完全、自由自定义页面、边距、字体,标题和页眉页脚,并可以在自认合适的
地方插入函数来实现当前日期,页合计,总合计等功能,合计字段可以放在页头,分
组头,并支持条件合计,对分组合计,分页合计,总计等只需简单地设置属性即可。
七、完全支持d3--d6,c3--c6。
八、报表中可以在自认合适的事件(on beforeprint,on afterprint等)中加入程
序脚本,以控制、或实现更复杂的打印效果。
九、更新迅速,可根据使用人员与用户的意见,不断的加入新的功能。
十、首家支持缩放打印功能,可以根据打印时选择的纸张自动缩放报表。
十一、多种格式转换,可以把做出的报表转换为html,xml,bmp,jpeg等等格式。
十二、自动对超长记录折行,超长的内容也会自动折行。
十三、最新增加GridView,类似于电子表格,非常非常适合制作复杂报表

最新更新和问题解答访问论坛:www.pcjingning.com

3.最后更新
--------
v.2.2(Build 2002/01/28)
- 完善缩放打印功能
- TRMCrossView去掉一些BUG

v.2.2(Build 2002/01/11)
- 增加缩放打印功能,
- TRMFormReport打印StringGrid,DBGrid等Grid时,对超宽Grid增加分页功能,
- MemoView增加属性CalcValue,可以访问MemoView中的内容,
- CalcMemoView增加TotalCalc属性,现在CalcMemoView科轻松实现页小计,页累计,
页总计,并且可以放在页头,栏目头,分组头,数据头。

v.2.2(Build 2001/12/10)
- 修正一些BUG,
- 增加了导出到BMP,GIF,JPEG文件功能,
- Designer增加最近打开文件功能,
- 添加字段的时候可以选择不要在字段名前附加表名。

v.2.1(Build 2001/11/29)
- 修正了几个BUG.

v.2.1(Build 2001/11/22)
- 修正了几个BUG.
- 增加多语言功能.

v.2.1(Build 2001/11/15)
- 修正了几个BUG.

v.2.1(Build 2001/11/12)
- TRMBandView增加属性LinesPerPage,可以设置每页打印记录数,
- TRMBandView增加属性PrintColFirst,当Column>1时,可以选择先列后行还是
先行后列打印,
- 修正没有安装打印机时的错误,
- 打印预览功能有些改变和增强.

v.2.1(Build 2001/11/07)
- EHLib可以打印Footer了,
- TRMFormReport增加分组功能,
- TRMCalcMemoView可以放在GroupHeader上了,
- TRMCalcMemoView增加Filter属性,之计算满足条件的纪录,
- 其他一些细节上的改变.

v.2.1(Build 2001/11/01)
- TRMFormReport中增加了数据对齐方式,数据显示格式.

v.2.1(Build 2001/10/30)
- 修正预览时,页面设置的错误.

v.2.1(Build 2001/10/25)
- TRMFormReport可以打印Rx,InfowPower全系列控件,
- TRMFormReport可以打印EHLib,
- 可以打印多个PageFooter,方便制作页小计.

v.2.1(Build 2001/10/18)
- 大大增强了TRMFormReport功能,可以与ScreenReport,
Dev ExpressPrinting System媲美;
- TRMFormReport增加了表格的自动缩放功能.可根据纸张的大小自动进行水平或
垂直方向的表格缩放.也就是说程序员不必再为迁就打印宽度和高度而反复调
整屏幕格式和字体大小,而且对于屏幕上带横向滚动杆的任意超宽表格都可以
缩放到指定大小的纸上.再也不用考虑打印超出纸张的问题了,也不会为迁就
打印而影响屏幕格式的美观而感到遗憾!使得表格打印更直接更方便,最大程
度地减少您的工作量;
- TRMFormReport增加一个事件OnPrintObject,在这个事件内程序员可自行编制
TRMFormReport不直接支持打印的任意控件;
- 注意:TRMDBGridReport,TRMwwDBGridReport等已不再维护,因为TRMFormReport
具有以上几个GridReport的所有功能,并且更强.

v.2.1(Build 2001/10/08)
- 改掉了几个BUG;
- 增加TRMAngledLabel,可以打印倾斜角度的文字;
- TRMGridReport,TRMFormReport等做了一些改进.

v.2.1(Build 2001/09/25)
- 改掉了几个BUG;
- 背景图片增加Top,Left属性;
- TRMPictureView增加支持GIF格式图片.

v.2.1(Build 2001/09/21)
- 增加TRMStringGridReport,直接打印TStringGrid,TDrawGrid等继承自TCustomGrid的Grid;
- 增加TRMDecisionGridReport,直接打印TDecisitonGrid;
- 增加背景图片功能,可以实现套打.

v.2.1(Build 2001/09/17)
- 修正TRMOLEView只能缩放显示的错误,现在可以按实际大小,居中等显示.
- 增加TRXWWRichView,可以打印InfowPowwer中的TwwDBRichView.

v.2.1(Build 2001/09/14)
- 修正TRMRxRichView插入字段的错误.

v2.1
- 改掉一些BUG
- 增加属性PrintFrame,PrintVisible,可以实现套打;
- 报表增加选项(布缩放边框宽度),可以防止表格线变粗;
- Printer单元作了大量修改,Windows2000下支持自定义纸张.

v1.1
- 对DataManger作了大量修改,现支持各种数据存取控件(直接支持BDE,ADO,IBX,Diamond);
- 增加Query Designer;
- 增加Report Explorer.

v1.0 Preview 4
- Bug fixes;
- Added RX DateEdit control to the Dialog controls;
- Added possibility to excluding particular dataset or entire datamodule from
all db-related lists (see TfrDataDictionary.DisabledDatasets and code
of main demo);
- Added OnBeforePrint property to the report page (see Object Inspector) and
OnActivate event to the dialog form;
- Now you can tune export options in the export components (TfrTextExport and
etc);
- TRMFormReport做了修改,可以增加TRMFormReport不支持的控件;
- 其它功能增强或修改.

v1.0 Preview 3.
- Bug fixes;
- Added Data dictionary;
- Some changes in interface;
- 增加Auto Append Blank
- TGridReport(TwwGridReport)改进,支持颜色,对齐方式.下一版本将支持分组,合计功能.
- 下一版本将增加一个组件TFormReport,直接打印Form,类似于Screen Report.

v1.0 Preview 2.
- Fixed old bugs, added new;
- 一些性能改善;
- 对备注内容处理更完善;
- Added mouse wheel support in designer and preview (D4 and above);
- Object Inspector now looks like Delphi OI;
- Added expression builder;
- More options for "Text" object: line and char spacing, top and left gaps,
"Suppress repeated values" option; (可是设置行距,字距)
- Now you can turn off variable processing in the "Text" and "RichText"
objects. See "Text only" option of these objects;
- Added TRMReport.OnObjectClick event. This event fires when user clicks on
any object when previewing report;
- Added new Child band;
- Improved export filters (frames export in TXT, tables in RTF, pictures
in HTML); added more export options;
- Added paper bins support;
- Added component for printing table;
- Added "Columns" property for data-bands. See last report in the demo;
- Code changed: TfrReport.OnEnterRect now called OnBeforePrint;
- Added TRMDesigner.OnLoadReport, OnSaveReport and CloseQuery properties.

4.历史记录
--------
2001.08.30
Report Machine 2.1

2000.05.10
Report Machine 1.1

2000.03.17
Report Machine 1.0正式版

2000.02.21
Report Machine 1.0 Preview 3.

2000.02.12
Report Machine 1.0 Preview 2.

2000.01.25
Report Machine 1.0 Preview 1. Report Machine的第一版.

5.安装
-----
1.如果没有安装RxLib 2.60及以上版本,打开RM.INC文件,
将"{$DEFINE RX}"改为"\\{$DEFINE RX}"

2.如果没有安装InfoPower及以上版本,打开RM.INC文件,
将"{$DEFINE InfoPower}"改为"\\{$DEFINE InfoPower}"

3.Delphi 6.X
从Delphi IDE中卸载以前的Report Machine版本。
打开菜单"File\Open..."打开DclRMachine6.DPK,选择"Install"

4.Delphi 5.X
从Delphi IDE中卸载以前的Report Machine版本。
打开菜单"File\Open..."打开DclRMachine5.DPK,选择"Install"

5.Delphi 4.X
从Delphi IDE中卸载以前的Report Machine版本。
打开所有的DFM文件,选择保存。(因为我是在Delphi 5.0中完成的,DFM文件
与4.X有些不兼容)

打开菜单"File\Open..."打开DclRMachine4.DPK,选择"Install"

6.Delphi 4.X
从Delphi IDE中卸载以前的Report Machine版本。
打开所有的DFM文件,选择保存。(因为我是在Delphi 5.0中完成的,DFM文件
与3.X有些不兼容)

打开菜单"File\Open..."打开DclRMachine3.DPK,选择"Install"

6.Demo程序
---------
Report Machine包含一些例子,这是学习使用Report Machine的最快途径。

http://rmachine.8u8.com/download/demos.rar
需要用BDE Administrator建立一个Database Alias:
名称: RMachineDemo
Path:

7.付费
------------------
Report Machine是共享控件,如果你做了东西,赚到了money,并且认为Report Machine还不错,赞助我,
以便作者有动力开发出更好的产品,如果只是拿来玩玩,不需注册.

参考价格:(这只是参考价格,多少你看着办)
个人:70元人民币
公司:290元人民币

网上付费:http://rmachine.y365.com/html/register.htm
汇款地址:天津市蓟县供电局计算站 王海丰 301900

如果你在使用中有什么问题或建议,或发现BUG,与作者联系,谢谢!!!

Report Machine WWW:
http://rmachine.yeah.net
http://reportmachine.delphibbs.com

作者:
wanghaifeng_1@163.net

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧