ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:22.35KB ,
资源ID:4754542      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4754542.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(vb动态数据表格.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

vb动态数据表格.docx

1、vb动态数据表格竭诚为您提供优质文档/双击可除vb动态数据表格篇一:Vb6用ado对象动态建表Vb6.0用ado对象动态创建数据库和表!作者:chengziii提交日期:20xx-5-2719:40:00 摘要:本文阐述了在Vb程序中利用ado对象动态创建数据库和数据表的方法,这些方法在开发Vb数据库应用程序中很有实用价值,它可以提高数据库程序灵活性。 关键词:数据库、数据表、ado、adox 1:问题的提出 在Visualbasic中,常用的数据访问接口有下列三种:数据库访问对象(dao,dataaccessobject)、远程数据库对象(Rdo,Remotedataobject)和acti

2、vex数据对象(ado,activexdataobject)。数据库访问技术一直在不断进步,而这三种接口的每一种都分别代表了该技术的不同发展阶段。最新的是ado,它是比Rdo和dao更加简单,然而更加灵活的对象模型。正因如此,越来越多的人在用Vb开发数据库软件时使用ado作为数据访问接口。在开发过程中,我们通常的使用的方法是:先使用数据库管理系统(例如:microsoftaccess)或Vb中的可视化数据管理器建立好数据库和数据表结构,然后在程序中通过使用adodc数据库控件或引用ado对象与数据库中的表建立连接,再通过数据库感知控件(例如:文本框、datagrid等)来进行数据库的各种操作。

3、在这种开发过程中,我们有时需要面对这样一个问题:如何让用户在程序运行过程中动态地建立自己所需的数据库和数据表以提高程序的灵活性呢?在程序运行过程中建立自己所需的数据库和数据表,其本质就是用代码(或者说通过编程)来建立数据库和数据表。众所周知,在Foxpro或asp编程中,这是很容易的一件事件。那么在Vb数据库编程中又是怎样来操作的呢?在Vb数据库编程中,如果使用dao作为数据库访问接口技术,则可以用createdatabase结合createtabledef方法来实现,目前已有不少书和杂志都讲到了这种方法,本文就不再讲述了;但你如果使用的是最新的数据库访问接口技术ado,你却发现目前的书和杂志

4、上没有文章讲到如何用代码来建立数据库和数据表的方法,可有时我们非常需要用到这种方法,下面我们就来解决这个问题。 2:ado与adox 我们先来对ado和adox进行简单的认识。在Vb6中,使用ado开发数据库应用程序时,我们要引用对象库microsoftactivexdataobjects2.5library,这个东西的简称就是ado,它是Vb6数据库最核心的对象群,也是Vb数据库开发人员经常所引用的对象库,在Vb6中你可以看到它的各种版本,从2.0版到2.6版都有,很多人对它已经很熟悉,在此我们不再详细介绍。如果要在程序运行过程中创建数据库和表,我们还要引用对象库microsoftadoex

5、t2.1.Forddlsecurity,简称为adox,其库文件名为是:msadox.dll。adox是对ado对象和编程模型的扩展,它将ado扩展为包括创建、修改和删除模式|分类:|访问量:1127对象,如表格和过程。它还包括安全对象,用于维护用户和组,以及授予和撤消对象的权限。adox的对象如下表所示: 对象说明 catalog包含描述数据源模式目录的集合。 column表示表、索引或关键字的列。 group表示在安全数据库内有访问权限的组帐号。 index表示数据库表中的索引。 key表示数据库表中的主关键字、外部关键字或唯一关键字。 procedure表示存储的过程。 table表示数

6、据库表,包括列、索引和关键字。 user表示在安全数据库内具有访问权限的用户帐号。 View表示记录或虚拟表的过滤集。 adox常用方法有:append(包括columns、groups、indexes、keys、procedures、tables、users、Views)、create(创建新的目录)、delete(删除集合中的对象)、“refresh”(更新集合中的对象)等等。有关adox的详细信息,请在/data/ado中参阅microsoft发布的有关adox说明的web页。 3:在原有数据表的基础上产生新的数据表 如果仅仅是在已有的数据表的基础上产生新的数据表,我们只要引用对象库mi

7、crosoftactivexdataobjects2.5library再利用selectinto语句就可以了。例如:有一个名为wage.mdb的数据库,数据库中有一个名为工资表数据表,该数据表的字段有:编号、姓名、基本工资、津贴、应发工资、扣款、实发工资等,这个表中已经有很多的记录。现在我们把其中的实发工资大于2000的记录筛选出来组成一个新表,新表的名称由用户从文本框中输入,新表中我们只要三个字段,它们是:编号、姓名、实发工资。我们用下列程序就可以实现: (事先在窗体中添加一个文本框text1和一个命令按钮command1) dimconnasnewadodb.connection dimr

8、sasnewadodb.Recordset mand privatesubcommand1_click() dimbmasstring dimsqlasstring iftext1.textthen bm=trim(text1.text) sql=select编号,姓名,实发工资into+bm+From工资表where实发工资2000 setcommand.activeconnection=conn mandtext=sql command.execute else msgbox你必须输入一个名字 endif privatesubForm_load() dimstrasstring str=a

9、pp.path ifRight(str,1)then str=str+ endif pstr=provider=microsoft.jet.oledb.3.51; pstr=pstr pstr=pstr不用cat用另外一个名字也可以 dimconnasnewadodb.connection dimrsasnewadodb.Recordset dimpstrasstring定义该变量是为了后面的书写方便 为了更灵活地创建数据库,我们可以在窗体中加入一个通用对话框、一个datagrid控件,三个命令按钮,它们的标题分别是:创建数据库和表、查看、更新。通用对话框的作用是给用户输入数据库文件名和决定数

10、据库的存放位置。创建数据库和表命令按钮对应的代码是: privatesubcommand1_click() dimfmasstringfm变量用来获取用户输入的文件名 commondialog1.Filter=mdb文件(*.mdb)|*.mdb|allFiles(*.*)|*.*| commondialog1.Filterindex=1 commondialog1.initdir=d:jthpaper commondialog1.Flags=6 commondialog1.action=2 ifcommondialog1.Filename=then msgbox你必须输入一个文件名,请重新保

11、存一次! exitsub else fm=commondialog1.Filename endif pstr=provider=microsoft.jet.oledb.4.0;不能把这里的4.0改为3.51 pstr=pstr创建数据库 dimtblasnewtable cat.activeconnection=pstr tbl.name=mytable表的名称 tbl.columns.append编号,adinteger表的第一个字段 tbl.columns.append姓名,adVarwchar,8表的第二个字段 tbl.columns.append住址,adVarwchar,50表的第三

12、个字段 cat.tables.appendtbl建立数据表 conn.openpstr rs.cursorlocation=aduseclient rs.openmytable,conn,adopenkeyset,adlockpessimistic rs.addnew往表中添加新记录 rs.Fields(0).Value=9801 rs.Fields(1).Value=孙悟空 rs.Fields(2).Value=广州市花果山 rs.update endsub 上面程序中有一个需要说明的地方,这就是语句:pstr=provider=microsoft.jet.oledb.4.0;,这个语句表示

13、microsoftjetoledb驱动程序的版本是4.0,这是目前最新的版本,利用它你可以用Vb中的ado对象访问access2000及其以下版本所建立的数据库。你不能把这里的4.0改为3.51,否则程序不能正常运行;在Vb6中,3.51版本的microsoftjetoledb驱动程序对应的是access97数据库。换而言之,用这种方法建立的数据库和表跟用access2000所建立的数据库和表是同一类型的,你只能直接用access2000来打开,虽然你可以用Vb6来访问这种数据库和其中的数据表,但你不能用access97或Vb6中的可视化数据管理器来直接打开。 在程序运行时只要用户单击该命令按

14、钮就可以创建自己所需的数据库。查看命令按钮对应的代码是: privatesubcommand3_click() setdatagrid1.datasource=rs endsub 更新命令按钮对应的代码是: privatesubcommand4_click() rs.updatebatch endsub 我们这个实例只是用来说明问题,在实际应用当中你可以把它进一步改进,例如:你在窗体中再增加一些文本框和组合框,供用户输入或选择数据表的名称、字段的名称、字段的宽度和小数位数。这样,用户就可以自主地决定数据库的所有内容了,程序的灵活性也就大大提高了。 5:结束语 如果你使用的是最新的数据访问接口技

15、术ado(microsoft强烈建议大家使用这种最新技术),你又想在程序运行过程中创建数据库文件和数据表,此时,你应该在Visualbasic6.0中引用对象库microsoftactivexdataobjects2.5library和microsoftadoext2.1.Forddlsecurity,然后使用adox对象的create、append等方法就可以实现。这种方法使用的microsoftjetoledb驱动程序的版本是4.0,因此,使用这种方法建立的数据库文件和数据表可以直接使用access2000打开。笔者在Vb数据库软件开发过程中已多次使用这种方法,该方法在提高程序的灵活性和满

16、足用户的特殊需要方面有很大的作用。篇二:vb动态报表Visualbasic中如何实现动态报表是一个在众多Vb网站论坛上提问频率很高的问题,在实际项目中,作者也遇到这个问题,经过一番深入研究,用一种简单的方法在Visualbasic中实现了动态报表。Visualbasic中制作报表的工具有很多,如crystal报表编辑器、datareport报表窗体、printer对象以及象Vsview等一些第三方控件。但crystal报表编辑器一般只能制作定制报表,printer对象操纵起来非常复杂,第三方控件多数需要购买,费用不非。作者制作动态报表是通过datareport窗体实现的,以下通过一个具体的例子

17、说明是如何实现动态报表的。假设在c盘dongtai目录下存放一个access数据库stock.mdb,其中的股票行情表用来记录股票行情,股票行情表的数据结构如1表所示:表1股票行情表数据结构字段名称idstocknostocknamepriceswingmaxpriceminpricebargain数据类型长整型文本文本双精度型双精度型双精度型双精度型长整型说明序号股票代号股票名称收盘价涨跌最高价最低价成交量如果要设计这样的一个报表,报表输出字段由用户自己决定,用datareport窗体如何设计呢?下面一步一步地说明。1熟悉datareport窗体和数据报表控件datareport窗体是一个和

18、普通窗体相似的窗体,最大的差别是该窗体上只能摆放数据报表控件,这种类型的控件只有六种,他们分别是:Rptlabel,Rpttextbox,Rptimage,Rptshape,Rptline,RptFunction。从名称上基本可以识别他们的用途,Rptlabel用来显示非数据绑定的文本的标签;通常用来制作报表的页标题;Rpttextbox显示数据绑定的文本的内容,即显示数据库的字段的内容;Rptimage显示一个图形,例如一个公司的商标;Rptshape能够画出许多图形,强调信息或增强视觉效果;Rptline能够在报表中画线,分割报表种不同的区域;RptFunction允许在报表标题或报表注脚

19、区域摆放,它包含一个简单的数学统计函数。datareport窗体和数据报表控件如图1所示。图1datareport窗体和数据报表控件为了能够输出所有字段,必须在datareport窗体不同的区域中摆放足够数量的相关报表数据控件,本例最多字段为八个,所以在页标头区域(section2)摆放了八个Rptlabel控件、九条竖分割线和上下两条横线,在细节区域(section1)摆放了八个Rpttextbox控件、九条竖分割线和下面一条横线,如图1所示。同时为了以后的编码方便,对各控件采用如下的命名方式:控件名称为控件类型+区域号+序号,例如,页标头区域(section2)八个Rptlabel控件分别

20、命名为label21、label22、label23label28,细节区域(section1)的八个Rpttextbox控件分别命名为text11、text12、text13text18,各区域的竖分割线采用同样的命名方式,但横分割线以控件类型+区域号来命名,如页标头区域中的上下两条横线分别命名为line2和line_2,在后面的代码里可以看出这种命名方式的好处。datareport窗体中最重要的三种数据控件是Rpttextbox、Rptlabel和RptFunction,必须分别设置它们的属性,Rpttextbox最重要的属性是datafield,该属性指明了绑定记录的字段名称;Rptla

21、bel最重要的属性是caption,该属性指明要显示的文本内容;RptFunction最重要的属性是datafield和functiontype,前者指明要绑定且作统计的记录的字段名称,后者指明统计函数的类型。这三种控件有一共同属性是gangrow,该属性值为true时,当显示的内容超过控件的宽度时可以换行。datareport窗体也有很多属性,如leftmargin、Rightmargin、topmargin、bottommargin、reportwidth、datasource等,其中reportwidth设置报表的纸面宽度(必须减去左右页边距的宽度),reportwidth须与打印机设置

22、的纸面大小相对应,datasource设置datareport窗体的数据源。需要说明的是datareport窗体中的各个区域都是对象,如section1.section2等,他们也有很多的属性,其中重点提出keeptogther属性,当keeptogether为true时,如果某条记录处在一页的最下面,但又不能够完全的打印出来时,可强制这条记录换到下一页输出,从而保证数据的完整性。以上只是简单的说明了datareport窗体中涉及到的一些重要属性,其它未加说明的属性可在相关书籍和msdn中查阅。2主界面设计作者设计的主界面如图2所示。其中候选字段的listbox(lst_candidate)用

23、来显示所有原始字段,选中字段的listbox(lst_selected)用来记录选中的以报表形式输出的字段,两个listbox之间的带有标题的按钮用来添加和移去字段,用一个文本框(txt_caption)设置报表的标题,点击输出报表(cmd_report)按钮即可输出报表。图2动态报表主界面3字段宽度的控制字段宽度的控制在报表设计中很重要,这里是通过lst_selected的itemdata的属性实现的,仅用一个子程序可完成对lst_selected的itemdata的属性赋值,代码如下。*字段宽度控制子程序privatesubfieldwidth(lstaslistbox)dimiasint

24、egerconstwordwidthasinteger=201五号字的宽度为201缇Fori=0tolst.listcount-1selectcaselst.list(i)case序号lst.itemdata(i)=wordwidth*3case股票代号lst.itemdata(i)=wordwidth*5case股票名称lst.itemdata(i)=wordwidth*6case收盘价lst.itemdata(i)=wordwidth*5case涨跌lst.itemdata(i)=wordwidth*4case最高价lst.itemdata(i)=wordwidth*5case最低价lst

25、.itemdata(i)=wordwidth*5case成交量lst.itemdata(i)=wordwidth*4endselectnextiendsub*4设置datareport窗体属性,控制输出格式设置datareport窗体的属性,控制输出格式也可用一子过程完成,需要说明的是为datareport和数据控件设置属性时,在设计编码过程中,Visualbasic多数不出现正常情况下的智能提示,不必大惊小怪,完整代码如下。*设置报表窗体各种参数,控制输出格式privatesubsetdatareport(lstaslistbox,dtrasdatareport,scaptionasstri

26、ng)dimleftposaslongleftpos为存放控件left属性的变量dimreportwidthaslongreportwidth为存放datareport总宽度的变量dimiasinteger求总宽度Fori=0tolst.listcount-1reportwidth=reportwidth+lst.itemdata(i)next初始化withdtr设置数据源,页边距,标题,横向分割线,section1、2区第一条竖分割线.leftmargin=1440.Rightmargin=1440.topmargin=1440.bottommargin=144.reportwidth=pr

27、inter.width-2880-20set.datasource=rsrs为adodb数据源.sections(section4).controls.item(label41).caption=scaption.sections(section4).controls.item(label41).width=reportwidth.sections(section4).controls.item(label42).width=reportwidth.sections(section2).controls.item(line_2).width=reportwidth.sections(secti

28、on2).controls.item(line2).width=reportwidth.sections(section1).controls.item(line1).width=reportwidth.sections(section2).controls.item(line20).left=0.sections(section1).controls.item(line10).left=0endwith为section1,2区设置数据leftpos=0Fori=0tolst.listcount-1dtr.sections(section2).controls.item(label1特殊字段的格式特殊处理iflst.list(i)=收盘价orlst.list(i)=最低价orlst.list(i)=最高价thendtr.sections(section1).controls.item(text1对不用的text控件必须设置其datafield属性,如lst.list(0),否则出错,但一定让其不可见其他不用的label,line控件同样均不可见i=lst.listcountwhilei10为section1区域的非text控件的控件总数i=i+1dtr.sections(section1).controls.item(text1*5报表输出

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1