您好,欢迎访问三七文档
01.txt《VB6.0中通过MSChart控件调用数据库》VB6.0中的MSChart控件是一个功能强大的高级图表工具,拥有丰富的图表绘制功能,可显示二维和三维的棒图、区域图、线形图、饼图等多种常用图表。近日我为了在双击图表的某个区域时将与该区域相对应的数据库的内容在DataGrid控件上显示出来,遇到了许多困难,最后用一个自定义的变量SelectSeries解决了问题,具体方法如下:设数据库名称为“学生信息”,有一Access表“学生成绩”,其内容为一个班学生的考试成绩,包括学号、姓名、成绩3个字段,成绩字段格式是字符型,值为“优”、“良”、“中”、“差”中的一个。窗体Form1包括一个MSChart控件McScore,类型为二维饼图,用于显示每种成绩的学生数;一个ADO控件AdScore用于连接数据库;一个DataGrid控件DgScore用于以表格形式显示数据库内容。工作过程为:双击饼图的某个区域,则DgScore显示相应成绩的学生名单。代码如下:OptionExplicitDimSelectedSeriesasInteger′自定义变量DimRs()asString′提取记录集用的字符串数组PrivateSubForm_Load()′设定DataGrid控件的数据源DgScore.DataSource=″AdScore″′设定ADO控件的连接字串和初始的记录源,即显示内容AdScore.ConnectString=″Provider=Microsoft.OLEDB.3.51;Persist_SecurityInfo=False;DataSource=学生信息″AdScore.RecordSource=″selet*from学生成绩orderby成绩″AdScore.Refresh′预设好提取记录用的SQL语句Rs(1)=″select*from学生成绩where成绩=″+Chr(34)+″优″+_Chr(34)+″orderby成绩″Rs(2)=″select*from学生成绩where成绩=″+Chr(34)+″良″+_Chr(34)+″orderby成绩″Rs(3)=″select*from学生成绩where成绩=″+Chr(34)+″中″+_Chr(34)+″orderby成绩″Rs(4)=″select*from学生成绩where成绩=″+Chr(34)+″差″_Chr(34)+″orderby成绩″EndSubPrivateSubMcScore_SeriesSelected(SeriesasInteger,MouseFlagsas_Integer,CancelasInteger)SelectedSeries=SeriesEndSubPrivateSubMcScore_PointSelected(SeriesasInteger,DataPointas_Integer,MouseFlagsasInteger,CancelasInteger)SelectedSeries=SeriesEndSubPrivateSubMcScore_Db1Click()′改变ADO控件的记录源并刷新Adoc1.RecordSource=Rs(SeletedSeries)Adoc1.RefreshEndSub(湖南高文杰)02.txt《巧用CLIPBOARD建立图像数据库》VisualBasic中的数据控件(datacontrol)能连接众多的数据库源并且操纵简便,用来开发数据库管理应用程序,可以轻而易举地完成以前需要大量编写程序才能完成的任务。使用其缺省数据库(Access格式)的二进制类型(Binary)字段来存放图形图像数据可建立包含图像的数据库,只是图像的格式受限制(缺省为.bmp类型)。那么,能否在VB中建立一个不受图像格式限制的图像数据库呢?下面通过实例介绍实现方法:1.定义数据库结构用数据管理器(datamanager)建立一个包含表ImgTable的数据库Imge1.mdb。其中表ImgTable的结构定义为:字段名类型NoIntegerImgDataBinary这里,同时预先建立几个ImgData内容为空的记录,供测试用。2.添加控件及代码在Form1上画出标签(Label1)、按钮(Command1)、图片框(Picture1)、数据控件(Data1)各一个,属性及代码如下:Data1DatabaseName=″C:\VB40\IMGE1MDB″Data1RecordSource=ImgTableLabel1DataSource=ImgTableLabel1DataField=NoPicture1DataSource=ImgTablePicture1DataField=ImgDataSubCommand1_Click()′从Clipboard截取图像数据到图片框控件中Picture1Picture=ClipboardGetData()EndSub3.往Clipboard送图像可采用各种支持Clipboard的图像编辑器,如在Photoshop上处理好图像,然后将其“拷贝”或“剪切”至Clipboard。4.从Clipboard截取图像到数据库切换至VB,运行Form1。用鼠标点击按钮Command1,将图像从Clipboard“粘贴”到图片框中。然后,利用数据控件将当前记录往后(或往前)滑动,图片框中的图像便自动保存至数据库中。5.重复3、4步,利用Clipboard可建立一个不受图像格式限制的图像数据库,而且,比起字段中放置图像文件名再依此调用图像文件的方法更易管理。另外,对于一些数据库的增加、查询、修改等操纵功能,可配合使用数据库对象(如Database、TableDef、Field、Dynaset、Snapshot等)去完成。以上程序在VisualBasic3.0/4.0上通过。(浙江胡文俊)03.txt《在VB中存取数据库中的图片》一、数据库的设计数据库可以采用微软的Access97或者SQLServer来进行,首先新建一张表,取名为Table,添加三个字段,分别是:姓名Char型(SQLServer中)文本型(Access中);编号Char型(SQLServer中)文本型(Access中);照片image型(SQLServer中)OLE对象(Access中),设计好后存盘。为了可以进行远程调用,我们采用ODBC的方法进行,双击打开控制面板里的ODBC数据源,界面如图1所示:点“系统DSN”选项卡,按“添加”按钮选择对应的数据源驱动程序Access的*.mdb或者SQLServer,依照添加向导加添加数据源,下面就可以开始程序的编写了。二、程序的编写运行VB,新建一个工程。本程序采用ADO控件和动态链接库访问数据库,需要加入ADO的运行库,单击“工程\引用”菜单,出现引用对话框,选择MicrosoftActiveXDataObjects2.0Library并确定。添加一个Form,四个Label控件,两个TextBox控件,一个PictureBox控件,一个ADODC控件,三个CommandButton控件,一个CommandDialog控件,如果ADODC和CommandDialog控件没有出现在工具框上,请单击菜单“工程\部件”。点“控件”选项卡,在其中选中MicrosoftADODataControl6.0(OLEDB)和MicrosoftCommonDialogControl6.0两项按“确定”按钮。下面是以上各个控件的一些属性:Form1.MaxButton=FalseLabel1.Caption=姓名:Label2.Caption=编号:Label3.Name=ResNameLabel3.BackColor=&H80000009&Label3.BorderStyle=1-FixedSingleLabel3.DataField=姓名Label3.DataSource=AdoCtrLabel4.Name=ResNumbLabel4.BackColor=&H80000009&Label4.BorderStyle=1-FixedSingleLabel4.DataField=编号Label4.DataSource=AdoCtrText1.Name=NamesText2.Name=NumbCommonDialog1.Name=CDlgAdodc1.Name=AdoCtrCommonButton1.Name=PreViewCommonButton1.Caption=预览CommonButton2.Name=SaveCommonButton2.Caption=保存CommonButton3.Name=UpdateCommonButton3.Caption=更新PictureBox1.Name=PicBoxPictureBox1.AutoSize=FalsePictureBox1.AutoRedraw=FalsePictureBox1.DataField=照片PictureBox1.DataSource=AdpCtr下面是程序代码:′此工程需有MicrosoftActiveXDataObject2.1Library(msado15.dll)DimConstrAsString′ODBC路径DimFileNameAsString′图片文件名ConstBLOCKSIZE=4096′每次读写块的大小04.txtAccess97的报表解决方案利用OLE自动化解决ACESS97中文版报表生成器直线不能往下顺延的缺陷ACCESS97是一个非常优秀的数据库软件,它不仅能充当办公自动化的桌面数据管理工具,也是一个开发Client/Server产品的优秀前端开发工具.它的特点是易学易用、工具丰富、不需写大量代码就可以在很短的时间内开发出界面优美且功能强大的系统,长期以来受到广大开发者的青睐。但笔者在使用时发现其报表生成器中有一个明显不适合我国国情的缺陷,就是当设置报表DETAIL节上的字段长度因为横向空间不够而设为自动向下顺延(CanGrow属性为True)时,如果字段旁有竖线(国内大部分公文报表都有竖线,而国外则很少有),则竖线不能和字段一起向下顺延。使整个报表看起来不美观。这个缺陷在ACCESS2.0和ACCESS97中文版上都有,而在FoxPro2.5B/3.0/5.0下却没有。据微软技术服务部的工作人员说是由于本地化时测试不够原因所致。为此,笔者在ACCESS内采用了OLE自动化!方法,将ACCESS97查询生成的表送交EXCEL97进行处理(分类汇总、打印、预演),较好地解决了这个问题。由于ACCESS97和EXCEL97的VBA在97版本上几乎完全兼容,在EXCEL97下录制的宏代码只需在ACCESS下稍加修改就行了,所以采用此方法和用内部报表生成器设计所用的时间差不多。整个工作需要下面几步:在EXCEL97下设计好报表的样式,包括表头、页眉、页码等,对需要自动翻转的列,在单元格格式设置下设为自动换行。在EXCEL97下录制好当数据送入后进行的操作宏(如分类汇总、加边框线,加空行、打印输出、预演等动作)。在ACCESS下用VBA语句和DAO对象的方法将数据送入EXCEL表内,并将EXCEL下宏操作变成ACCESS下的语句。以下是ACCESS97下的程序代码,实际应用程序界面是一个对话框屏幕(FORM),上面有五个下拉框(Comb_)和一个文字框(Text),由用户选择相应的信息,然后用户按确定命令按钮执行程序。其中有些属性和方法在ACCESS2.0下不能使用,可采用相应的语句.PrivateSub确认_Click()OnErrorGoToErrorHandlerDimstDocNameAsStringDimkAsIntegerstDocName=Pqry_YEARDoCmd.OpenQuerystDocName'从原始表内根据用户输入的信息条件运行生成表查询,生成一个供打印用的表.'增加空记录处理--为
本文标题:VB与数据库
链接地址:https://www.777doc.com/doc-5388590 .html