站内搜索  

哈尔滨百姓网首页 | 操作系统 | 软件应用 | 平面设计 | 程序开发 | 硬件维护 | 网络安全
 您的位置: 哈尔滨百姓网 > 电脑网络 > 程序开发 > 阅读文章:Access中使用Create Procedure创建存储过程
Access中使用Create Procedure创建存储过程
2009-4-17 9:31:08 哈尔滨百姓网 来源:百度空间 浏览 次 【 】【打印】【关闭

在Access自身的帮助中看到了Create Procedure语句,测试了老半天,终于发现了诀窍:必须使用OleDb连接才能使用Create Procedure语句。ODBC连接不支持该语句,提示Create Table语法错误。  

  创建了存储过程后,使用Office Access工具打开数据库,在“对象 - 查询”中能够看到你创建的存储过程。  
创建存储过程的语法: 

Create Procedure YourProc  
(  
         @param1 varchar(254),  
         @param2 int  
)  
As  
(  
         select * from Table1 where ID>@param2 and username=@param1  
)  

查询数据时只需要使用:  
         Rs.Open "YourProc admin,1", Conn  

myproc.vbs 

[复制此代码]CODE: 
Set DB = GetObject("script:http://www.zope.org/Members/Rimifon/DbHelper.sct")  
DB.ConnStr = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=MyProc.mdb"  
DB.NonQuery "create table Sheet1(id counter,name varchar(254),score int)"  
DB.NonQuery "Create Procedure MyProc(@name varchar(254), @score int) as (insert into Sheet1(name,score) values(@name, @score))"  
DB.NonQuery "Create Procedure Result as (select * from Sheet1)"  
MsgBox "创建了表和存储过程"  
DB.NonQuery "Execute MyProc Rimifon,90"  
DB.NonQuery "Exec MyProc FengYun,93"  
Set Ds = DB.DataSet("Result")  
MsgBox "执行了存储过程"  
DB.NonQuery "drop Procedure MyProc"  
DB.NonQuery "drop Procedure Result"  
DB.NonQuery "drop table Sheet1"  
MsgBox "删除了表和存储过程"  
Set DB = Nothing  
Dim Result  
Result="所有记录:" & Chr(13)  
For Each Item In Ds  
     If IsObject(Item) Then  
         Result = Result & Item.ID & Chr(9) &_  
             Item.Name & Chr(9) & Chr(9) &_  
             Item.Score & Chr(13)  
     End If  
Next  
Set Ds = Nothing  
MsgBox Result風雲数据库操作组件  

