数据库(多表关连)

原创 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
  • 下载

数据库的sql查询多表内链接

  • 2015年01月06日 17:14
  • 2KB
  • 下载

kettle实现数据库迁移----多表复制向导

用Kettle的一套流程完成对整个数据库迁移 需求:做数据仓库时,需要将业务系统CRM抽取到数据仓库的缓冲层,业务系统使用的是SqlServer数据库,数据仓库的缓冲层使用的是mysql数据库,为实...

跨数据库多表联合动态条件查询

[HttpGet] public ActionResult Search() { string whereText = ""; ...

zend framework中对mysql数据库的多表联查问题

首先说说废话(不想看废话直接跳到第 5 段):这次做着项目,开始的时候队友说这简单的系统用什么框架啊!于是也就放着zend没用,直接开始写几乎没设计的代码!项目前期进展速度极慢,一是因为队里没有一个人...
  • ycb1689
  • ycb1689
  • 2012年06月05日 18:21
  • 1367

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

CREATE DATABASE mydb; SHOW DATABASES ; ALTER DATABASE mydb CHARACTER SET utf8; SELECT database(); US...

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

数据库分页存储过程,支持多表联合查询 CREATE PROCEDURE [dbo].[getInQuiryAllByPage] @tableNames varchar(5000), --表...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库(多表关连)
举报原因:
原因补充:

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