VB实现动态调用含DateTime类型存储过程_第1页
VB实现动态调用含DateTime类型存储过程_第2页
VB实现动态调用含DateTime类型存储过程_第3页
VB实现动态调用含DateTime类型存储过程_第4页
VB实现动态调用含DateTime类型存储过程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、VB实现动态调用含DateTime类型存储过程前言VB对数据库的编程有多种方法,如:ODBC API编程、RDO(远程数据对象)、DAO(数据访问对象)、ADO(ActiveX 数据对象)方法编程实现方便、快捷,但灵活性稍差。由于存储过程具有实现数据封装、隐藏以及代码的预编译、减少网络负载、维护方便等优点,所以被许多RDMBS和编程工具做支持。VB中的各类数据对象均都提供对存储过程的支持。所以要灵活掌握调用存储过程这一技术是十分必要。现在将VB中实现动态调用含DateTime类型的存储过程介绍给读者,让您很快掌握和运用这个方法,解决你身边的问题。 一、 简述SQL Server 2000 日期

2、时间类型(含dateTime类型字段)该类型是由有效的日期或时间组成;年-月-日 小时:分:秒.千分之秒。其格式:请见图示1在现阶段开发设计ERP系统项目中,尤其在创建数据库表结构时,均要考虑到DateTime字段的应用,它能记载信息发生时间段的信息,能充分反映该区间数据变化;除特殊情况下(如:网吧、游戏吧等需记录小时、分、秒)之外,一般要考虑到日期范围即:年、月、日。二、 我们以ADO为例来说明其实现步骤现在动态调用含有DateTime字段的存储过程,以帮助理解和掌握调用存储过方法:1、使用Northwind的MS SQL中的例子库(此例子SQL Server2000自带)Create pr

3、ocedure Employee Sales by Country Beginning_Date DateTime, Ending_Date DateTime ASSELECT Employees.Country, Employees.LastName, Employees.FirstName,Orders.ShippedDate, Orders.OrderID, Order Subtotals.Subtotal AS SaleAmountFROM Employees INNER JOIN (Orders INNER JOIN Order Subtotals ON Orders.OrderID

4、 = Order Subtotals.OrderID) ON Employees.EmployeeID = Orders.EmployeeIDWHERE Orders.ShippedDate Between Beginning_Date And Ending_DateGO2、在VB中生成一个新工程,工程添加一个窗体,三个Command(1,2,3)按钮,一个ListView控件,两个日期DTpicker控件,两个标签Label控件,一个文本TextBox控件。请见图示23、编程的设计思路基于SQL Server数据库表结构定义DateTime类型的特点,我们采取截取有效日期部分,实现对这个含有

5、DateTime字段的存储过程动态调用,具体步骤如下:.定义:Dim Dt10,DT20 as Variant .采集动态日期赋值于以上两个变量中DT10 = Format(Trim(DT1.Value), yyyy-mm-dd)DT20 = Format(Trim(DT2.Value), yyyy-mm-dd) 具备以上条件,可快捷、方便地获取动态日期区间内数据表的结果集。下面就严格执行调用存储过程语法格式就可以了。请详见VB的代码。4、VB的程序代码实现动态调用的三种方法. 窗体变量的设置Option ExplicitDim CNN1 As ADODB.Connection 连接Dim R

6、S As ADODB.Recordset 结果集Dim StrCnn As String 连接字符串Dim DT10, DT20 As Variant 日期变量Dim i As Integer 字段的计数. 基本格式存储过程的调用Private Sub Command1_Click() 以基本方式调用(1)存储过程On Error Resume NextDim Cmd As ADODB.Command 命令Dim Par As ADODB.Parameter 参数声明并初始化一个ADO 的Connection对象DT10 = Format(Trim(DT1.Value), yyyy-mm-dd

7、) 起始日期赋值DT20 = Format(Trim(DT2.Value), yyyy-mm-dd) 截止日期赋值Set Cmd = New ADODB.Command 指定cmd的当前连接CNN1Cmd.ActiveConnection = CNN1 指定该cmd 的当前活动连接设置要执行的是存储过程Employee Sales by Country Cmd.CommandType = adCmdStoredProc 表明cmd 为存储过程Cmd.CommandText = Employee Sales by Country 调用存储过程名称Set Par = Cmd.CreateParam

