Delphi实验报告
发布时间:2016-12-17 10:27:43
发布时间:2016-12-17 10:27:43
实验二Delphi6.0常用组件的使用
一、设计实例:颜色与运动控制
二、使用组件:Panel、Shape、Listbox、Combobox、Checckbox、Botton、Timer
三、设计界面
四、各组件属性设置
1.panel的属性
(1)Align:可以选择panel的位置,此处设置为Altop。
(2)Bevelinner和Bevelouter:设置panel的外形。
(3)Color:选择panel的颜色。
(4)Caption:此属性清空。
2.shape的属性
(1)Shape:改变组件的形状,此处设置为stcircle。
3.listbox的属性
(1)Items:点击省略号,出现编辑框,输入红色、蓝色、黑色、黄色。
4.combobox的属性
(1)Text:清空后可消除combobox1的字样。
(2)Items:此处输入圆形、正方形(用于改变shape组件的形状)。
5.checkbox的属性
(1)Caption=’暂停’
6.button的属性
(1)Caption=’退出’
五、窗体对应代码
procedure TForm1.ListBox1Click(Sender: TObject);
begin
if Listbox1.Selected[0]
then shape1.Brush.Color:=clred;
if Listbox1.Selected[1]
then shape1.Brush.Color:=clblue;
if Listbox1.Selected[2]
then shape1.Brush.Color:=clblack;
if Listbox1.Selected[3]
then shape1.Brush.Color:=clyellow;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
if combobox1.Text='圆形'
then shape1.Shape:=stcircle;
if combobox1.Text='正方形'
then shape1.Shape:=strectangle;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
shape1.Left:=(shape1.Left+10)mod panel1.Width; //此处控制运行速度,改变+10可以改变速度
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
timer1.Enabled:=not checkbox1.Checked;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
六、一些组件补充
listbox组件运行后如果要选中多个选项,则将Extendeselect=true,Multiselect=true就可以选中多个;Enable=false,运行后选项为灰色,不能进行选择;Sorted=true,运行后,在属性items中输入的文字会按英文字母顺序排列。
七、遇到的问题
对一些组件使用不熟悉,写代码时没有注意中英文,一些标点使用了中文形式。
八、运行后界面
实验三初始Delphi数据库程序开发
一、实例:以软件自带数据库DBDEMOS中数据表Biolife,建立一个数据库实例。
二、使用组件:Table、DBImage、DBGrid、Button、DBNavigator、Datasource
三、设计界面
四、组件属性设置
1.Table:TTable控件是用来访问数据库中的数据表,是Delphi提供的的对数据库最简单而快速的访问方式。
(1)table1.databasename=DBDEMOS
Table1.tablename=biolife.ab
Table2.databasename=DBDEMOS
Table2.tablename=country.ab
2.Datasource:TDatasource控件在Delphi数据库应用程序中起着关键的作用,它用来把非可视化的数据集控件与可视的数据控制控件连接在一起。这样数据集中的数据就可以在数据控制控件中显示出来,并且通过数据控制控件可以编辑、删除、增加数据集中的数据。
(1)datasource1.dataset=table1
Datasource2.dataset=table2
3.DBImage:用来显示图片格式的BLOB数据。
(1)datafield=graphic
(2)stretch=true / /显示时出现全部图像
(3)datasource=datasource1
4.DBGrid:Tdbgrid可以实时的将数据源全部数据显示在表格中,并且可以直接编辑数据集中的数据。它通过tdatasource控件和Tdataset控件相连。
5.DBNavigator:每打开一个数据集,都有记录指针指向当前记录,在他tdbgrid控件中表现为表格第一列的小箭头。如果用户希望可以操纵这个指针,就需要此控件。
6.Button
(1)button1.caption=biolife
Button2.caption=country
五、窗体对应代码
procedure TForm1.FormCreate(Sender: TObject);
begin
//table1.Open;
table1.active:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
table1.Close;
table2.close;
dbgrid1.DataSource:=datasource1;
dbnavigator1.DataSource:=datasource1;
table1.Open;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
table1.Close;
table2.close;
dbgrid1.DataSource:=datasource2;
dbnavigator1.DataSource:=datasource2;
table2.Open;
end;
六、运行后界面
七、遇到的问题
连接数据库时没有分清顺序,以至于有些控件无法选择属性
八、数据库系统中各种用户的使用对象关系
九、使用BDE访问数据库的示意图
实验四使用Delphi数据库开发工具
一、实例:建表及设置参照关系
二、1.使用数据库工具:Database Deskbook。2.使用数据库引擎管理器:DBE Administrator。
三、使用组件:DBGrid、DBNavigator、Datasource、Table、Button
四、建表
1.Datasource Desktop:数据库桌面用于生成、重建、查询、编辑数据库以及执行简单的SQL语句,只支持Paradox数据库、dBase数据库、InterBase数据库。
2.启动database desktop,有如下界面
3.file菜单new选项新建table,出现如下界面,点击ok
4.随后出现界面,可以设置表的结构用户可以在field name中输入字段名,在type中单击鼠标右键选择字段类型,双击key可以设置主码。设计好数据库之后,单机save as按钮,选择合适的目录保存即可。
5.打开空表,输入内容,前四张表是父表,后三张表是子表
五、设置参照关系,对参照表进行设置,以teaches表的设置为例
1.首先打开teaches表,点击重构(Restructure)
2.在tableproperties中选择tablelookup
3.点击define,进行如下图的设置,然后点击OK保存
4.设置引用关系
5.其余表格设置按下图关系设置
六、建库
1.打开BDE
2.新建数据库并设置路径
七、设计页面
八、组件属性设置
七个table分别连七张表,datasource也与相应的table互连,dbgrid与dbnavigator属性暂不设置,button按上图修改caption属性
九、窗口代码
procedure TForm1.Button2Click(Sender: TObject);
begin
table2.Close;
table2.Open;
dbgrid1.datasource:=datasource2;
dbnavigator1.datasource:=datasource2;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
table3.Close;
table3.Open;
dbgrid1.datasource:=datasource3;
dbnavigator1.datasource:=datasource3;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
table6.Close;
table6.Open;
dbgrid2.datasource:=datasource6;
dbnavigator2.datasource:=datasource6;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
table1.Close;
table1.Open;
dbgrid1.datasource:=datasource1;
dbnavigator1.datasource:=datasource1;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
table4.Close;
table4.Open;
dbgrid1.datasource:=datasource4;
dbnavigator1.datasource:=datasource4;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
table5.Close;
table5.Open;
dbgrid2.datasource:=datasource5;
dbnavigator2.datasource:=datasource5;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
table7.Close;
table7.Open;
dbgrid2.datasource:=datasource7;
dbnavigator2.datasource:=datasource7;
end;
十、运行后界面,修改上方窗口tno值,下方窗口刷新后值会随之改变
十一、遇到的问题
1.如果完成一个工程将其保存在u盘中,在其他电脑中运行不了?
需要在BDE中重新建一个与工程使用的一模一样的数据库。
2.运行后dbgrid中显示不出数据表?
编程时,不能将table.open放在最后。
实验七Qreport控件及其使用
一、安装QuickReport系列控件
使用Component菜单里Instal package选项,出现如下页面,点击Add,找到计算机c盘program fileBorlanddelphibin中的dclqrt7.0安装。
二、实验步骤
1.打开一个新工程,添加一个quickrep
2.拖拉四个qrband组件到form上,并且将其属性bandtype分别设为rbtitle,rbcolumnheading,rbdetail,rbpagefooter(为了区分,可以color设置四个band成不同颜色)。
3.拖拉一个query组件到form,databasename设置为course。
4.添加两个tqrsysdata组件分别到qrband1和qrband4中,属性data分别设置为qrsreport title和qrspagenumber。
5.添加五个qrlabel到qrband2中,其属性caption分别设置:课程名称、姓名、性别、学号、专业。
6.添加五个qrtext到qrband3中,dataset属性均设置为query1
7.quickrep的dataset属性设置为query1.
三、报表窗口
四、命令出现报表窗口
五、相关属性设置
1.dblookuoconbobox属性设置:keyfield=‘课程名称‘,listfield=’课程名称‘,listsource=datasource1.
2.table属性设置:databasename:course,tablename:课程
3.datasource属性设置:dataset=table1.
六、命令窗口代码
procedure Tformmaster.Button3Click(Sender: TObject); //查看单科选课报表
var
id:string;
begin
if dblookupcombobox1.Text='' then
begin
showmessage('请选择课程');
end;
id:=table1.Lookup('课程名称',dblookupcombobox1.Text,'课程编号');
form7.Query1.Close ;
form7.Query1.SQL.Clear ;
form7.Query1.SQL.Add('select 课程.课程名称,学号课程.学号,学生信息.姓名,学生信息.性别,学生信息.专业 from 学号课程,课程,学生信息 where 学号课程.课程编号=课程.课程编号 and 学号课程.学号 = 学生信息.学号 and 学号课程.课程编号=:id');
form7.Query1.paramByName('id').AsString:=id;
form7.Query1.Open ;
form7.QRDBText1.DataField:='课程名称';
form7.QRDBText2.DataField:='姓名' ;
form7.QRDBText3.DataField:='性别';
form7.QRDBText4.DataField:='学号' ;
form7.QRDBText5.DataField:='专业';
form7.QRSysData1.text:=dblookupcombobox1.Text +'选课学生报表';
form7.QuickRep1.preview;
end;
procedure Tformmaster.FormShow(Sender: TObject);
begin
table1.Open ;
end;
procedure Tformmaster.Button1Click(Sender: TObject); //查看所有选课报表
begin
form7.Query1.Close ;
form7.Query1.SQL.Clear ;
form7.Query1.SQL.Add('select 课程.课程名称,学号课程.学号,学生信息.姓名,学生信息.性别,学生信息.专业 from 学号课程,课程,学生信息 where 学号课程.课程编号=课程.课程编号 and 学号课程.学号 = 学生信息.学号 ');
form7.Query1.Open ;
form7.QRDBText1.DataField:='课程名称';
form7.QRDBText2.DataField:='姓名' ;
form7.QRDBText3.DataField:='性别';
form7.QRDBText4.DataField:='学号' ;
form7.QRDBText5.DataField:='专业';
form7.QRSysData1.text:='所有课程选课学生报表';
form7.QuickRep1.preview;
end;
七、出现问题
1.报表界面中query的sql语句原先在sql语句中填写,运行时出现sql的语句报错。
将语句挪到命令界面的相应按钮中编写,并定义自变量。
2.qrdbtext的赋值问题,原来写成form7.qrdbtext,datafield:=form7.query1。fieldbyname(‘名称‘)。Asstring。
实际为form7.QRDBText1.DataField:='课程名称'。
八、运行结果
实验八综合实例
一、新建表格,分别为课程表(主码为课程编号)、学生信息表、密码表(0000为管理员账号,学生初始密码均为stu)、学号课程表(主码为学号和课程编号),如下图所示。并建一个名为course的数据库与之相连。
二、登录窗体formlogin-unit1
1.是用户用来登录的界面,其窗口如下
2.各控件属性设置
Object Label1:Tlabel
Caption=’用户名’
end
Object Label2:Tlabel
Caption=’密码’
end
Object Edit1:Tedit
PasswordChar=’*’
end
Object Button1:TButton
Caption=’登录’
end
Object Query1:TQuery
DatabaseName=’course’’
end
3.窗体代码
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure Tformlogin.Button1Click(Sender: TObject);
var
pass,user:string;
begin
user:=edit1.text;
pass:=edit2.Text ;
query1.Close;
query1.SQL.Clear ;
query1.sql.add('select * from 密码 where 学号=:a');
query1.ParamByName('a').AsString :=edit1.Text ;
query1.open;
if pass=query1.FieldByName('密码').AsString
then
begin
query1.Close ;
if user='0000' then
begin
edit2.Clear ;
formmaster.showmodal;
end
else
edit2.Clear ;
formstumain.showmodal;
end
else
showmessage('密码错误,请重新输入!');
end;
三、学生用户界面formstumain-unit2
1.学生用户登录成功后,进入学生用户主界面。在这个界面中可以查看自己的选课情况,并进行选课和退选操作。
2.各控件属性设置
Object Label1:Tlabel
Caption=’已选课程’
end
Object DBGrid1:TDBGrid
Datasource=Datasource1
end
Object DBGrid2:TDBGrid
Datasource=Datasource2
end
Object Query1:TQuery
DatabaseName=’course’’
end
Object Query2:TQuery
DatabaseName=’course’’
end
Object Datasource1:TDatasource
Dataset=Query1
end
Object Datasource2:TDatasource
Dataset=Table1
end
Object Table1 :TTable
DatabaseName=’course’
TableName=’课程.db’
end
Object Button1:TButton
Caption=’选课’
end
Object Button2:TButton
Caption=’退选’
end
Object Button3:TButton
Caption=’修改密码’
End
3.窗口代码
implementation
uses unit1,unit4;
{$R *.dfm}
procedure Tformstumain.Button1Click(Sender: TObject);
var
b:string;
begin
b:=table1.fieldbyname('课程编号').AsString ;
query2.Close ;
query2.SQL.Clear ;
query2.sql.add('select * from 学号课程 where 课程编号=:a and 学号=:c');
query2.ParamByName('a').AsString :=table1.fieldbyname('课程编号').asstring ;
query2.ParamByName('c').AsString :=formlogin.Edit1.Text ;
query2.Open ;
if query2.FieldByName('课程编号').AsString=b then
begin
showmessage('课程已选');
end
else begin
query2.Close;
query2.SQL.Clear ;
query2.sql.add('insert into 学号课程 values(:学号, :课程编号)');
query2.params[0].AsString :=formlogin.Edit1.Text ;
query2.Params [1].AsString :=table1.fieldbyname('课程编号').AsString ;
query2.ExecSQL ;
query2.Close;
query1.close;
query1.SQL.Clear ;
query1.sql.Add('select 学号课程.课程编号,课程.课程名称,课程.任课老师,课程.周学时,课程.学分,课程.起始周,课程.结束周,课程.上课地点 from 学号课程 inner join 课程 on(学号课程.课程编号=课程.课程编号) where 学号=:p1');
query1.ParamByName('p1').AsString :=formlogin.Edit1 .text;
query1.open;
end;
end;
procedure Tformstumain.Button3Click(Sender: TObject);
begin
formchpwd.showmodal;
end;
procedure Tformstumain.Button2Click(Sender: TObject);
begin
query2.Close;
query2.SQL.Clear ;
query2.sql.add('delete from 学号课程 where 学号=:p1 and 课程编号=:p3');
query2.parambyname('p1').AsString :=formlogin.Edit1.Text ;
query2.Parambyname('p3').AsString :=query1.fieldbyname('课程编号').AsString ;
query2.ExecSQL ;
query2.Close;
query1.Close ;
query1.SQL.clear;
query1.sql.Add('select 学号课程.课程编号,课程.课程名称,课程.任课老师,课程.周学时,课程.学分,课程.起始周,课程.结束周,课程.上课地点 from 学号课程 inner join 课程 on(学号课程.课程编号=课程.课程编号) where 学号=:p1');
query1.ParamByName('p1').AsString:=formlogin.Edit1.text;
query1.active:=true;
end;
procedure Tformstumain.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
query1.Close ;
end;
procedure Tformstumain.FormShow(Sender: TObject);
begin
table1.Open;
query1.Close ;
query1.SQL.Clear ;
query1.sql.Add('select 学号课程.课程编号,课程.课程名称,课程.任课老师,课程.周学时,课程.学分,课程.起始周,课程.结束周,课程.上课地点 from 学号课程 inner join 课程 on(学号课程.课程编号=课程.课程编号) where 学号=:p1');
query1.ParamByName('p1').AsString :=formlogin.Edit1 .text;
query1.Open ;
end;
四、修改密码界面formchpwd-unit4
1.用来修改学生密码及管理员密码
2.各控件属性
Object Label1:Tlabel
Caption=’用户名’
End
Object Label2:Tlabel
Caption=’旧密码’
PasswordChar=’*’
End
Object Label3:Tlabel
Caption=’新密码’
PasswordChar=’*’
End
Object Label4:Tlabel
Caption=’确认密码’
PasswordChar=’*’
End
Object Button1:TButton
Caption=’修改’
End
Object Query1:TQuery
DatabaseName=’course’’
end
3.窗口代码
procedure Tformchpwd.Button1Click(Sender: TObject);
var
p2,p3,p4:string;
begin
p3:=edit3.Text;
p4:=edit4.Text;
p2:=edit2.Text ;
query1.close;
query1.SQL .clear;
query1.sql.add('select * from 密码 where 学号=:a');
query1.ParamByName('a').AsString :=edit1.Text ;
query1.open;
if p2=query1.FieldByName ('密码').AsString
then
begin if p3 =''
then
begin
showmessage('请输入新密码');
end;
if p4 =''
then
begin
showmessage('请确认密码');
end;
if p3=p4
then
begin
query1.close;
query1.sql.clear;
query1.SQL.Add('update 密码 set 密码=:b where 学号=:c');
query1.ParamByName('b').AsString :=edit3.Text ;
query1.ParamByName('c').AsString :=edit1.Text ;
query1.ExecSQL ;
query1.Close ;
edit1.Clear ;
edit2.Clear;
edit3.Clear;
edit4.Clear;
showmessage('密码修改成功');
formchpwd.Close ;
end
else
showmessage('两次密码不一致');
end
else
showmessage('旧密码不正确,请重新输入');
end;
五、管理员界面formmaster-unit3
1.设计页面
2.各控件属性设置
Object Button1:TButton
Caption=’查看所有选课报表’
End
Object Button2:TButton
Caption=’修改管理员密码’
End
Object Button3:TButton
Caption=’查看单科选课报表’
End
Object Button5:TButton
Caption=’修改学生密码’
End
Object Button6:TButton
Caption=’查看个人信息及选课情况’
End
Object Table1 :TTable
DatabaseName=’course’
TableName=’课程.db’
end
Object Datasource1:TDatasource
Dataset=Table1
end
Object DBLookupCombobox1:TDBLookuoCombobox
KeyField=’课程名称’
ListField=’ 课程名称’
ListSource=Datasource1
End
3.窗口代码
implementation
uses unit4,unit5,unit6,unit7;
{$R *.dfm}
procedure Tformmaster.Button2Click(Sender: TObject);
begin
formchpwd.Showmodal;
end;
procedure Tformmaster.Button5Click(Sender: TObject);
begin
formfchpwd.table1.Open ;
formfchpwd.showmodal;
end;
procedure Tformmaster.Button6Click(Sender: TObject);
begin
form6.show;
end;
procedure Tformmaster.Button3Click(Sender: TObject);
var
id:string;
begin
if dblookupcombobox1.Text='' then
begin
showmessage('请选择课程');
end;
id:=table1.Lookup('课程名称',dblookupcombobox1.Text,'课程编号');
form7.Query1.Close ;
form7.Query1.SQL.Clear ;
form7.Query1.SQL.Add('select 课程.课程名称,学号课程.学号,学生信息.姓名,学生信息.性别,学生信息.专业 from 学号课程,课程,学生信息 where 学号课程.课程编号=课程.课程编号 and 学号课程.学号 = 学生信息.学号 and 学号课程.课程编号=:id');
form7.Query1.paramByName('id').AsString:=id;
form7.Query1.Open ;
form7.QRDBText1.DataField:='课程名称';
form7.QRDBText2.DataField:='姓名' ;
form7.QRDBText3.DataField:='性别';
form7.QRDBText4.DataField:='学号' ;
form7.QRDBText5.DataField:='专业';
form7.QRSysData1.text:=dblookupcombobox1.Text +'选课学生报表';
form7.QuickRep1.preview;
end;
procedure Tformmaster.FormShow(Sender: TObject);
begin
table1.Open ;
end;
procedure Tformmaster.Button1Click(Sender: TObject);
begin
form7.Query1.Close ;
form7.Query1.SQL.Clear ;
form7.Query1.SQL.Add('select 课程.课程名称,学号课程.学号,学生信息.姓名,学生信息.性别,学生信息.专业 from 学号课程,课程,学生信息 where 学号课程.课程编号=课程.课程编号 and 学号课程.学号 = 学生信息.学号 ');
form7.Query1.Open ;
form7.QRDBText1.DataField:='课程名称';
form7.QRDBText2.DataField:='姓名' ;
form7.QRDBText3.DataField:='性别';
form7.QRDBText4.DataField:='学号' ;
form7.QRDBText5.DataField:='专业';
form7.QRSysData1.text:='所有课程选课学生报表';
form7.QuickRep1.preview;
end;
六、修改学生密码界面formfchpwd-unit6
1.设计界面
2.各控件属性设置
Object Label1:Tlabel
Caption=’请选择要修改的用户名’
End
Object Label2:Tlabel
Caption=’新密码’
PasswordChar=’*’
End
Object Label3:Tlabel
Caption=’确认密码’
PasswordChar=’*’
End
Object Button1:TButton
Caption=’修改’
End
Object DBLookupCombobox1:TDBLookuoCombobox
KeyField=’姓名’
ListSource=Datasource1
End
Object Table1 :TTable
DatabaseName=’course’
TableName=’学生信息.db’
end
Object Datasource1:TDatasource
Dataset=Table1
end
Object Query1:TQuery
DatabaseName=’course’’
end
3.窗口代码
procedure Tformfchpwd.Button1Click(Sender: TObject);
var
id:string;
begin
if dblookupcombobox1.Text ='' then
begin
showmessage('请选择学生');
end;
id:= table1.Lookup('姓名',dblookupcombobox1.Text ,'学号');
if edit1.Text =edit2.Text then
begin
query1.Close ;
query1.SQL.Clear ;
query1.SQL.Add('update 密码 set 密码=:b where 学号=:c');
query1.ParamByName('b').AsString :=edit1.Text ;
query1.ParamByName('c').AsString :=table1.Lookup('姓名',dblookupcombobox1.Text ,'学号');
query1.ExecSQL ;
query1.Close ;
showmessage('修改成功');
formfchpwd.Close ;
end
else
showmessage('两个密码不同,请重新输入');
end;
七、查看个人信息及选课情况form6-unit6
1.设计页面
2.各属性设置
Object Label1:Tlabel
Caption=’请选择查询方式’
End
Object Label2:Tlabel
Caption=’学号’
End
Object Label3:Tlabel
Caption=’姓名’
End
Object Label4:Tlabel
Caption=’已选课程’
End
Object Label5:Tlabel
Caption=’个人信息’
End
Object ComboBox1:Tcombobox
Text=’’
Items=’学号、姓名’
End
Object Button1:TButton
Caption=’查询’
End
Object Query1:TQuery
DatabaseName=’course’’
end
Object Query2:TQuery
DatabaseName=’course’’
end
Object Datasource1:TDatasource
Dataset= Query1
end
Object Datasource2:TDatasource
Dataset= Query2
end
Object DBGrid1:TDBGrid
Datasource=Datasource1
end
Object DBGrid2:TDBGrid
Datasource=Datasource2
end
3.窗口代码
procedure TForm6.Button1Click(Sender: TObject);
begin
if combobox1.Text ='' then
begin
showmessage('请选择查询方式');
end
else
begin
case combobox1.ItemIndex of
0: begin
query1.Close ;
query1.SQL .clear;
query1.SQL.Add (' select 学号课程.课程编号,课程.课程名称,课程.任课老师,课程.周学时,课程.学分,课程.起始周,课程.结束周,课程.上课地点 from 学号课程 inner join 课程 on 学号课程.课程编号=课程.课程编号 where 学号 =:a');
query1.ParamByName('a').AsString :=edit1.Text ;
query1.open;
query2.Close ;
query2.SQL.Clear ;
query2.SQL.Add('select * from 学生信息 where 学号 =:b');
query2.ParamByName('b').AsString :=edit1.Text ;
query2.Open ;
edit1.Clear ;
end;
1: begin
query1.Close ;
query1.SQL .clear;
query1.SQL.Add (' select 学号课程.课程编号,课程.课程名称,课程.任课老师,课程.周学时,课程.学分,课程.起始周,课程.结束周,课程.上课地点 from 学号课程 ,课程,学生信息 where 学号课程.课程编号 = 课程.课程编号 and 学号课程.学号 = 学生信息.学号 and 姓名=:a');
query1.ParamByName('a').AsString :=edit2.Text ;
query1.open;
query2.Close ;
query2.SQL.Clear ;
query2.SQL.Add('select * from 学生信息 where 姓名=:b');
query2.ParamByName('b').AsString :=edit2.Text ;
query2.Open ;
edit2.Clear ;
end;
end;
end;
end;
八、生成报表界面form7-unit7
1.设计页面
2.各控件属性设置
Object Query1:TQuery
DatabaseName=’course’’
end
Object QRLabel1:TQRlabel
Caption=’课程名称’
End
Object QRLabel2:TQRlabel
Caption=’姓名’
End
Object QRLabel3:TQRlabel
Caption=’性别’
End
Object QRLabel4:TQRlabel
Caption=’学号’
End
Object QRLabel5:TQRlabel
Caption=’专业’
End
Object QRDBText1:TQRDBText
Dataset=Query1
End
Object QRDBText2:TQRDBText
Dataset=Query1
End
Object QRDBText3:TQRDBText
Dataset=Query1
End
Object QRDBText4:TQRDBText
Dataset=Query1
End
Object QRDBText5:TQRDBText
Dataset=Query1
End
Object QRsysdata1:TQRsysdata
Data=qrsreporttitle
End
Object QRsysdata2:TQRsysdata
Data=qrspagenumber
End
Object Quivkrep1:Tquickrep
Dataset=query1
End
九、遇到的问题
1.经常出现invaild use keyword的报错。
可能是程序中使用了程序中的关键字、sql语句编写错误
2.formstumain界面,学生登录后显示不了已选课程。
在form的onshow事件中编写query的打开程序。
3.修改密码的程序中出现错误。
使用了多层的if语句,但begin和end不对等。
4. qrdbtext的赋值问题,原来写成form7.qrdbtext,datafield:=form7.query1。fieldbyname(‘名称‘)。Asstring。
实际为form7.QRDBText1.DataField:='课程名称'。