数据库(多表关连)

原创 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;

spring data jpa使用@Query原生Sql多表联合查询

在jpa中使用联合查询,关于返回值类型的问题,一直不知该怎么写,今天终于找到了解决的办法,记录一下 ArticleVoteRepository.java: @RepositoryRestResou...
  • helloworld_dream
  • helloworld_dream
  • 2017年12月27日 15:42
  • 89

Spring data jpa 多表查询(三:多对多关系动态条件查询)

上一章说了,一对多关系,动态条件查询,这章开始说多对多关系模型 1.A  和 B (n : n)意思就是多对多,下面开始在模型中,建立关系 @Entity class A  { @C...
  • jun522450654
  • jun522450654
  • 2017年07月24日 10:03
  • 396

数据库实体之间的关联关系:一对一、一对多、多对多

数据库实体间有三种关联关系:一对一,一对多,多对多。一对一实例:一个学生只有个身份证编号。 一对多实例:一个班级有多个学生。 多对多实例:多对多就是双向一对多,一个学生可以选择多门课,一门课也有多名学...
  • u012234452
  • u012234452
  • 2017年10月23日 23:30
  • 223

数据库学习 - select(多表联查)

多表联合查询 多表联合查询可以通过连接运算实现,而连接运算又可以通过广义笛卡尔积后在进行选择运算来实现。   Select 多表联合查询语句 Select 列名 [[,列名]...] from...
  • linan_pin
  • linan_pin
  • 2017年04月13日 15:12
  • 1610

数据库查询之多表级联查询(join关键字)

查(多表级联查询主要弄懂业务表关系。理解join关键字)  --通过员工ID来查询员工数据 create proc getEmployeeData (  @EmployeeID int...
  • zunguitiancheng
  • zunguitiancheng
  • 2013年05月24日 12:25
  • 1393

oracle数据库之多表联接查询(一)

--此文章可以作为sql脚本直接运行 /*   建表以及插入相关数据,为后面的查询做准备工作 */ --建学生信息表 create table studentinfo(   stuid...
  • prince_li_
  • prince_li_
  • 2012年06月29日 21:08
  • 6055

JDBC上关于数据库中多表操作一对多关系和多对多关系的实现方法

我们知道,在设计一个JAVA bean的时候,要把这些BEAN 的数据存放在数据库中的表结构,然而这些数据库中的表直接又有些特殊的关系,例如员工与部门直接有一对多的关系,学生与老师直接又多对多的关系,...
  • u011990285
  • u011990285
  • 2014年08月09日 16:33
  • 2009

mybatis多对多关联,向关联表插入数据方法

mybatis多对多关联,向关联表插入数据方法: 先向主表插入数据后,根据当前插入数据的ID,来向中间表插入数据 主要sql:   useGeneratedKeys="true"...
  • ziweixinghello
  • ziweixinghello
  • 2013年09月16日 10:07
  • 9907

数据库中多表的连接

连接数据库中的表进行查询、建立视图,可以大大提高去查询数据库数据的效率。连接表进行查询实际上是通过各个表之间共同列的关系来查询数据的,他是关系数据查询最重要的特性。...
  • suneqing
  • suneqing
  • 2014年01月13日 18:33
  • 2637

MYSQL数据库语句之多表操作(三)

多表操作join查询(join按照功能分可以分为3类): cross join(交叉连接):获取多个表中的交叉关系。 inner join(内连接):获取2个表中字段匹配关系的记录。 外连接 lef...
  • qq_33689414
  • qq_33689414
  • 2016年09月06日 18:30
  • 9085
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库(多表关连)
举报原因:
原因补充:

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