delphi中DBGrid与memo问题,其中数据库用的是SQL Server 2000

要求显示:张三 历史不合格 英语不合格 化学不合格
王二 数学不合格 历史不合格 英语不合格 化学不合格
请问代码该怎么写?

第1个回答  2013-05-04
大概思路,找出至少一门不及格的数据记录,把全部及格的给屏蔽了,减少工作量。
循环逐条来输出到memo
大概写,根据实际控件的名字自己改吧。
//声明变量;
var
sqlstr,temp_str:string;

//解释:qry1是ADOquery,

sqlstr:='select * from 表名 where (数学<60)or(历史<60)or(英语<60)or(化学<60) ';
with qry1 do
begin
sql.clear;
sql.add(sqlstr);
sql.open;
first;
memo1.clear;

while not eof do
begin
temp_str=fieldbyname('姓名').asstring;

if fieldbyname('数学').asinteger<60 then
temp_str=temp_str+' 数学不及格';

if fieldbyname('历史').asinteger<60 then
temp_str=temp_str+' 历史不及格';

if fieldbyname('英语').asinteger<60 then
temp_str=temp_str+' 英语不及格';

if fieldbyname('化学').asinteger<60 then
temp_str=temp_str+' 化学不及格';

memo1.lines.add(temp_str);
next;
end;

end;
//没有测试,希望有帮助。
第2个回答  2013-05-04
var s:string;
begin
Memo1.Clear;
while (not ADOQuery1.Eof) do
begin
if (ADOQuery1.FieldByName('姓名').Text<>'') then
begin
s:=ADOQuery1.FieldByName('姓名').Text+':';
if StrToInt(ADOQuery1.FieldByName('数学').Text)<60 then
begin
s:=s+'/数学不及格';
end;
if StrToInt(ADOQuery1.FieldByName('历史').Text)<60 then
begin
s:=s+'/历史不及格';
end;
if StrToInt(ADOQuery1.FieldByName('英语').Text)<60 then
begin
s:=s+'/英语不及格';
end;
if StrToInt(ADOQuery1.FieldByName('化学').Text)<60 then
begin
s:=s+'/化学不及格';
end;
end;
if (s<>ADOQuery1.FieldByName('姓名').Text+':') and (s<>'') then
Memo1.Lines.Add(s);
s:='';
ADOQuery1.Next;
end;
end;本回答被提问者采纳

delphi中DBGrid与memo问题,其中数据库用的是SQL Server 2000
大概思路,找出至少一门不及格的数据记录,把全部及格的给屏蔽了,减少工作量。循环逐条来输出到memo 大概写,根据实际控件的名字自己改吧。\/\/声明变量;var sqlstr,temp_str:string;\/\/解释:qry1是ADOquery,sqlstr:='select * from 表名 where (数学<60)or(历史<60)or(英语<60)or(化学<60) ...

delphi中,为什么dbgrid不能显示memo字段里的内容.
MEMO字段内容太多,在表格中放不下,所以DBGRID没有这项功能。

Delphi 数据库问题
其实 ,在sql中建表,申明为 varchar(20)不用 nvarchar(20),这样就可以了。注意,建立好链接后,Table你可以双击进入,create all fields看看。

delphi中想打开一个数据库中的表文件 用哪种组件(table‘memo’label...
用DBGRID读取表 从括号里选,那只能一行行显示在memo中了。

关于Delphi里DBGrid组件内,如何产生一组随机时间的问题? 急急急,在 ...
Randomize;for i:=1 to 20 do begin edit2.Text:= formatdatetime('yyyymmdd',strtodate('2013\/01\/01')+(math.RandomRange(10,360)));self.Memo1.Lines.Add(edit2.Text);end;

delphiscrollbox滚动条拉到底
1、文本控件的滚动条会根据你增加的文本,自动滚动到底端。如MEMO,RICH。2、是数据库类的组件滚动条,需要你自己定位到底端。如DBGRID,将你连接的数据记录集直接滚动到最后一条数据即可。

在delphi中常用的组件有哪一些啊?连接数据库的办法有那些?
一般用ado常用组件有:tlable,tedit,tcombox,tmemo,tbutton,tcheckbox,tradiobutoon,等连数据库的控件会鄙人面连接数据库时用到。最简单的办法是:1.在DELPHI中添加adoconnection 控件。连到你要修改的数据库,active属性改成true,解释数据库连接成功6.这时,你修改列表框中的值后,鼠标点另一行后,...

求Delphi 编的小程序,本人用来交作业,程序不需要太过繁琐,只需要涉及基 ...
DataMod.ado2.SQL.add('''+memo1.Text+''',');DataMod.ado2.SQL.add('''+edit9.Text+''')');DataMod.ado2.ExecSQL;Application.ProcessMessages;showmessage('员工添加成功!');DBGrid1.Refresh;except showmessage('添加员工时出现错误,请核对数据是否正确!');end;DBGrid1.Refresh;Application...

VC++和Delphi那个好用些?那个比较容易学?
又是由著名的Delphi控件厂商Developer Express出品的超级Grid控件。主要应用于数据库的操作使用方面。功能强悍,有许多的“独门武功”。呵呵,如果借用围棋的段位来评分的话,这个控件的水平恐怕还在九段之上。堪称超一流。就算是同样的商业控件中,在操作数据库方面,比ExpressQuantumGrid强的恐怕还没生出来。如果再配上同门...

Delphi的kbmMemTable控件与AdoQuery有什么区别
2. 调用kbmMemTable.FidldDefs对象的Add方法向数据库表中添加字段。Add的方法和Delphi相同。 3. 使用kbmMemTable.IndexDefs.Add()方法定义索引。Add的方法和Delphi相同。 4. 调用kbmMemTable的CreateTable。 重要的区别:因为kbmMemTable不需要BDE的支持。所以不要指明DatabaseName, TableName和TableType三个属性。

相似回答