关于SQL语句的问题 ( 积分: 20 )

  • 主题发起人 主题发起人 crownboy
  • 开始时间 开始时间
C

crownboy

Unregistered / Unconfirmed
GUEST, unregistred user!
今天写了下列的代码
var
ColumnName,sqlstr:String;
ColumnTotal:Integer;
begin
with TADOQuery.Create(nil) do
begin
Connection := Form1.ADOConnection1;
try
close;
sql.Clear;
sql.Add('select * from 人才数据库');
open;
ColumnName := fields.Fields[1].FieldName;
sqlstr := 'select count(distinct '''+ColumnName+''') as '''+ColumnName+''' from 人才数据库';
sql.Clear;
sql.Add(sqlstr);
open;
ColumnTotal := fieldbyname(ColumnName).Value;
LabeledEdit1.Text := inttostr(ColumnTotal);
finally
free;
end;
end;
end;
LabeledEdit1.Text的值 总是显示 1 当我把 distinct 去掉后 就能显示正确的行数,但是我现在要的是唯一值的个数,问题是出在什么地方??
 
ColumnName := fields.Fields[1].FieldName;
是不是應該改下啊?
 
ColumnName 这个变量是要改变的,用来查不同字段的值,
ColumnName := fields.Fields[1].FieldName;主要是用来测试一下,这个时候的字段的 '姓名' 姓名是不唯一的 有重复的, 当去掉 distinct 的时候,就能返回正确的行数,但是加上后就不行,只返回 1 .
但是把 '''+ColumnName+''' 换成 '姓名' 后 又能正确的返回值.难道是 distinct 不能修饰变量值吗?
 
'+ColumnName+'去掉一对引号,用引号是值了不是字段名了,值都一样的肯定显示1
 
distinct 后面请不要加单引号。。那是个字段。。不是字符串
 
谢谢上面两位大哥了~~~问题解决了!
 
楼上说的正确
sqlstr := 'select count(distinct '+ColumnName+') as '''+ColumnName+''' from 人才数据库';
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
664
import
I
I
回复
0
查看
566
import
I
后退
顶部