8、eter(Beginning_Date, adDBDate, adParamInput, , DT10)Cmd.Parameters.Append ParSet Par= Cmd.CreateParameter(Ending_Date, adDBDate, adParamInput, , DT20)Cmd.Parameters.Append ParSet RS = Cmd.Execute()在Listview控件中显示RstByQuery记录集有效行If DT10 0 Then 确认字段的列数 i = RS.Fields.CountListrec RS, LVRS.CloseEnd IfEnd

9、 IfEnd Sub. 简捷格式存储过程的调用Private Sub Command2_Click() 以简捷方式调用(2)存储过程On Error Resume NextDT10 = Format(Trim(DT1.Value), yyyy-mm-dd)DT20 = Format(Trim(DT2.Value), yyyy-mm-dd)Set RS = CNN1.Execute(Employee Sales by Country & DT10 & , & DT20 & )If DT10 0 Theni = RS.Fields.CountListrec RS, LVRS.CloseEnd If

10、End IfEnd Sub. 调用数据集的格式执行存储过程Private Sub Command3_Click() 以执行结果集方式调用(3)存储过程On Error Resume NextDim Sql1 As StringDT10 = Format(Trim(DT1.Value), yyyy-mm-dd)DT20 = Format(Trim(DT2.Value), yyyy-mm-dd)Set RS = New Recordset对字段进行中文提示的处理Sql1 = SELECT Employees.Country as 国别, Employees.LastName as 姓名, Empl

11、oyees.FirstName as 曾用名,Orders.ShippedDate as 日期 , Orders.OrderID as 序号, Order Subtotals.Subtotal AS 销售合计 FROM Employees INNER JOIN (Orders INNER JOIN Order Subtotals ON Orders.OrderID = Order Subtotals.OrderID) ON Employees.EmployeeID = Orders.EmployeeID WHERE Orders.ShippedDate Between & DT10 & AND

12、 & DT20 & If Len(Sql1) 0 ThenRS.Open Sql1, CNN1, adOpenStatic, adLockOptimistic在Listview控件中显示RstByQuery记录集有效行If RS.Fields.Count 0 Theni = RS.Fields.CountListrec RS, LVRS.CloseEnd IfEnd IfEnd Sub. 将结果集装入到ListView控件中Sub Listrec(ByRef RS As Recordset, ByRef LV As ListView)Dim head As ColumnHeaderDim It

13、em As ListItemDim K, P, Q As IntegerK = 0初始化listview的某些属性LV.ToolTipText = LV.View = lvwReportLV.GridLines = TrueLV.LabelEdit = lvwManualLV.ListItems.ClearLV.ColumnHeaders.ClearFor i = 0 To RS.Fields.Count - 1由于item.text不接受null ,故预先于空串作连接Set head = LV.ColumnHeaders.Addhead.Text = RS.Fields(i).NameNex

14、tWhile Not RS.EOFSet Item = LV.ListItems.AddItem.Text = & RS.Fields(0).ValueFor i = 1 To RS.Fields.Count - 1Item.SubItems(i) = & RS.Fields(i).ValueNextK = K + 1RS.MoveNextWendText1.Text = Text1.Text = CStr(K)LV.ToolTipText = 有效记录条数: + CStr(K)End Sub.工程引用和连接SQL Server数据库* 本文使用ADO,需要引用”Microsoft ActiveX data Objects 2.6 Library”对象。* 连接SQL Server 2000数据库Private Sub Form_Load() 在窗体的LOAD事件中加入如下代码:Set CNN1 = New ADODB.Connection使用Connection对象的StrCnn属性,直接指定连接的SQL Server数据库StrCnn=Provider=S

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论