数据库(多表关连)

原创 2012年03月21日 16:29:29

数据库(多表关连)

 

步骤一:开始---程序---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;

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

多表数据库课程设计

  • 2011-09-16 11:55
  • 15.28MB
  • 下载

数据库分页存储过程,支持多表联合查询

数据库分页存储过程,支持多表联合查询 CREATE PROCEDURE [dbo].[getInQuiryAllByPage] @tableNames varchar(5000), --表...

oracle 数据库多表插入详解

插入多表操作。 大部分插入操作是针对单表操作的。但是oracle支持多表插入(insert)语句 。在数据仓库方面的抽取、转移和装入(ETL,Extract Transform and Load)的...
  • ahoal
  • ahoal
  • 2011-10-17 13:00
  • 224

同一个数据库实例,不同用户下多表创建视图,Hibernate完成ORM映射,Spring整合,后台实现

同一个数据库实例,不同用户下多表创建视图,Hibernate完成ORM映射,Spring整合,后台实现 1、同一个数据库实例,同用户,多表创建视图 2、同一个数据库实例,不同用户下,多表创建视图 3、...

Mysql数据库多表联合更新

有时数据库某些字段为字符串类型,并且内容比较长,由于字符串比较占存储空间,当数据比较多时也会影响查询效率,这时就可以把字符串移到另一个表中,并建立相应的编号,然后将字符串替换成这些int 类型的编号;...

sql 数据库 多表之间的查询 纯逻辑 共勉

CREATE DATABASE mydb; SHOW DATABASES ; ALTER DATABASE mydb CHARACTER SET utf8; SELECT database(); US...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)