sql问题求教,很急!(50分)

  • 主题发起人 puremoonstone
  • 开始时间
P

puremoonstone

Unregistered / Unconfirmed
GUEST, unregistred user!
我的“承付单表”中有一字段“付款编号”,它的生成规则是:
FK+年份的后两位+大付款编号+小付款编号
大付款编号是记录用户所支付的款项的笔数,小付款编号是记录用户支付一笔款项的次数(
因为可能分多次支付)
付款编号如下:
FK01-1-1,FK01-1-2,FK01-1-3,FK01-2-1,FK01-3-1,...,FK01-100-1,FK01-100-2,...
我想从表中找出大付款编号的最大值
我想先从"FK01-1-3"中得到“1-3”,
a=substring(付款编号,charindex('-',付款编号)+1,len(付款编号))
再从“1-3”中得到“1”
b=substring(a,1,charindex('-',a)-1)
合起来就是
Select Max(convert(int,Substring(substring(付款编号,charindex('-',付款编号)+1,len(付款编号)),1,charindex('-',substring(付款编号,charindex('-',付款编号)+1,len(付款编号)))-1))) as MaxID From 承付单表
我在SQL SERVER中调试成功,但在delphi中提示错误,
[Error] payform.pas(341): Operator not applicable to this operand type
请问该怎么改呢?
程序如下:
with querytemp do
begin
with sql do
begin
close;
clear;
text:='Select Max(convert(int,Substring(substring(付款编号,charindex('-',付款编号)+1,len(付款编号)),1,charindex('-',substring(付款编号,charindex('-',付款编号)+1,len(付款编号)))-1))) as MaxID From 承付单表';
end;
open;
end;
很急!谢谢!
 
你首先不要在DELPHI中试这一句,在SQL SERVER的客户端直接用SQL试试这一句能不能通过,
再想到在DELPHI中试吧.你能在SQL SERVER中能直接用的,在DELPHI中也能用.就要仔细看看
有没有哪儿写错了.
 
convert使用错误,请先把年按二位字符串取出,再转换成整形,不知行否
 
以上语句在SQL SERVER中确实能用,我反复试过。但在delphi中编译时就出错。
 
单引号改为双引号,即text:='Select Max(convert(int,Substring(substring(付款编号,charindex("-",付款编号)+1,len(付款编号)),1,charindex("-",substring(付款编号,charindex("-",付款编号)+1,len(付款编号)))-1))) as MaxID From 承付单表';
 
接受答案了.
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部