Chinaunix首页 | 论坛 | 博客
  • 博客访问: 107870
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类: 嵌入式

2012-05-07 18:15:04

数据库(多表关连)

步骤一:开始---程序---Borland Delphi 6---BDE---Object---New---OK(默认STANDARD)---PATH---设置为含有数据库文件的目录下。

步骤二:向Form1中添加1个Database组件(BDE组中),AliasName---STANDARD1(上一步创建的), DatabaseName---Acc。

添加3个Table组件(BDE组中),DatabaseName---ACC,TableName---分别设置为Pza.DBF, Pzb.DBF,Km.DBF。

添加2个DataSource 组件(DataAccess组中),DataSet---分别设置为Table1和Table2。

添加DBGrid组件(Data Controls 组中) DataSource---DataSource2。添加DBNavigator(DataControls 组中),DataSource---DataSource1 , VisibleButton----后6个设置为false。

添加3个DBEdit,分别用来输出“编号”,“日期”,“备忘录”,Datasource----Datasource1, Datafield----分别为NO,DATE, MEMO。

添加5个Edit(依次为Edit1至Edit5),两个用于查询编号,两个用于查询日期,一个用于查询备忘录。添加3个Lable组件,用于标示这5个Edit的功能。最后添加1个Button, Caption----筛选。

步骤三:1.Form1--- OnActivate:

Table1.Open;

Table2.Open;

Table3.Open;

2.Table2---masterfields----设置为 ID->ID

3. 右键单击Table3,选中Fields Editor---Add allfields

右键单击Table2,选中FieldsEditor---Add all fields

然后选中New field---Name(NAME), Component(Table2NAME), Type(Strings), Size(30), Fieldtype(Lookup), Key Fields(CODE), Dataset(Table3), Lookup Keys(CODE), ResultField(NAME)。

右键单击DBGrid----Columns Editor----Addall fields

4.Button1(筛选):

var s:string;

begin

s:='';

ifedit1.Text<>'' then s:=s+'NO>='+edit1.text+' and ';

ifedit2.Text<>'' then s:=s+'NO<='+edit2.Text+' and ';

if(edit1.Text<>'') or (edit2.Text<>'') then s:=copy(s,1,length(s)-5);

if(edit3.Text<>'') or (edit4.Text<>'') then

ifs<>'' then s:=s+' and ';

ifedit3.Text<>'' then s:=s+'DATE>='+edit3.Text+' and ';

ifedit4.Text<>'' then s:=s+'DATE<='+edit4.Text+' and ';

if(edit3.Text<>'') or (edit4.Text<>'') then s:=copy(s,1,length(s)-5);

if(edit5.Text<>'')then

begin

ifs<>'' then s:=s+' and ';

s:=s+'MEMO='''+edit5.Text+'*''';

end;

table1.Filtered:=false;

table1.Filter:=s;

table1.Filtered:=true;

showmessage(s);

end;

问题:这次作业还要求“插入”“确定”“取消”按钮,但是功能存在很多缺陷,所以没有加上,因而Database组件在这里没什么太大的作用

private

function GetID():string;

{Private declarations }

public

{Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

function Tform1.GetID():string;

begin

result:=' 103';

end;

procedure TForm1.FormActivate(Sender:TObject);

begin

table1.Open;

table2.Open;

table3.Open;

end;

procedure TForm1.Button1Click(Sender:TObject);

begin

database1.StartTransaction;

table1.Append;

table1id.value:=getid();

table1.Post;

table2.Append;

table2id.Value:=getid();

table2.Post;

dbedit1.SetFocus;

end;

procedure TForm1.DBEdit1Enter(Sender:TObject);

begin

if table1.State=dsbrowse then table1.Edit;

end;

procedure TForm1.DBEdit1Exit(Sender:TObject);

begin

if table1.State=dsbrowse then table1.Post;

end;

procedure TForm1.DBGrid1Enter(Sender:TObject);

begin

if table2.State=dsbrowse then table2.Edit;

end;

procedure TForm1.DBGrid1Exit(Sender:TObject);

begin

if table2.State=dsbrowse then table2.Post;

end;

procedure TForm1.Button2Click(Sender:TObject);

begin

database1.Commit;

end;

procedure TForm1.Button3Click(Sender:TObject);

begin

database1.Rollback;

end;

procedure TForm1.Button4Click(Sender:TObject);

var s:string;

begin

s:='';

if edit1.Text<>'' thens:=s+'NO>='+edit1.text+' and ';

if edit2.Text<>'' thens:=s+'NO<='+edit2.Text+' and ';

if (edit1.Text<>'') or(edit2.Text<>'') then s:=copy(s,1,length(s)-5);

if (edit3.Text<>'') or(edit4.Text<>'') then

if s<>'' then s:=s+' and ';

if edit3.Text<>'' thens:=s+'DATE>='+edit3.Text+' and ';

if edit4.Text<>'' thens:=s+'DATE<='+edit4.Text+' and ';

if (edit3.Text<>'') or(edit4.Text<>'') then s:=copy(s,1,length(s)-5);

if(edit5.Text<>'') then

begin

if s<>'' then s:=s+' and ';

s:=s+'MEMO='''+edit5.Text+'*''';

end;

table1.Filtered:=false;

table1.Filter:=s;

table1.Filtered:=true;

showmessage(s);

end;

阅读(213) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~