手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>delphi>列表

Delphi 简单数据库应用的创建及MASTAPP介绍(三)

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

在这里要特别注意,请读者们不要混淆了Try...Finally语句和Try...Except 语句。如果真正想在发生异常时采取相应的处理,就要使用Try...Except语句。Try... Finally语句只是用来处理当异常出现时,使应用程序执行Finally部分的语句, 使程序继续执行下去。Try...Except语句是实现异常处理,Try...Finally语句是实现异常保护。

有了上述这些概念,我们便可以提供这个例子的一些程序代码,它涉及了所有这些内容。

程序清单:修改数据库中的记录 

unit Unit26;

interface 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DB, DBTables, Buttons; 

type

TForm1 = class(TForm)

DataSource1: TDataSource;

customerTable: TTable;

Panel1: TPanel;

DBGrid1: TDBGrid;

Panel2: TPanel;

UpperCaseFirstAddBtn: TButton;

UpperCaseSecondAddBtn: TButton;

MixedCaseFirstAddBtn: TButton;

MixedCaseSecondAddBtn: TButton;

BitBtn1: TBitBtn;

procedure ForceCase(TargetField:String;ToUpper:Boolean);

procedure UpperCaseFirstAddBtnClick(Sender: TObject);

procedure MixedCaseFirstAddBtnClick(Sender: TObject);

procedure UpperCaseSecondAddBtnClick(Sender: TObject);

procedure MixedCaseSecondAddBtnClick(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end; 

var

Form1: TForm1; 

implementation

const

upper=true;

Mixed=False; 

{$R *.DFM}

Function IsUpper(ch:char):Boolean;

begin

If (ch>='A')and(ch<='Z')then

IsUpper:=true

else

IsUpper:=False;

end;

procedure TForm1.ForceCase(TargetField:String;ToUpper:Boolean);

var

WorkBuffer:string;

i:Integer;

begin

with customerTable do

begin

DisableControls;

TRY

First; {将记录指针移到第一条记录处 }

While not EOF do

begin

WorkBuffer:=FieldByName(TargetField).AsString;

If ToUpper then

for i:=1 to Length(WorkBuffer)do

WorkBuffer[i]:=UpCase(WorkBuffer[i])

else

begin

for i:=1 to Length(WorkBuffer) do

If IsUpper(WorkBuffer[i]) then

WorkBuffer[i]:=chr(ord(WorkBuffer[i]) 32);

WorkBuffer[1]:=UpCase(WorkBuffer[1])

end;

Edit;

FieldByName(TargetField).AsString:=WorkBuffer;

post;

Next;

end;

Finally

enableControls;

end;

end;

end; 

procedure TForm1.UpperCaseFirstAddBtnClick(Sender: TObject);

begin

ForceCase('Addr1',Upper);

end; 

procedure TForm1.MixedCaseFirstAddBtnClick(Sender: TObject);

begin

ForceCase('Addr1',Mixed);

end;

 

procedure TForm1.UpperCaseSecondAddBtnClick(Sender: TObject);

begin

ForceCase('Addr2',Upper);

end;

 

procedure TForm1.MixedCaseSecondAddBtnClick(Sender: TObject);

begin

ForceCase('Addr2',Mixed);

end;

 

procedure TForm1.FormCreate(Sender: TObject);

begin

customerTable.open;

end; 

end. 

14.7 插入和删除记录 

虽然我们使用DBD或者在应用程序窗体中用TDBNavigator可以插入、删除表中的记录,但是任何重要的数据库应用程序都是根据最终用户的命令完成此类操作的。同样,如果我们掌握了字段对象及其用法,修改数据库中的记录,插入和删除记录将变得非常容易。

要想删除表中的某一条记录,首先将记录指针移到该记录处,然后调用delete方法,这样,当前指针所在的记录就会被删除,而且我们在进行删除操作时,不必将TTable部件设置成编辑状态。当前指针所在的记录被删除之后,被删除记录下面的所有记录都向前移动,记录指针自动移到紧挨着被删除的记录的下一条记录。在删除记录的过程中没有提醒用户是否真的想删除当前记录的信息确认框,因此在进行此项操作时要倍加小心,如果是开发应用程序,最好的办法是提供一个确认信息框确保用户不会意外删除记录。

插入一条记录也很简单,Delphi为用户提供两种方法用来插入记录到现存数据库表中,一种方法是在当前记录指针所在的记录处插入记录;另一种方法是在数据库表的尾部插入记录。这两种方法是分别调用Insert方法和Append方法实现的。但是无论是调用Insert方法还是调用Append方法在具有索引的数据库表中插入记录,增加到索引表中的记录都将按照索引顺序写入到数据库表中,也就是说对于索引表,调用Insert和Append方法的效果是一样的。事实上,Append方法只适用于那些没有索引的表,这种没有索引的表并不十分有用因而通常不创建这种表。几乎任何情况下我们都是用Insert方法来插入记录。

用户在插入记录时一般可以采用两种方式插入:逐步插入即首先建立一条空记录,然后再填充记录的各个字段,最后再将记录写回到磁盘,共分三个独立的操作步骤;而使用InsertRecord方法便可以一次将插入记录的操作完成。 

14.7.1 逐步插入方法 

逐步插入方法分为三个明确的步骤:先调用TTable部件的Insert方法在TTable中创建一条新的空记录,然后填充该记录的各个字段,最后调用post方法把新记录写到磁盘上的实际数据库文件中,在填充并传送记录以前,考虑插入记录到表中的什么位置是毫无意义的,假设插入的表是有索引的,在调用post方法时,Delphi会自动地把插入的新记录按照索引顺序插入到表中的正确位置。如果插入的表中没有索引,那么新记录将插入到当前指针所在记录的后面。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!