Query.sql.text赋值不能超过255吗?! (50分)

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

CGN

Unregistered / Unconfirmed
GUEST, unregistred user!
如果是真的,如何做才能给.sql赋值?
我只需要知道怎样给sql赋值长过256就行了。[:)]
 
完全可以超过,只是delphi编辑器限制每行连续字符串不能超过255个.要改用加号连接.
况且,query.sql.add 可以自己分行添加.随便你了.
 
完全可以,
 
帮我看一下面的代码。要分行add似乎太罗嗦了,有没有更好的[:(]
有没有其它代码代替" union……”后面的代码功能乜。
var
d1:integer;
dh1,dh2,s:string;
sqls:ansistring;
begin
Qgz1.Close;
qgz1.SQL.Clear;
sqls:='SELECT lb 类别,bmdh 部门代号, bm 部门,bh 编号, name 姓名, '
+'bt1 基础, bt2 职务, bt3 级别, bt4 工龄, bt5 暂保贴, bt6 开放区, bt7 下基层, bt8 岗位, bt9 技术, bt10 其它, bt11 医疗, bt12 房贴, bt13 活津贴, bt14 计生补, bt15 煤气, bt16 生活补贴, bt17 加班工资,'
+'yfhj 应发合计,'
+'kf1 会费,'
+'kf2 公积,'
+'kf3 房租,'
+'kf4 水电,'
+'kf5 养老金,'
+'kf6 医保费,'
+'kf7 所得税,'
+'kf8 事假工资,'
+'kf9 防洪保安,'
+'kf10 教育附加,'
+'kf11 送温捐款 ,'
+'kfhj 扣发合计, sfgz 实发工资 '
+'FROM dbo.gz1_bak Dbo_gz1_bak '
+'where ((nian*12+yue) = (:t1)) '
+' and (bmdh between :b1 and :b2) '
+'union '
+'SELECT '''','''', '''',''合计'', '''', '//到下面一行就出错了
//提示:"[Error] U_print_gzb.pas(155): String literals may have at most 255 elements"
+'sum(bt1) 基础, sum(bt2) 职务, sum(bt3) 级别, sum(bt4) 工龄, sum(bt5) 暂保贴, sum(bt6) 开放区, sum(bt7) 下基层, sum(bt8) 岗位, sum(bt9) 技术, sum(bt10) 其它, sum(bt11) 医疗, sum(bt12) 房贴, sum(bt13) 活津贴, sum(bt14) 计生补, sum(bt15) 煤气, sum(bt16) 生活补贴, sum(bt17) 加班工资,'
+'sum(yfhj) 应发合计,'
+'sum(kf1) 会费,'
+'sum(kf2) 公积,'
+'sum(kf3) 房租,'
+'sum(kf4) 水电,'
+'sum(kf5) 养老金,'
+'sum(kf6) 医保费,'
+'sum(kf7) 所得税,'
+'sum(kf8) 事假工资,'
+'sum(kf9) 防洪保安,'
+'sum(kf10) 教育附加,'
+'sum(kf11) 送温捐款 ,'
+'sum(kfhj) 扣发合计, sum(sfgz) 实发工资 '
+'FROM dbo.gz1_bak Dbo_gz1_bak '
+'where ((nian*12+yue) = (:t1)) '
+' and (bmdh between :b1 and :b2) '
+'ORDER BY nian,yue,bmdh,bh';
 
这样的简单的问题浪费分。试一下就知。[:D]
 
to:hong2002
试过了,连ansistring都用了。[:(]
 
to:CGN,
你这样写代码会看死人的,能写成存储过程好看些
 
每行加个#13、#10什么的试试
 
>>:majorsoft
我需要动态改变SQL的值,存储过程好像不行。
我只需要知道怎样给sql赋值长过256就行了。[:)]
 
不过这么复杂最好还是写出存储过程比较好
 
Qgz1.Close;
qgz1.SQL.Clear;
qgz1.SQL.add('SELECT lb 类别,bmdh 部门代号, bm 部门,bh 编号, name 姓名, ');
qgz1.SQL.add('bt1 基础, bt2 职务, bt3 级别, bt4 工龄, bt5 暂保贴, bt6 开放区,');
qgz1.SQL.add('bt7 下基层, bt8 岗位, bt9 技术, bt10 其它, bt11 医疗, bt12 房贴,');
qgz1.SQL.add('bt13 活津贴, bt14 计生补, bt15 煤气, bt16 生活补贴, bt17 加班工资,');
qgz1.SQL.add('yfhj 应发合计,');
qgz1.SQL.add('kf1 会费,');
qgz1.SQL.add('kf2 公积,');
qgz1.SQL.add('kf3 房租,');
qgz1.SQL.add('kf4 水电,');
qgz1.SQL.add('kf5 养老金,');
qgz1.SQL.add('kf6 医保费,');
qgz1.SQL.add('kf7 所得税,');
qgz1.SQL.add('kf8 事假工资,');
qgz1.SQL.add('kf9 防洪保安,');
qgz1.SQL.add('kf10 教育附加,');
qgz1.SQL.add('kf11 送温捐款 ,');
qgz1.SQL.add('kfhj 扣发合计, sfgz 实发工资 ');
qgz1.SQL.add('FROM dbo.gz1_bak Dbo_gz1_bak ');
qgz1.SQL.add('where ((nian*12+yue) = (:t1)) ');
qgz1.SQL.add(' and (bmdh between :b1 and :b2)');
qgz1.SQL.add('union ');
qgz1.SQL.add('SELECT '''','''', '''',''合计'', '''', ');
qgz1.SQL.add('sum(bt1) 基础, sum(bt2) 职务, sum(bt3) 级别, sum(bt4) 工龄,');
qgz1.SQL.add(' sum(bt5) 暂保贴, sum(bt6) 开放区, sum(bt7) 下基层,')

qgz1.SQL.add('sum(bt8) 岗位, sum(bt9) 技术, sum(bt10) 其它, sum(bt11) 医疗,')

qgz1.SQL.add('sum(bt12) 房贴, sum(bt13) 活津贴, sum(bt14) 计生补, ');
qgz1.SQL.add('sum(bt15) 煤气, sum(bt16) 生活补贴, sum(bt17) 加班工资,');
qgz1.SQL.add('sum(yfhj) 应发合计,');
qgz1.SQL.add('sum(kf1) 会费,');
qgz1.SQL.add('sum(kf2) 公积,');
qgz1.SQL.add('sum(kf3) 房租,');
qgz1.SQL.add('sum(kf4) 水电,');
qgz1.SQL.add('sum(kf5) 养老金,');
qgz1.SQL.add('sum(kf6) 医保费,');
qgz1.SQL.add('sum(kf7) 所得税,');
qgz1.SQL.add('sum(kf8) 事假工资,');
qgz1.SQL.add('sum(kf9) 防洪保安,');
qgz1.SQL.add('sum(kf10) 教育附加,');
qgz1.SQL.add('sum(kf11) 送温捐款 ,');
qgz1.SQL.add('sum(kfhj) 扣发合计, sum(sfgz) 实发工资 ');
qgz1.SQL.add('FROM dbo.gz1_bak Dbo_gz1_bak ');
qgz1.SQL.add('where ((nian*12+yue) = (:t1)) ');
qgz1.SQL.add(' and (bmdh between :b1 and :b2) ');
qgz1.SQL.add('ORDER BY nian,yue,bmdh,bh');
 
sqls:string;
就可以了,
qgz1.SQL.text:=sqls;
我处理分行就是这样用的啊,多长都可以的
'sum(bt1) 基础, sum(bt2) 职务, sum(bt3) 级别, sum(bt4) 工龄, sum(bt5) 暂保贴, sum(bt6) 开放区, sum(bt7) 下基层, sum(bt8) 岗位, sum(bt9) 技术, sum(bt10) 其它, sum(bt11) 医疗, sum(bt12) 房贴, sum(bt13) 活津贴, sum(bt14) 计生补, sum(bt15) 煤气, sum(bt16) 生活补贴, sum(bt17) 加班工资,'的长度肯定超过255了
 
+'SELECT '''','''', '''',''合计'', '''', '//到下面一行就出错了
//"[Error] U_print_gzb.pas(155): String literals may have at most 255 elements"
+'sum(bt1) 基础, sum(bt2) 职务, sum(bt3) 级别, sum(bt4) 工龄, sum(bt5) 暂保贴,'
+'sum(bt6) 开放区, sum(bt7) 下基层, sum(bt8) 岗位, sum(bt9) 技术, sum(bt10) 其它,'
+'sum(bt11) 医疗, sum(bt12) 房贴, sum(bt13) 活津贴, sum(bt14) 计生补, sum(bt15) 煤气, sum(bt16) 生活补贴, sum(bt17) 加班工资,'
+'sum(yfhj) 应发合计,'
 
TO:ghb1974
你是对的,编译器不允许一行代码超过256字节。
我还以为是string的问题,绕了一大圈。
还有有没有其它代码代替" union……”后面的代码功能乜。
 
寫存儲過程
 
后退
顶部