Delphi两个经典数据库控件集详解
- 格式:doc
- 大小:33.50 KB
- 文档页数:3
delphi dbgriddrawcolumncell的参数摘要:1.引言2.Delphi数据库组件简介3.DBGrid控件的作用4.DrawColumnCell事件的作用5.DrawColumnCell事件的参数6.使用DrawColumnCell参数的示例7.总结正文:Delphi是一款功能强大的编程语言,广泛应用于Windows平台的软件开发。
在Delphi中,数据库组件是非常重要的组成部分,它们可以帮助开发者轻松地处理各种数据库操作。
DBGrid控件是Delphi中常用的数据库组件之一,它允许用户以网格视图方式显示数据库中的数据。
DrawColumnCell事件是DBGrid控件的一个重要事件,它允许开发者自定义单元格绘制方式。
当DrawColumnCell事件被触发时,Delphi会调用与当前单元格相关联的自定义函数,该函数可以处理绘制单元格所需的任何操作。
DrawColumnCell事件的参数主要包括以下几个:1.Column:表示当前绘制单元格的列。
此参数可以用来区分不同列的绘制操作。
2.Row:表示当前绘制单元格的行。
此参数可以用来区分不同行的绘制操作。
3.Rect:表示当前绘制单元格的位置和大小。
此参数可以用来定位绘制操作的位置。
4.State:表示当前绘制单元格的状态。
此参数可以用来区分单元格的激活、选中、未选中等状态。
5.CellType:表示当前绘制单元格的类型。
此参数可以用来区分不同类型的单元格,如数据单元格、标题单元格等。
6.Style:表示当前绘制单元格的样式。
此参数可以用来设置单元格的背景色、边框样式等。
使用DrawColumnCell事件的参数可以帮助开发者实现各种自定义的绘制操作。
例如,可以利用DrawColumnCell事件为数据单元格添加背景颜色,或者为选中的单元格添加边框样式。
下面是一个简单的示例:```pascalprocedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;const Rect: TRect; Column: TColumnIndex; Row: TGridRow;State: TGridDrawState);beginif (Column = 1) and (Row = 1) thenbeginCanvas.Brush.Color := clRed;Canvas.FillRect(Rect);end;end;```总之,DrawColumnCell事件是DBGrid控件中一个非常实用的功能,通过自定义DrawColumnCell事件的处理函数,开发者可以根据需要实现各种个性化的绘制操作。
Delphi数据库控件使用入门2009年11月04日星期三09:572009年04月16日上午08:49Delphi数据库控件使用入门━━━━━━━━━━━━━━━━━━━━━━━━━━在数据库应用程序中,数据控件是经常要用到的。
数据控件都是可视的。
也就是说,如果修改了这些构件的属性,能在窗体上马上反映出来。
如果这些构件的Enabled属性设为True并且数据集的Active属性也设为True,在设计期就可以看到数据。
下面就来介绍一下这些控件的简单应用:指定一个数据源数据控件必须通过TDataSource构件连接数据集。
TDataSource构件扮演的角色实际上就是数据控件与数据集之间的桥梁。
首先,把一个数据集构件放到窗体或数据模块上,设置它的DatabaseName属性指定要访问的数据库,设置它的TableName属性指定要访问的表。
接着,把一个TDataSource构件放到窗体或数据模块上,设置它的DataSet属性指定数据集。
然后,把一个数据控件放到窗体上,设置它的DataSource属性指定TDataSource构件,而这个TDataSource构件的DataSet属性已经指定了一个数据集。
最后,设置数据控件的DataField属性指定要显示的字段。
不过,对于TDBGrid、TDBCtrlGrid和TDBNavigator构件来说,不需要设置DataField属性,因为这几个控件是以整个数据集为工作内容的。
编辑和更新数据除了TDBNavigator构件外,其他数据控件都是用来显示和编辑数据的。
这里要介绍怎样编辑数据。
要使用户能编辑数据,数据集必须进入dsEdit状态。
如果TDataSource的AutoEdit属性设为False,用户不能直接编辑数据,除非程序调用Edit函数。
要使用户能够在数据控件中修改数据,必须把数据控件的ReadOnly属性设为False。
如果ReadOnly属性设为True,数据控件中显示的数据就是只读的。
Delphi7 ADO面板上的控件简介一、 TADO Connection组件该组件用于建立数据库的连接。
ADO的数据源组件和命令组件可以通过该组件运行命令及数据库中提取数据等。
该组件用于建立数据库的连接,该连接可被多个数据集所共享,但是并不是应用程序中必须的,因为ADO数据集及命令组件通过设置其Connection String属性,可以直接连接到数据库。
但是如果多个数据集使用相同的数据库连接时,则使用TADO Connection就有一定的优势,因为不必为每个数据集都单独建立数据库的连接,同时也减少了资源的消耗,并且可以建立跨越多个数据集的事务。
一个事务(transaction)是数据库操作的一个阶段,用户对数据库的修改都保存在本地计算机的内存中,只有提交一个事务后,才能将修改的内容提交到数据库中。
如果选择了回滚事务,则所有的修改将被取消,而不会提交到数据库中。
? TADO Connection组件提供如下功能:v 控件数据库的连接v 控制服务器的注册v 管理事务v 为关联的数据集提供数据库连接v 将SQL命令发送到数据库中v 获得数据库的原数据(metadata)? TADO Connection的常用属性1) Attributes此属性用于设置连接的数据库的自动处理的行为,它是Txact Attributes类型的集合,包括两个集合元素:I. Xa Commit Retaining:提交一个事务后自动开始一个新的事务。
II. Xa Abort Retaining:回退一个事务的同时将开始一个新的事务。
2) Command Timeout连接超时属性,用于设置一个命令执行时所能等待的最大时间值。
以秒为计量单位。
缺省值为30秒,即连接命令等待了30秒之后还没有被执行,系统就放弃这个命令。
3) Connected标识和数据库的连接是否处于激活状态。
用户可以查询Connected属性的值来判断数据库的连接状态。
DELPHI中有两个UDP控件:TIdUDPServer和TIdUDPClient控件,可用于传输UDP数据;用法都很简单,主要是一些细微的特性,弄清楚了对正确使用这两种控件有很大的好处;下面分别介绍:一、TIdUDPServer:代表一个UDP的服务端,接收UDP客户端发过来的数据;在FORM上放置一个TIdUDPServer控件,命名为UDPSvr,在FormCreate 事件中编写如下代码:UDPSvr.Bindings.Add;UDPSvr.Bin dings[0].IP := ‘192.168.2.117’;UDPSvr.Bindings[0].Port := 1812;UDPSvr.Active := True;在UDPSvr控件的OnUDPRead事件中编写如下代码:varBuffer: array[0..1024] of Char;iSize: integer;sData: string;beginZeroMemory(@Buffer,sizeof(Buffer));iSize := AData.Size;if iSize > 1024 thenbeginiSize := 1024;end;AData.Seek(0,soFromBeginning);iSize := AData.Read(Buffer,iSize);。
{对接收数据的处理}end;这样就完成了一个可以接收数据的UDP应用程序;其实TIdUDPServer有发送数据的方法:Send和SendBuffer,是继承自TIdUPDBase,所以只要利用TIdUDPServer控件就可完成数据的收发,在FORM 上添加一个Tbutton控件,在Click事件中添加如下代码;varBuffer: array[0..1024] of Char;sText: string;iLen: integer;beginsText := ‘12345678’ZeroMemory(@Buffer,sizeof(Buffer));StrPCopy(Buffer,sText);iLen := Length(sText);UDPSvr.SendBuffer(‘192.168.2.117’,1814,Buffer,iLen);end;这样就可以向另一UDP应用程序发送数据;一个TIdUDPServer控件可以打开多个端口,如下的代码打开了两个端口:UDPSvr.Bindings.Add;UDPSvr.Bindings[0].IP := GetLocalIP;UDPSvr.Bindings[0].Port := 1812;UDPSvr.Bindings.Add;UDPSvr.Bindings[1].IP := GetLocalIP;UDPSvr.Bindings[1].Port := 1813;UDPSvr.Active := True;当打开多个端口时,发送数据是从哪个端口发送出去呢?根据测试结果是:最近收到数据的那个端口;如果还没有收到过数据,则为Bindings[0].Port;在接收数据的事件中,有一个TidSocketHandle类型的参数:Abinding;这个参数有两对属性:IP 、Port:代表本地IP地址和端口;PeerIP、PeerPort:代表远端IP地址和端口;其中PeerIP、PeerPort在交复发送数据的UDP应用中是很有用的,因为UDP服务端可以向PeerIP和PeerPort回应数据,而不用再去设置UDP客户端的IP地址和端口号(这种方法应用不当,会产生问题,下面会说到);二、TIdUDPClient:代表一个UDP的客户端,专门用于发送UDP数据,不能接收数据,因为没有相应的事件和方法;前面已经说过,利用TIdUDPServer 控件就可以完成UDP数据的收发,所以一直怀疑TIdUDPClient控件存在的必要性;除非有一个UDP的客户端只发送数据,而从不接收数据,这样的客户端应该很少;后来我想,可能可以用TIdUDPClient控件来分担TIdUDPServer控件的负载,在一个需要收发大量UDP数据的服务端中,TIdUDPServer控件只接收数据,另外专门用一个TIdUDPClient控件发送数据,也许可以提高应用程序的性能(没有经过验证);利用TIdUDPClient发送数据有两种方式:1、利用TIdUDPClient控件本身的Send和SendBuffer方法,这时需要设置Host和Port属性,在FORM上放置一个TIdUDPClient控件,命名为:UDPClt;分别设置Host和Port属性值为:192.168.2.117和1814;再编写如下代码:varBuffer: array[0..1024] of Char;sText: string;iLen: integer;beginsText := ‘12345678’;ZeroMemory(@Buffer,sizeof(Buffer));StrPCopy(Buffer,sText);iLen := Length(sText);UDPClt.SendBuffer(Buffer,iLen);end;2、不需要设置Host和Port属性,而直接利用从TIdUPDBase继承来的Send和SendBuffer方法,也可发送数据,代码如下所示:UDPClt.SendBuffer(‘192.168.2.117’,1814,Buffer,iLen);TIdUDPClient控件发送数据时是通过哪个端口发出去的呢?根据测试的结果:是随机的;这样就给上面说过的UDP服务端可以向PeerIP和PeerPort回应数据造成了麻烦,也就是说如果UDP服务端收到的数据是通过TIdUDPClient控件发过来的,就不能通过PeerIP和PeerPort回应回去,而应设定客户端的IP地址和端口号;在具体应用中是哪种情况,要根据测试结果而定。
目录TForm Class (1)TPanel组件 (4)TToolBar Class (5)TToolButton Class (7)TTimer Class (7)TADOConnection Class (8)TADOQuery Class (9)TADODataSet Class (9)TDBGrid Class (10)TADOStoredProc Class (11)TButton Class (11)TBitBtn Class (12)TComboBox Class (12)TStaticText Class (13)TLabel Class (13)TEdit Class (13)TGroupBox Class (13)TRadioGroup Class (13)TListbox Class (14)TTreeView Class (14)TDataModule Class (15)VC++使用串口 (15)I. Open (16)II. Configuration (17)III. Read (18)IV. Write (19)V. Close (20)Conclusion ............................................................................................................................................. 错误!未定义书签。
License ................................................................................................................................................... 错误!未定义书签。
Delphi主要控件列表Standard类Frames框架TActionList统一管理事件Tlang实现多语言的切换TStyleBook皮肤Tbutton按钮TCheckBox复选框TRadioButton单选框TGroupBox容器TPopupBox右键菜单Tpanel容器控件TCalloutPanel容器控件Tlabel静态文本TImageControl放图片TPathLabel路径的静态文本TProgressBar进度条TScrollBar滚动条TSmallScrollBar滚动条Texpander下拉列表TTrackBar控制大小Tswitch开关Tsplitter分隔符TMenuBar菜单栏TStatusBar状态栏TToolBar工具栏TSizeGrip重定义画图TListBox列显示控件TComboBox选择下拉框Tmemo多行文本Tedit编辑文本TTreeView不同目录切换TListView显示带图标列表Tpopup右击菜单Additional类TSpeedButton多用于放置到工具栏上TCornerButton容器按钮TArcDial进度圈TMediaPlayer播放音乐TMediaPlayerControl控制音乐播放TCameraComponent播放视频Tcalendar日历TDateEdit日期TTimeEdit时间TNumberBox数字输入框TSpinBox调整数字大小TComboEdit可编辑的下拉菜单TComboTrackBar下拉调整数字大小TClearingEdit清空输入框DBExpress类TSQLConnection连接数据库TSQLDataSet操作数据集TSQLQuery执行一条SQL语句TSQLStoreproc可以调用数据库的存储过程TSQLTable操作数据库里的数据表TSqlServerMethod客户端调用服务器上的自定义方法TSQLMonitor数据库监视器TSimpleDataSet简化的建立本地可更新数据集方法ADO TADOConnection连接数据库TADOCommand向数据库发送SQL指令并返回请求的数据集TADODataSat获取并代表任何其他ADO组件从数据库返回的数据集合TADOTable对数据库中的表进行操作TADOQuery执行一条SQL语句TADOStoreProc调用数据库存储过程TRDSConnection连接数据库,常用于多层应用程序。
delphi控件属性⼤全-详解-简介button 组件:CAPTION 属性:⽤于在按钮上显⽰⽂本内容Cancel 属性:是否设置成默认的取消按钮,当设置为真的时候(true)按ESC触发改按钮的事件!Default 属性:是否设置成默认的确认按钮,当设置为真的时候按ENTER键的时候触发事件Hint 属性:设置当⿏标在按钮上短暂停留是显⽰的提⽰内容。
Showhint 属性:是否显⽰提⽰内容默认为假!Bitbtn 组件Kind 属性:他的值就是位图按钮组件上所显⽰的图标!GLYPH 属性:⽤于在位图按钮上显⽰加载后的位图图形!Numclyphs 属性:⽤于指定位图按钮上所能使⽤的位图个数!Layout 属性:⽤于指定位图在位图组件上的位置!Speedbutton 组件Flat 属性:是否具有OFFICE 2000的风格Groupindex 属性:设置分组。
DOWN 属性:设置改按钮是否处于按下状态Allowallup 属性:设置同⼀组的快速按钮是否具有同时弹起的状态。
Radiobutton 组件Checked 是否处于选中状态Alignment ⽤于设置选择框和⽂字的排列⽅式!Checkbox 组件Allowgrayed ⽤来设置当前组件被选种时,是否为变灰状态!State 设置当前复选框的状态。
⽂本类组件label 组件Alignment ⽤来设置标签中的⽂本在⽔平⽅向的排列⽅式!AUTOSIZE ⽤来设置标签的尺⼨⼤⼩,是否随CAPTION属性中⽂字的字体⼤⼩⽽进⾏⾃动调节!Font ⽤来设置显⽰⽂字的字体,颜⾊!Layout ⽤于设置标签中的⽂本在垂直⽅向的排列⽅式!WORDWRAP ⽤于设置是否⾃动换⾏!EDIT组件Charcase ⽤于设置组件中⽂字的⼤⼩写显⽰⽅式!TEXT ⽤于显⽰编辑框中的⽂字内容Modified ⽤来判断edit组件⾥的⽂字内容是否被修改过,若为假,就是没有被修改过!Passwordchar 设置显⽰密码字符!memo组件lines ⽤于访问框中每⼀⾏的内容Maxlength 设置⽂本框中最⼤的⽂字输⼊量Scrollbar 设置是否需要滚动条Wantretruns ⽤于设置在框中按’enter’键是否起回车作⽤Wanttabs ⽤于设置在框中按’tab’键是否起移位作⽤。
DELPHI第三方控件及组件大全(安装方法与使用)DELPHI是一种非常流行的应用程序开发环境,用于创建Windows应用程序。
作为一个强大的集成开发环境,DELPHI提供了许多内置的控件和组件,但有时候这些内置的功能并不能完全满足我们的需求。
在这些情况下,我们可以使用第三方控件和组件来扩展DELPHI的功能。
以下是一些常用的DELPHI第三方控件和组件以及安装方法和使用介绍。
FastReport是一款用于生成报表的控件,它提供了丰富的报表设计和输出选项。
使用FastReport,可以轻松地创建各种类型的报表,如表格报表、条形码报表、图形报表等。
它还支持多种输出格式,包括PDF、Excel、HTML等。
TeeChart是一个功能强大的图表控件,可以帮助你在应用程序中添加各种类型的图表,如柱状图、饼图、折线图等。
它提供了丰富的图表样式和定制选项,使你可以根据需要创建独特的图表。
Devart提供了一系列数据库组件,用于与各种类型的数据库进行交互,如MySQL、Oracle、SQL Server等。
这些组件提供了方便的API和功能,使你可以轻松地连接、查询和更新数据库中的数据。
VirtualTreeview是一个高性能的虚拟树控件,用于显示大量数据。
相比于传统的树控件,VirtualTreeview具有更快的显示速度和更小的内存占用。
通过使用VirtualTreeview,你可以在应用程序中展示和管理大规模的树形数据。
这些第三方控件和组件在DELPHI开发过程中是非常有用的工具。
使用它们可以大大提高开发效率和应用程序的质量。
安装方法有所不同,但一般来说,你只需按照安装向导进行操作即可。
安装完成后,你可以在DELPHI的开发环境中使用它们。
使用这些控件和组件的方法也各不相同,具体的使用方法可以参考各个控件和组件的官方文档或教程。
一般来说,你需要将控件或组件放置在窗体上,并根据需要进行配置和定制。
然后,你可以在代码中使用相应的属性和方法来操作控件或组件。
第六章什么是数据集Delphi 4中有四种类型的标准数据集构件,分别是TTable、TQuery、TStoredProc和TClientDataSet。
这些数据集构件都是从一个共同的基类TDataSet继承下来的,其中,只有TClientDataSet是直接从TDataSet继承下来的,而TTable、TQuery、TStoredProc的直接上级是TDBDataSet,TDBDataSet的上级是TBDEDataSet,TBDEDataSet 的上级才是TDataSet。
这几个类之间的继承关系可以用图6.1来表示。
图6.1 数据集的继承关系TDataSet是所有数据集的抽象基类,它的大部分属性和方法是虚拟的或抽象的。
所谓虚拟的方法,是指这些方法可以被派生类重载。
所谓抽象的方法,是指这些方法只有声明,没有定义,派生类必须给出定义后才能调用这些方法,不同的派生类可以有不同的定义。
由于TDataSet中包含抽象的方法,您不能直接创建它的实例,否则会引起运行期错误。
如果从功能上划分,TDataSet的属性和方法可以分为这么几大块:打开和关闭数据集、浏览记录、编辑数据、书签管理、控制连接、访问字段、记录缓冲区管理、过滤、事件。
6.1 打开和关闭数据集在对数据集进行任何操作之前,首先要打开数据集。
要打开数据集,可以把Active属性设为True,例如:CustTable.Active := True;也可以调用Open函数,例如:CustQuery.Open;要关闭数据集,可以把Active属性设为False或者调用Close函数。
6.2 数据集的状态数据集的状态(State属性)决定了当前能够对数据集进行的操作,例如,当数据集已经关闭,它的状态是dsInactive,此时就不能访问数据集的任何数据。
6.2.1 State属性State属性是只读的,下面列出了State属性可能的值:.dsInactive数据集已关闭,不能访问它的数据;.dsBrowse数据集已打开,可以浏览数据但不能修改数据;.dsEdit此时为编辑状态,可以修改数据;.dsInsert此时可以插入一条新的记录;.dsSetKey只适用于TTable和TClientDataSet,此时可以设置范围和键值,并且可以调用GotoKey函数;.dsCalcFields正在处理OnCalcFields事件(当字段需要指定一个值的时候促发的事件),此时不能修改非计算字段的值;.dsCurValue内部使用;.dsNewValue内部使用;.dsOldValue内部使用;.dsFilter正在进行过滤操作。
Delphi两个经典数据库控件集详解Delphi强大的数据库功能一直是Delphi程序员们的最爱,然而,BDE强大功能的后面,却有太多的限制。
当程序员们绞尽脑汁编出短小精悍的程序而兴高采烈时,他们不得不尴尬的面对发布程序时BDE那几兆大的附加文件。
有没有其他控件,既可以使用Delphi强大的数据库功能而又不要那几兆大的BDE?答案时肯定的,那就是使用第三方控件或者Delphi5的ADO控件。
在这里,我将具体介绍Delphi第三方数据库控件集:DiamondAccess1.7和ODBCExpress5.06。
DiamondAccess控件集使用微软数据访问对象DAO访问数据库。
利用此控件集访问数据库,可以完全摆脱BDE,当然,发布程序时也就无需考虑BDE的麻烦了。
而且,DAO的访问速度比BDE更快。
ODBCExpress控件集使用大家都很熟悉的ODBC访问数据库,只要设置好数据源,就可以访问大部分类型的数据库;而且,使用ODBC接口的程序具有更大的可移植和通用性。
ADO数据库访问控件在Delphi5中已经加入进来,假如要在Delphi4或者更低的版本使用ADO,就必须使用第三方控件,比如:DiamondDAO,同样可以提供强大的更能。
以下,我们通过实例的形式具体介绍DiamondAccess1.7和ODBCExpress5.06的使用,我们将利用这两个控件集实现同样的功能:在DBGrid中列出数据库所有数据,通过输入检索数据。
通过这些实例,我们可以基本了解以下内容:1)Delphi 中应用这两个控件集访问数据库的基本技术;2)发布采用这两个控件集的程序需要注重的问题和基本方法;3)两个控件集的优缺点和下载安装方法;DiamondAccess控件集演示>一、控件说明DiamondAccess是一套高速连接MicrosoftAccess数据库的控件集,包括TDAODatabase,TDAOTable,TDAOQuery和TDAOQueryDef四个控件。
它不依靠BDE访问数据库,而是使用微软的DataAccessObjects3.5和JetDatabaseEngine访问数据库,利用Access自带数据库引擎,DiamondAccess可以提供高速的数据库访问接口。
图1DiamondAccess控件集控件TDAODatabase用于定义要访问的Access数据库,主要属性是DataBaseName;TDAOTable和Delphi自带数据库控件Tabel相似;TDAOQuery和Delphi自带控件Query相似;TDAOQueryDef和DAOQueryDefobject一起使用,平时编程中较少用到。
二、演示程序现在,我们用实例了解DiamondAccess的用法。
在程序中,我们将用到TDAODatabase 控件,TDAOQuery控件,Delphi自带Datasource控件,Edit和Button控件。
程序打开数据库DataBase的main表并列出所有数据,Edit1控件用于输入数据检索。
为了更好的了解,我们先看看main的表结构。
1)数据库DataBase表main的结构字段名数据类型字段大小/格式ID自动编号长整型姓名文本50电话文本50生日日期/时间常规日期说明文本100表1数据库DataBase表main的结构2)程序中控件属性为了程序有更好的可迁移性,我们尽量不再属性面板中设置控件属性,而是在程序代码中设置。
以下属性,只是控件最基本的要求,进一步设置请看程序源代码。
控件属性Form1Caption:DiamondAccess演示;DAODatabase1默认;DAOQuery1Database:DAODatabase1;SQL:selectfrommain;DBGrid1DataSource:DataSource1;DataSource1Dataset:DAOQuery1;Edit1Text:空;Button1Caption:检索表2DiamondAccess演示程序控件及控件属性图2控件属性3)程序代码程序在Form1的Create时间中设置控件的主要属性。
procedureTForm1.FormCreate;varbasename:string;begin//定义数据库,这里是程序所目录的Data子目录下的database1.mdb文件baseName:=ExtractFilePath+;DAODatabase1.DatabaseName:=basename;tryDAODatabase1.Open;//打开数据库daoquery1.Open;//执行“Selectfrommain”语句exceptShowMessage;Halt;end;end;点击按钮Button1,检索表main中姓名等于Edit1输入值的记录。
procedureTForm1.Button1Click;var strsql:string;//用于定义DAOquery1的SQL语句beginstrsql:=;iftrim<>thenstrsql:=strsql++++edit1.text+;form1.daoquery1.close;form1.daoquery1.sql.clear;form1.daoquery1.SQL. add;Form1.setfocus;tryform1.daoquery1.open;exceptform1.daoquery1.execute;end;end;三、下载与安装DiamondAccess1.7可以在凌云天地下载,安装与一般控件安装相同。
四、要注重的地方1)发布程序应用DiamondAccess控件的程序,在发布时要注重目标计算机是否安装有DAO3.5或者以上版本,假如没有,程序执行时会出现要求安装的提示。
DAO3.6安装版下载:http:///support/files/dao360.zip。
2)关于Access版本的限制现在的DiamondAccess只支持Access97版本,程序中最好使用Access97数据库。
3)日期格式的非凡说明日期数据的检索,日期格式要求与Access的日期格式相同,不可与Delphi的数据库的日期格式相同。
试举一例:检索两个时间段之间的所有数据,这两个时间由控件:datetimepicker1和datetimepicker1来决定,那么,SQL语句如下:DAOquery1.sql.add++formatdatetime+);在这里,我们特意转换时间格式为:“mm/dd/yyyy”格式格式,并且,时间用“#”包围起来。
ODBCExpress5.06控件集演示一、控件说明ODBCExpress控件集是利用ODBC快速访问数据库的控件,与DiamondAccess 不同,ODBCExpress可以访问不同类型的数据库,并不局限于Access数据库。
所以,ODBCExpress具有较大的灵活性。
ODBCExpress控件集包括19个控件,实际上分为三类:核心控件,用于连接和查询数据库;可视数据控件;不可见控件。
如图:图3ODBCExpress控件集二、演示程序这个程序演示了如何在程序中动态设定DSN数据源,如何动态载入数据,同时,简单演示了一个查询。
所用控件有:THDBC控件,用于与DataSource建立连接;OEDataset控件;DataSource控件;DBGrid控件,Edit控件和一个Button控件。
所用控件属性如下:控件属性Form1Caption:ODBCExpress5.06演示;Hdbc1默认;OEDataset1hdbc:Hdbc1;DBGrid1DataSource:DataSource1;DataSource1Dataset:OEDataSet1;Edit1Text:空;Button1Caption:检索表3ODBCExpress5.06演示程序控件属性程序中所用数据库和DiamondAccess演示中数据库结构相同。
以上控件的其他属性将在程序代码中设置。
图4ODBCExpress5.06演示程序程序代码程序在Form1的Create中设定数据源DSN,同时设置其他控件属性。
其中,设定DSN数据源将用到注册表操作,请注重。
procedureTForm1.FormCreate;varregisterTemp:TRegistry;bData:arrayofbyte;begin//以下程序设置DSN数据源;registerTemp:=TRegistry.Create;//建立一个Registry实例withregisterTempdobeginRootKey:=HKEY_LOCAL_MACHINE;//设置ROOT;ifOpenKey;//设定DSN为“MyAccess”;endelsebeginshowmessage;//数据源描述;WriteString;//驱动程序DLL文件WriteInteger;WriteString;WriteInteger;WriteString;//用户名称bData:=0;WriteBinaryData;WriteBinaryData;endelsebeginshowmessage;WriteInteger;//缓冲区大小WriteInteger;//页超时WriteInteger;//支持的线程数目WriteString;endelsebeginshowmessage;exit;end;CloseKey;Free;end;//以下程序设置控件属性;Form1.Hdbc1.Terminate;Form1.Hdbc1.DataSource:=;//DSN名字erName:=;//数据库用户名Form1.Hdbc1.Password:=;//用户密码Form1.Hdbc1.Connect;OEDataSet1.Table:=;//数据表为mainOEDataSet1.sql:=;OEDataSet1.Open;datasource1.dataset:=OEdataset1;dbgrid1.DataSource:=datasource1;end;以上程序设置DSN是重要的一部分,这样才使程序具有真正的可移植性。
以下代码为检索部分。
procedureTForm1.Button1Click;beginifedit1.text=then//是否输入数据beginshowmessage;exit;end;OEDataSet1.Hstmt.ExecAsync:=True;OEDataSet1.Table:=;OEDataSet1.sql:=+++edit1.text+;OEDataSet1.open;end;注:以上DSN设置部分参考了大富翁论坛贴子,在此表示感谢。