http://www.zope.org/Members/Rimifon/DbHelper.sct的内容CODE:  
<?xml version="1.0" encoding="utf-8"?>  
<package>  
     <?component error="false" debug="false"?>  
     <comment>  
         <![CDATA[             風雲数据库操作组件  
             Author: Rimifon  
             LastDate: 10:50 2006-08-19]]>  
     </comment>  
     <scriptlet id="DataHelper">  
         <registration classid="{12345678-aabb-ccdd-eeff-012345678901}" progid="Rimifon.DataHelper" description="風雲数据库操作组件" version="1.2" remotable="true">  
             <script language="vbscript">  
                 <![CDATA[Function Register()  
     MsgBox "欢迎使用Rimifon.DataHelper组件,你已经成功注册了本组件。", 0, "组件注册提示"  
End Function  
Function Unregister()  
     MsgBox "感谢使用Rimifon.DataHelper组件,你已经成功卸载了本组件。", 0, "组件卸载提示"  
End Function]]>  
             </script>  
         </registration>  
         <public>  
             <property name="Name" dispid="0" description="组件名称,只读"><get internalName="ProductName" /></property>  
             <property name="ConnStr" description="数据库连接字符串设置" />  
             <method name="CreateAccess" description="创建空白Access数据库,成功后返回连接字符串">  
                 <parameter name="DbPath" description="新数据库的位置,如果不指定则使用ConnStr中设置的数据库位置" />  
             </method>  
             <method name="RecordSet" description="返回一个数据库记录集对象">  
                 <parameter name="ConnectionString" description="设置新记录集的连接字符串(为空则使用公共连接字符串)" />  
             </method>  
             <method name="ParseSql" description="解析Sql字符串,vb和vbs中不推荐使用">  
                 <parameter name="Sql" description="代Sql语句" />  
                 <parameter name="Rule" description="代Sql语句中替代单引号的字符串,默认为Chr(12)" />  
             </method>  
             <method name="NonQuery" description="执行一个不返回结果集的查询">  
                 <parameter name="Sql" description="查询语句" />  
                 <parameter name="Rec" description="记录集对象,为空则生成临时记录集对象" />  
             </method>  
             <method name="Scalar" description="执行一个返回单行单字段的数据">  
                 <parameter name="Sql" description="查询语句" />  
                 <parameter name="Rec" description="记录集对象,为空则生成临时记录集对象" />  
             </method>  
             <method name="DataSet" description="执行查询并返回指定页码的数据集">  
                 <parameter name="Sql" description="查询语句" />  
                 <parameter name="Size" description="设置每页显示的条数,为0则全部显示" />  
                 <parameter name="Page" description="设值页码(第几页)" />  
                 <parameter name="Rec" description="记录集对象,为空则生成临时记录集对象" />  
             </method>  
             <method name="CompactAccess" description="压缩指定Access数据库,压缩失败后返回失败原因">  
                 <parameter name="DbPath" description="被压缩的数据库,不指定则使用ConnStr中设置的数据库位置" />  
             </method>  
         </public>  
         <script language="javascript">  
             <![CDATA[var Nothing;  
var ConnStr = "Driver=Microsoft Excel Driver (*.xls);ReadOnly=0;DBQ=Rimifon.xls";  
function ProductName()  
{  
     return "風雲数据库操作组件";  
}  
function CreateAccess(DbPath)  
{  
     DbPath = DbPath?("Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + DbPath):ConnStr;  
     var Catalog = new ActiveXObject("AdoX.Catalog");  
     try  
     {  
         Catalog.Create(DbPath);  
         Catalog.ActiveConnection.Close();  
     }  
     catch(err)  
     {  
         DbPath = new Boolean;  
         DbPath.message = err.message;  
     }  
     Catalog = Nothing;  
     CollectGarbage();  
     return DbPath;  
}  
function RecordSet(ConnectionString)  
{  
     var Rec = new ActiveXObject("Adodb.RecordSet");  
     Rec.ActiveConnection = ConnectionString?ConnectionString:ConnStr;  
     Rec.CursorType = 1;  
     Rec.CursorLocation = 2;  
     Rec.LockType = 3;  
     return Rec;  
}  
function ParseSql(Sql, Rule)  
{  
     if(!Rule) Rule="\f";  
     if(Sql.indexOf(Rule)<0) return Sql;  
     return Sql.replace(/'/g,"''").replace(new RegExp(Rule,"g"),"'");  
}  
function NonQuery(Sql, Rec)  
{  
     if(!Rec) Rec = new RecordSet;  
     Rec.Source = Sql;  
     Rec.Open();  
     if(!arguments[1])  
     {  
         Dispose(Rec);  
     }  
     else  
     {  
         if(Rec.State) Rec.Close();  
     }  
}  
function Scalar(Sql, Rec)  
{  
     if(!Rec) Rec = new RecordSet;  
     Rec.Source = Sql;  
     Rec.Open();  
     var Result = Rec.EOF?null:Rec.Fields.Item(0).Value;  
     if(Rec.State) Rec.Close();  
     if(!arguments[1]) Dispose(Rec);  
     return Result;  
}  
function DataSet(Sql, Size, Page, Rec)  
{  
     var dataArr = new Array;  
     if(Size instanceof ActiveXObject)  
     {  
         Rec = arguments[3] = Size;  
         Size = 0;  
     }  
     if(!Rec) Rec = new RecordSet;  
     Rec.Source = Sql;  
     Rec.Open();  
     Size = parseInt(Size);  
     if(isNaN(Size) || !Size) Size = Rec.RecordCount;  
     if(Size) Rec.PageSize = Size;  
     if(!Page || isNaN(Page) || Page<0) Page = 1;  
     if(Page > Rec.PageCount) Page = Rec.PageCount;  
     dataArr.AbsolutePage =   Page;  
     if(Page > 0) Rec.AbsolutePage = Page;  
     dataArr.RecordCount = Rec.RecordCount;  
     dataArr.PageSize = Size;  
     dataArr.PageCount = Rec.PageCount;  
     var C = 0;  
     while(!Rec.EOF && C++ < Size)  
     {  
         var Fields = new Object;  
         for(var x=0; x<Rec.Fields.Count; x++)  
         {  
             Fields[x] = Fields[Rec.Fields(x).Name.replace(/\s/g,"_")] = Rec.Fields.Item(x).Value;  
         }  
         dataArr.push(Fields);  
         Rec.MoveNext();  
     }  
     Rec.Close();  
     if(!arguments[3]) Dispose(Rec);  
     return dataArr;  
}  
function CompactAccess(DbPath)  
{  
     if(!DbPath)  
     {  
         DbPath = ConnStr.match(/(dbq|data source)=([^;]*)/i);  
         if(!DbPath) return "未指定数据库位置。";  
         DbPath = DbPath[2];  
     }  
     DbPath = DbPath.replace(/\//g,"\\");  
     var DbName = DbPath.slice(DbPath.lastIndexOf("\\")+1);  
     var BackDb = DbName + Math.random() + ".MyDocs";  
     DbPath = DbPath.substr(0, DbPath.lastIndexOf("\\"));  
     var DBQ = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + DbPath;  
     try  
     {  
         var Jro = new ActiveXObject("Jro.JetEngine");  
         var Fso = new ActiveXObject("Scripting.FileSystemObject");  
         Jro.CompactDatabase(DBQ+DbName, DBQ+BackDb);  
         var File = Fso.GetFile(DbPath+DbName);  
         File.Delete();  
         File = Fso.GetFile(DbPath+BackDb);  
         File.Name = DbName;  
         Jro   = Fso = Nothing;  
         CollectGarbage();  
     }  
     catch(err)  
     {  
         return err.message;  
     }  
}  
function Dispose(Rec)  
{  
         Rec.ActiveConnection.Close();  
         Rec = Nothing;  
         CollectGarbage();  
}]]>  
         </script>  
     </scriptlet>  
</package>

转自:http://hi.baidu.com/totaobao/blog/item/9549c1176c791e09c83d6d72.html
[责任编辑:佚名]
 相关文章
·CSS布局方法的十八般技巧和兼容方案 (2009-11-13 17:14:48)
·利用Google给自己的网站加上投票功能 (2009-10-13 12:32:39)
·您试图在此 Web 服务器上访问 (2009-8-13 14:20:12)
·Asp伪静态的实现及URL重写-用ISAPI_Rewri (2009-8-6 15:07:08)
·巧用ASP脚本命令重启服务器 (2009-8-6 15:05:39)
·Dreamweaver CS3网页制作之CSS布局 (2009-7-1 16:07:45)
·网页设计经验和技巧总结 (2009-7-1 16:03:12)
·网页优化必须做的26件事情 (2009-7-1 16:00:36)
·把数据库结构显示出来的源代码 (2009-4-17 9:55:16)
·插入记录后马上得到自动编号值(Access库) (2009-4-17 9:54:33)
·全面解决--如何获得刚插入数据库的记录的 (2009-4-17 9:53:29)
·ASP计算两个时间之差的函数 (2009-4-17 9:52:11)
·一个通用数据库显示程序,能调任意库,任意 (2009-4-17 9:50:33)
·技巧:ASP开发中存储过程应用全接触 (2009-4-17 9:48:31)
·网站简体繁体转换代码 (2009-4-17 9:44:15)
·ASP导出Excel数据的四种方法 (2009-4-17 9:42:14)
·利用网页监听,实现内容中的图片由滚轮控 (2009-4-17 9:37:21)
·html操作本地数据库 (2009-4-17 9:33:18)
·asp实现同网站不同目录绑定不同域名 (2009-4-17 9:27:57)
 热门文章 哈尔滨电脑
·安全防护策略-打造堡垒主机
·SQL Server到底需要使用哪些端口?
·把重要的Word 2003文档放到菜单中
·您试图在此 Web 服务器上访问的 
·Photoshop制作火焰的神龙
·Win2003架设多用户隔离Ftp服务器
·XP系统服务恢复批处理
·还有2天发布 Windows7必备77条小知识
·情侣玩儿法:用虚拟硬盘打造坚不可摧的影子系统
·用U盘当钥匙 轻松绕过WinXP的登陆密码
·Photoshop打造漂亮的心形挂链壁纸
 推荐文章 哈尔滨电脑
·精简节约!小公司办公打印省钱全攻略
·CSS布局方法的十八般技巧和兼容方案
·三种方法 教你解决输入法不显示的问题
·当红情侣QQ表情:茉莉和龙井
·Win 7出现休眠Bug 微软提供解决方案
·将Powerpoint文档转换为Word文档
·非常实用来学习连续供墨系统入门知识
·怕吃亏?怕假的?鉴别真假耗材的小窍门
·情侣玩儿法:用虚拟硬盘打造坚不可摧的影子系统
·开始—运行(cmd)命令大全
·您试图在此 Web 服务器上访问的 
 最新文章 哈尔滨电脑
·Web服务器如何避免CC攻击
·SQL Server到底需要使用哪些端口?
·XP系统服务恢复批处理
·局域网遭ARP攻击网络掉线批处理
·CISCO 2811 路由器配置命令全集
·避免“悲剧” 打印机使用技巧全面攻略
·保障远程桌面Web连接安全四项注意
·教你六招处理服务器数据意外丢失
·挑选相纸有学问 教你如何辨别相纸优劣
·精简节约!小公司办公打印省钱全攻略
·CSS布局方法的十八般技巧和兼容方案