本人正设计一个简单的学生信息管理系统,其中利用SQL SERVER建立了一个表,表中的字段为:stu_ID,stu_name,cou_ID,cou_name,credit.score.
SQL SERVER已经和系统建立好了连接.
我想实现的功能是通过选择统计方式,即:通过stu_ID和stu_name两种方式实现统计,为此加入了一个combobox1控件.接下来是建立一个EDIT1控件,用来输入stu_ID或者stu_name值.
再就是一个EDIT2,用来显示统计结果,结果为该学生所修每门课程的学分的总和,注意有个限制条件是该门课程的score必须大于等于60,既要及格.
自己写的代码如下:procedure TForm1.Button1Click(Sender: TObject);
var
f,f1,f2:string;
begin
f1:=combobox1.text;
f2:=edit2.text;
if f2='' then
begin
showmessage('请输入统计值!');
end
else
begin
f:='select sum(credit) from score where'+f1+'='+#39+f2+#39+'and score>=60';
form1.adoquery1.close;
form1.adoquery1.SQL.clear;
form1.adoquery1.SQL.add(f);
form1.adoquery1.open;
if adoquery1.recordcount=0 then
showmessage('该学生已修学分为0!')
else
.......
else后面的代码就不清楚怎么写了,请高人帮我写完,要简易可行。如果本人前面写的代码有不对的地方,可以指出并帮助修改。分不够的话可以再接,只要能帮我做出来。谢了!
SQL SERVER已经和系统建立好了连接.
我想实现的功能是通过选择统计方式,即:通过stu_ID和stu_name两种方式实现统计,为此加入了一个combobox1控件.接下来是建立一个EDIT1控件,用来输入stu_ID或者stu_name值.
再就是一个EDIT2,用来显示统计结果,结果为该学生所修每门课程的学分的总和,注意有个限制条件是该门课程的score必须大于等于60,既要及格.
自己写的代码如下:procedure TForm1.Button1Click(Sender: TObject);
var
f,f1,f2:string;
begin
f1:=combobox1.text;
f2:=edit2.text;
if f2='' then
begin
showmessage('请输入统计值!');
end
else
begin
f:='select sum(credit) from score where'+f1+'='+#39+f2+#39+'and score>=60';
form1.adoquery1.close;
form1.adoquery1.SQL.clear;
form1.adoquery1.SQL.add(f);
form1.adoquery1.open;
if adoquery1.recordcount=0 then
showmessage('该学生已修学分为0!')
else
.......
else后面的代码就不清楚怎么写了,请高人帮我写完,要简易可行。如果本人前面写的代码有不对的地方,可以指出并帮助修改。分不够的话可以再接,只要能帮我做出来。谢了!
解决方案 »
- 字符串转化为时间格式出错
- 我想用ASP读写网站数据库,但怎么和Delphi进行数据库记录交换呢,请帮忙指导一下找个方法
- ffmpeg能合并音频文件吗?
- 谁能给我发一个类型系统自带的"超级终端"的程序
- ImageEnVect 中的对象 合并保存为jpg问题
- 用过DevExpress Grid Suite的请进
- 怎样用鼠标拷贝一些不给拷贝的页面?----在线等!
- 我想问一下,CSDN社区的版本是什么?
- 有没有可以去掉文件后缀名的函数,比如"file.bmp"==>"file"?
- ●●●●●●●●100分求解。关于adodataset●●●●●●●●
- 百分赠难题——关于注释
- 高分求怎样用table1的记录来动态建立mainMenu中n50下的子菜单呢?(UP有分)
while not eod then
begin
count+=adoquery1.fields(credit);
adoqruery1.next;
end;
这样作和不是很好吗.至于你有什么要求都可以在中间加的吗.
表名:score
stu_ID,stu_name,cou_ID,cou_name(varchar类型)
credit(int类型)代码(通过,没问题。可再添加一些错误处理代码):
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB;type
TForm1 = class(TForm)
ADOQuery1: TADOQuery;
ComboBox1: TComboBox;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
f,f1,f2:string;
begin
f1:=combobox1.text;
f2:=trim(edit1.text); //edit2不是用来显示统计结果的吗
if f2='' then
begin
showmessage('请输入统计值!');
end
else
begin
//(1)最后的score改为credit(应该是笔误吧)
//(2)注意where后和and前的空格
f:='select sum(credit) as SumCredit from score where '+f1+'='+#39+f2+#39+' and credit>=60';
adoquery1.close;
adoquery1.SQL.clear;
adoquery1.SQL.add(f);
adoquery1.open;
edit2.Text := adoquery1.Fields[0].AsString ;
end;
end;end.