- 博客(35)
- 资源 (17)
- 收藏
- 关注
原创 MSSQL设计主键类型
在SQLServer环境下,表的主键应该怎样设计.目前主要用到的主键方案共三种自动增长主键手动增长主键UNIQUEIDENTIFIER主键1、先说自动增长主键,它的优点是简单,类型支持bigint.但是它有致命的弱点:当我们需要在多个数据库间进行数据的复制时(SQL Server的数据分发、订阅机制允许我们进行库间的数据复制操作),自动增长型字段可能造成数据合并时的主键冲突
2013-01-05 10:57:48 829
原创 delphi中TcxScheduler的使用
绑定模式下,数据被存储在数据库系统中。要使scheduler工作在绑定模式下,应将TcxScheduler.Storage属性绑定到TcxSchedulerDBStorage部件。步骤如下:1.创建两个用以存储数据的表SchedulerTable、SchedulerResourcesTable,结构如下:create table schedulertable(ActualFinis
2012-11-26 14:38:16 2874 1
转载 DataSnap Server 对像池 .
首先要解释下对像生存期(LifeCycle) 'Server' 对像在Server运行过程中全局存在, 对像的类成员变量都是线程不安全的, 多个客户连接都是共用它的 'Session' 对像在一个客户连接时建立/断开时释放, 类成员变量都是线程安全的, 全局变量仍然是线程不安全的 'Invocation' 对像在每个客户请求时建立(远程方法)/
2012-07-27 17:34:05 1258
原创 SQL Server中行列转换 Pivot UnPivot
PIVOT用于将列值旋转为列名(即行转列),在SQL Server2000可以用聚合函数配合CASE语句实现PIVOT的一般语法是:PIVOT(聚合函数(列) FOR 列 in (…) )AS P完整语法:table_sourcePIVOT(聚合函数(value_column)FOR pivot_columnIN()) UNPIVOT用于将列明转为列
2012-07-20 15:03:38 492
原创 个人认为Delphi XE2最实用的3个新增功能
TOSVersion类型 增加了一个记录类型:TOSVersion,看名字就知道它和版本功能有关,这比之前的函数好用多了,其实以前也没必要有它,这回是跨平台了才需要它。它可以获知当前运行环境是 x86,还是 x64,是 windows,还是 mac,并且还能得到操作系统的具体版本号,还可以方便的判断当前版本是否高于某个版本。它还有个叫 ToString() 的方法,它返回的结果符合
2012-07-18 10:57:23 1076
原创 Delphi中的构造函数
Delphi中所有类都继承自TObject ,Create默认不是虚方法 ,Destroy默认是虚方法.VCL中组件继承的大多Create都被声明成虚方法了。在Delphi当中构造函数当中的create与析构函数destroy大部分都是虚方法.可以覆盖.被覆盖的函数必须是虚(virtual)的,或者是动态(dynamic)的. (Constructors)构造函数, 用来
2012-02-09 14:53:17 843
原创 极限编程的集成测试工具-Dunit
简介极限编程(Xtreme Program)的测试理念是,在开发程序的之前或者同时就要编写出相应的测试程序,而不是象通常那样等到测试阶段再来编写测试程序。 当程序完成时,它的测试程序也应该已经完成。从软件工程的普遍规律来看,每修正一个bug的同时会以20%的几率引入新的bug。而XP的测试方式是, 每当修改Bug或者重构代码后都要重复测试所有的测试案例,以免在修改代码时引入新的Bug,只有经过
2011-11-08 10:12:42 1026
原创 Delphi TClientDataSet 使用方法_详解
TClientDataSet与TTable、TQuery一样,TClientDataSet也是从TDataSet继承下来的,它通常用于多层体系结构的客户端。 TClientDataSet最大的特点是它不依赖于BDE(Borland Database Engine),但
2011-10-06 14:12:20 6530 1
原创 DELPHI DATASNAP 2010 入门操作(2)不写一行代码,绿色三层我也行
有一行代码的三层,功能肯定非常的简单,但是,再简单,我们也三层了,学习一个东西,需要从入门开始就有兴趣,如果入门就给吓怕了,哪么后来何来信心学习呢?现在就让我们开始吧,不只是没有华丽的词语,而是连用词都不专业,因为,我也只是一个入门者。 我所用的版本为:Embarcader
2011-09-10 14:30:57 1512
原创 DELPHI DATASNAP 2010 入门操作(1)为什么要用datasnap 2010
网上关于新版本的datasnap的资料不是太多,我现在所能找到的全面一些的,也就是我们QQ群(DATASNAP[DELPHI]三层:67803772)里面的两位高手写的分析文章,且已经转到了我的BLOG文章中,还有群里面的一位朋友翻译了的datasnap 的一些资料。 对
2011-09-10 14:30:21 635
原创 类工厂模式
<br /><br />面向对象设计的一个目标就是将各种功能封装到不同的对象.这种思想很好,鼓励使用封装和委托. <br />有些应用程序或框架无法预料必须被创建的对象的类型.通常先接收一些信息指示如何执行. <br />这种情形在RO服务端接收到客户端请求是经常要面对:服务端需要知道请求需要什么对象,需要创建一个实例,最终调用完成, 又需要决定如何处理这个创建的实例. <br />我们使用类工厂模式来解决这中变异. <br />注意:本文适合RemObjects SDK的 Delphi和.NET版本. 对
2011-04-12 15:39:00 1450
原创 RO代码跟踪 之 对象池工厂的工作原理
<br /> 要在服务端使用对象池的功能,需要在XXX_Impl中uses uROClassFactories单元,并将其initialization小节中代码<br />TROClassFactory.Create('FirstSampleService', Create_FirstSampleService, TFirstSampleService_Invoker);<br />替换为<br />TROPooledClassFactory.Create('FirstSampleService' ,
2011-04-12 15:36:00 667
原创 用DELPHI建立多线程COM服务器
<br />用DELPHI建立多线程COM服务器 <br /> <br /> <br />摘要:本文探讨了多线程COM服务器的原理,然后详细介绍利用DELPHI建立多线程COM服务器的方法和步骤,并给出了相应测试实例。<br />关键词:组件对象模型(COM)、单线程单元模式(STA)、应用程序服务器<br /> <br />本文从实践的角度,详细介绍了在delphi中建立多线程Apartment COM服务器的方法和步骤。有关线程和COM技术的详细内容,请读者参考有关书籍。为便于理解,这里对本文涉及的内
2011-03-30 19:43:00 1823 1
原创 C/S结构中成批保存CLIENTDATASET中的数据
<br />这应该不算是什么技巧,估计有数据库方面程序的Delphi程序员都知道;本来没有写想到<br /> 需要把它写成一篇贴子,但前不久看个别刚入门的兄弟的代码时。才发展他们还在刀<br /> 耕火种,为此才想把它写出来算是对入门的兄弟们的一点帮助,让大侠们见笑了;<br /> 我们都知道TCLIENTDATASET有把对它其中的数据所做的修改记录下来的功能;如果需要还可以将<br /> 修改回复到以前的某个状态,而且结合DATASETPROVIDER还可能自动完成改动到SQL映射,将改动成批提交到
2011-03-30 14:55:00 666
原创 Borland DataSnap(MIDAS)三层架构编程中,DataSetProvider的Option属性
Borland DataSnap(MIDAS)三层架构编程中,DataSetProvider的Option属性DataSetProvider的Option属性 看看远端数据模块里的DataSetProvider的Option属性是否设置正确!Provider控件的Options属性值是一个集合,用于设置有关打包和传递的选项,像显示哪些字段、允许哪种更新方式等等。1. poFetchBlobsOnDemand:若包含此项,则表示数据包中不包括BLOB字段。不过,如果客户端的TclientDat
2011-03-30 14:53:00 1102
原创 为什么要选择UniDAC
<br />其实delphi优秀的数据集组件真不少,除了上诉的数据集组件,还有ZEOSDB、SQL Direct、UniDAC等,要是专业的数据集组件,更是百花盛开,如FIBPLUS、SDAC、ODAC、DOA等等,商业和开源不尽其中!这里只讨论UniDAC和ADO的一些比较。<br /><br /> Delphi能发展到现在,和一些著名的第三方控件厂商大力支持分不开,这其中包括Devart公司(Corelab)公司。Corelab公司做数据集驱动非常出名,就拿ODAC、SDAC和DBX驱动来说
2011-03-29 17:36:00 1004
原创 RO39 – 在一个事务中实现多个ClientDataSets 更新
<br />从两层迁移到三层第一个要面临的窍门就是摆脱在客户端控制事务.客户端不应该开始和提交事务.事实上客户端应该不知道任何事物.所有的事务逻辑应该放在服务端. <br />本文向你展示如何在RemObjects DataSnap服务中创建一个方法,用以传递一个ClientDataSet. Delta集合并在单独的事务中向数据库中更新,以便于在更新时发生异常时回滚事务. <br />这个方法只适用于你使用非嵌套(主从关系)的ClientDataSets 的情况,因为DataSnap默认情况下已经在单独事务
2011-03-29 11:12:00 1347 1
原创 Delphi中多线程下使用使用 UniDAC+MSSQL 需要注意的问题
一般解决方法是在线程开始启用 CoInitialize(nil),线程结束调用 CoUninitialize 。如果你使用多种数据库连接,比如三层中经常切换到MSSQL和Oracle,我们只需在判断 TUniConnection 的连接前事件 OnBeforeConnect 写下如下代码:procedure TServDBFunc.ServConnBeforeConnect(Sender: TObject);beginif (ServConn nil) and SameText(ServCon
2010-12-29 22:02:00 989
原创 Delphi快捷键大全
在过程、函数、事件内部, SHIFT+CTRL+向上的方向键 可跳跃到相应的过程、函数、事件的定义.相反,在过程、函数、事件的定义处,SHIFT+CTRL+向下的方向键 可跳跃到具体过程、函数、事件内部<br />CTRL+ SHIFT + C:编写申明或者补上函数. <br />如: <br />procedure TT.A(AA: string); //函数申明 <br />安下:CTRL+ SHIFT + C后,会写上 <br />procedure TT.A(AA: string); <br />b
2010-12-29 21:59:00 517
原创 SQL的重复记录处理大全
<br />查找所有重复标题的记录: SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC 一。查找重复记录 1。查找全部重复记录 Select * From 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1) 2。过滤重复记录(只显示一条) Select * Fr
2010-12-29 21:57:00 414
原创 .在delphi中实现网页的自动输入
<br />如果webbrowser由你创建<br />如果网页内容可知<br />用263举个例子<br />procedure TForm1.FormCreate(Sender: TObject);<br />begin<br /> b := false;<br /> webbrowser1.Navigate('http://www.263.net');<br />end;<br />procedure TForm1.WebBrowser1DocumentComplete
2010-12-29 21:53:00 989
原创 delphi三层框架设计
大多数文章中都或多或少的讲到了三层架构。表示层,业务层,数据层。又把业务层再细分,分为外观服务层,主业务服务,及数据库库服务层。今天主要讨论一下业务层吧。举个最简单的例子。客户端获取数据。业务层要与表示层尽量解藕, 我的方法是:首先我们在中间层TLB_中定义一个接口 IBusinessService, 定义一个方法。getvoList,我要得到一个VO的列表, VO即ValueObject, 例如:TValueObject= class(TPersistent) priva
2010-10-24 11:09:00 851
原创 一段控制摄像头的代码
2005年7月一段控制摄像头的代码unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;type TForm1 = class(TForm) btnStart:
2010-05-14 09:26:00 1010
原创 VideoCapture控件
2005年7月VideoCapture控件{------------------------------------------------------------------------------ Unit Name : VideoCapture Author : Liren Zhao Email : [email protected] Msn
2010-05-14 09:25:00 1610
原创 CXGrid的使用技巧
cxGrid技巧汇总2009-04-01 12:48========================================================================== 在主从TableView中根据主TableView得到对应的从TableView var ADetailDC: TcxGridDataController; AView:
2010-05-13 09:30:00 525
原创 Delphi自动检测U盘插入、拔出及获取U盘盘符!
//检测U盘插入、拔出 测试通过1、新建工程;2、定义一个私有过程procedure WMDeviceChange(var Msg: TMessage); message WM_DEVICECHANGE;完整代码如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphi
2010-04-04 11:58:00 973
原创 分享一下ExpressQuantumGrid4的cxGrid的一些使用方法和经验
分享一下ExpressQuantumGrid4的cxGrid的一些使用方法和经验 使用cxGrid有一些时间了,在这里总结一下使用cxGrid的一些方法,希望给刚开始接触cxGrid的人一些帮助。 1.简单介绍:cxGrid右下方的cxGrid1Level1是表示Grid表的层,cxGrid可以有多层,这相当于集合了PageControl的功能,而cxGrid1Lev
2010-02-09 17:09:00 489
原创 网上找来的 感觉对入门者很有启示 收藏一下了!
网上找来的 感觉对入门者很有启示 收藏一下了!No.1 判断逻辑类型 }var B: Boolean;beginB := Boolean(2); //这样只是为了调试//B := True;if B = True then ShowMessage(B = True); //不建议//不安全///////if B then ShowMessage(B); //建议//简短end;va
2010-01-30 10:07:00 360
原创 ado提速
终于将ADO达到DBX一样的速度,ADODataSet需要这样设置: CursorType=ctOpenForwardOnlyLockType=ltReadOnlyCrusorLoation=clUseServer 光设置CursorType和LockType是没什么用的,必须要设置CursorLoa
2010-01-30 10:02:00 494
原创 cxgrid 让搜索框随表格位置变化
让搜索框随表格位置变化在做一个数据录入的时候,经常用到,有些数据需要从代码表中进行录入,但一般的表格控件又不支持根据助记码进行搜索,保存编码,所以一般会设计成,选中某列以后,根据需要自动弹出代码列表供用户选择,下面的例子就是序代码表弹出的位置,可以处由变换的例子,当然可以根据自己需要修改什么时候可见,什么时候不可见:procedure TForm1.vwFocusedItemC
2010-01-17 23:36:00 856
原创 Delphi更改IE首页代码
Delphi更改IE首页代码2008-01-29 00:38uses registry;var reg:Tregistry;////////////////////////////////////////////////////procedure changeIE;var ret2:HKEY;begin reg:=Tregistry.Create; re
2009-08-16 20:06:00 684
原创 sql update 多表更新
1.首先创建两个表 sql语句如下:users:(用户表)CREATE TABLE users(id bigint,departid bigint,name text) depart:(部门表)CREATE TABLE depart(id bigint,departname text) users表中的departid与depart中的id相关联。2.插入数据users
2009-07-24 12:57:00 1009
原创 Sql Server 事务嵌套
COMMIT TRANSACTION (Transact-SQL) 标志一个成功的隐性事务或显式事务的结束。如果 @@TRANCOUNT 为 1,COMMIT TRANSACTION 使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分,释放事务所占用的资源,并将 @@TRANCOUNT 减少到 0。如果 @@TRANCOUNT 大于 1,则 COMMIT TRANSA
2009-07-24 12:54:00 782
Delphi的条型码,二维码的控件
2012-05-29
Delphi获取网卡列表并控制网卡是否启用
2011-12-22
代码版本控制 CVS
2011-02-24
BusinessSkinForm皮肤控件
2010-11-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人