2009年6月14日
摘要: 解决“无法为更新定位行。。。。”在Delphi中,如果使用ADOQuery对数据进行修改保存,在修改保存了第一次以后,如果再次进行修改保存,就会遇到“无法为更新定位行,一些值可能已在最后一次读取后已更改”的问题。原因有这样几种:1.在数据库设计时,为某些字段设置了默认值,在修改进行提交以后,数据库会自动修改对应字段的所有行的默认值,从而导致了数据库与数据集中数据的不一致,使ADOQuery无法对数据集进行定位。2.数据库对应的表没有主键,输入了重复的数据以后,数据库里有两条一样的数据,从而使ADOQuery无法对数据进行定位。解决方法:1.修改数据库设计,不再设置默认值,为数据库表定义主键,保 阅读全文
posted @ 2009-06-14 22:56 漂流侠 阅读(514) 评论(0) 推荐(0) 编辑
  2009年2月3日
摘要: 常用的是delphi备份SQL Server,较少用delphi备份Access的,今天有人问了一下,顺便把代码贴出来。有人可能会有需要。//(***本文出处:南山古桃(nsgtao)的百度空间:http://hi.baidu.com/nsgtao/ ****)procedure TBackup.Button1Click(Sender: TObject);varpath:string;beginif SaveDialog1.Execute thenif SaveDialog1.FileName '' thenbeginpath := ExtractFilePath(application 阅读全文
posted @ 2009-02-03 11:58 漂流侠 阅读(561) 评论(0) 推荐(0) 编辑
摘要: procedure CompactMdbDatabase(srcDbname,dstDbname,oldpwd,newpwd:string;bAccess97:boolean=true);var idbEngine:_dbEngine;beginif oldpwd '' then oldpwd := ';pwd='+oldpwd;if newpwd '' then newpwd := ';pwd='+newpwd;if bAccess97 thenbeginidbengine := CreateComObject(dao97.CLASS_DBEngine) as _DBEngine;i 阅读全文
posted @ 2009-02-03 11:41 漂流侠 阅读(249) 评论(0) 推荐(0) 编辑
  2008年12月20日
摘要: 大家知道,在一个大型复杂的系统中,有时会调用一些外部程序来帮助我们完成某些特定功能。 然而,如何打开并关闭这些外部程序呢?也许,这是一个老生常谈的话题,但笔者仍要继续讨论这个问题,原因有二:一是解决这个问题的方法很重要,并经常会遇到;二是大多数参考书提及的解决办法不全面,仍有很多朋友有疑问。下面,我将详细地阐述这个问题(提供的源代码均在WinNT/Delphi4.0环境下运行通过)。 一、如何打开一个外部程序: 我们常用的函数有两个,WinExec(),ShellExecute(),因为ShellExecute()函数主要用于Win32下,功能也强大一些,故而本文只对后者进行讨论。 首先,我 阅读全文
posted @ 2008-12-20 00:05 漂流侠 阅读(433) 评论(0) 推荐(0) 编辑
  2008年12月19日
摘要: 当光标被另外一个线程掌握时,就无法用GetCursor()应用接口获得光标句柄。本文阐述如何在任何线程掌握光标时都能够获取光标句柄。 ========================================================={ 当光标被另外一个线程掌握时,就无法用GetCursor()应用接口获得光标句柄。 本文阐述如何在任何线程掌握光标时都能够获取光标句柄。 例如,想在屏幕截取程序中放置光标时该如何做。}function GetCursorHandle: HCURSOR;varhWindow: HWND;pt: TPoint;pIconInfo: TIconInfo; 阅读全文
posted @ 2008-12-19 23:57 漂流侠 阅读(992) 评论(0) 推荐(0) 编辑
  2008年11月15日
摘要: 数据源为adoQuery 1、首先设置dbGridEh里需要排序的字段的Title-Titlebutton属性为true 2、设置dgGridEh的optionsEh-dbhautoSortMarking属性为true 3、在dbGridEh的ontitleButtonClick事件里面判断。 procedure Tfrmmain.dbgGridEh1TitlebtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh); begin if column.Title.SortMarker=smdowneh then adoQu 阅读全文
posted @ 2008-11-15 13:46 漂流侠 阅读(338) 评论(0) 推荐(0) 编辑
  2008年11月12日
摘要: //--------------------------------------------------------------------------------// 功能:设定 DbGridEh 合计行信息// 参数: pDbGrid:TDBGridEh;// pcFields : string ; 字段列表,字段用逗号分隔// pvtType : TFooterValueType ; 统计类型 TFooterValueType = (fvtNon, fvtSum, fvtAvg, fvtCount, fvtFieldValue, fvtStaticText);// 引用:StrToStr 阅读全文
posted @ 2008-11-12 01:00 漂流侠 阅读(829) 评论(0) 推荐(0) 编辑
摘要: 整体描述:DBGridEh拥有DBGrid的所有功能,并有如下改进:1、允许选择记录、列、方形区域;2、多列合一的表头;3、页脚能够显示求和,计数其他字段值;4、自动调整列宽;5、能够改变行和标题的宽度;6、Allows automatic broken of a single line long title and datarow to a multiline.标题栏的自动折行?7、标题能够以按钮形式显示,并任意排序;8、自动排序;9、能够用省略号的形式切断长文本;10、Lookup字段的list可以显示多个字段的值;11、Lookup字段可增加。(理解:可以输入自动添加到代码表中)12、冻 阅读全文
posted @ 2008-11-12 00:59 漂流侠 阅读(624) 评论(0) 推荐(0) 编辑
摘要: DBGRIDEH是Enlib3.0组件包中的组件之一。Enlib3.0组件包是一位俄国人为增强Borland系列开发工具功能而开发的第三方组件,它具有界面友好、功能强大、开发效率高、、快速制作预览/打印简单中国式报表等特点。因此,一推出即受到广大Borland程序员的青睐。目前这个版本支持BorlandDelphiversions4,5,6&7和BorlandC++Builderversions4&5,可极大地提高数据库应用系统客户端的性能。许多商品软件如《速达2000》等都使用了该组件。下面本人将使用该组件在实际系统开发过程中的经验总结如下。Enlib3.0组件包中最重要而且功能最强大的莫过 阅读全文
posted @ 2008-11-12 00:58 漂流侠 阅读(983) 评论(0) 推荐(0) 编辑
摘要: //这个问题困扰了我很久了,网上搜索了很长时间,下面这段代码只能在没有设置字段的情况下使用。//若设置了字段,drawdatacell就无法正常执行,可以改在DrawColumnCell事件中。//另外就是这段代码不能正常处理全角字符或者汉字,会有乱码出现。 procedureTForm1.DBGridEh1DrawDataCell(Sender: TObject; const Rect:TRect; Field: TField; State: TGridDrawState);var str: string; i: Integer;begin if DBGridEh1.Canvas.TextW 阅读全文
posted @ 2008-11-12 00:56 漂流侠 阅读(826) 评论(0) 推荐(0) 编辑