delphi中如何把sql中变量的值赋给全局变量
我在adoquery中写了SELECT*,@a=(casewhenyaer(a.get_date_tax)>=2007then0.6else1end)然后想把@a的值赋给...
我在adoquery中写了SELECT *, @a=(case when yaer(a.get_date_tax)>=2007 then 0.6 else 1 end)然后想把@a的值赋给一个全局变量a.....@a是我在adoquery中声明的变量
(我是菜鸟写的有点乱).
我的表a中有id、get_date_tax、jine等字段,id有重复get_date_tax也有重复,但是两个都定下来就没有重复了,现在我想统计每个id下的jine总数zje,当yaer(a.get_date_tax)>=2007 时只加jine的60%,否则全部加上去。不知道这样明白了没?
PS:怎么在自己的问题下跟贴啊? 展开
(我是菜鸟写的有点乱).
我的表a中有id、get_date_tax、jine等字段,id有重复get_date_tax也有重复,但是两个都定下来就没有重复了,现在我想统计每个id下的jine总数zje,当yaer(a.get_date_tax)>=2007 时只加jine的60%,否则全部加上去。不知道这样明白了没?
PS:怎么在自己的问题下跟贴啊? 展开
展开全部
这段SQL是什么?触发器吗?结构看上去好诡异啊
虽然通过你的解释我大概明白是怎么回事了 ,但是这段SQL。。。说实在话 我真不懂,可以麻烦你把部分代码放上来不?
用两个DBGRID简单的实现了你的要求
procedure TForm1.Button1Click(Sender: TObject);
Var SumResult:double;//计算总的金额
Temp:double;//获取当前记录的金额
TempID:Integer;//获取当前记录ID
TempDate:TDate;//获取当前记录日期
i:Integer;
begin
AdoQuery1.Open;
AdoQuery1.First;
AdoQuery2.Close;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Delete * from collectResult');
AdoQuery2.ExecSQL;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Select * from collectResult');
AdoQuery2.Open;
AdoQuery2.First;
with AdoQuery2 do
begin
SumResult:=0;
DbGrid1.DataSource.DataSet.First;
TempID:= DbGrid1.Fields[0].Value;
for i:= 0 to AdoQuery1.RecordCount -1 do
begin
TempDate:=DbGrid1.Fields[2].AsDateTime;
Temp:=DbGrid1.Fields[1].AsFloat;
if TempDate < StrToDate('2007-1-1') then
begin
SumResult:=Temp+SumResult;
end
else
begin
SumResult:=Temp*0.6+SumResult;
end;
if TempID = DbGrid1.Fields[0].Value then
begin
Edit;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end
else
begin
SumResult:= Temp;
TempID:=DbGrid1.Fields[0].Value;
Insert;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end;
Post;
DbGrid1.DataSource.DataSet.Next;
end;
end;
end;
呵呵 才学 程序写的很难看 而且也不知道你要做的是什么 只是做了个你要的操作
虽然通过你的解释我大概明白是怎么回事了 ,但是这段SQL。。。说实在话 我真不懂,可以麻烦你把部分代码放上来不?
用两个DBGRID简单的实现了你的要求
procedure TForm1.Button1Click(Sender: TObject);
Var SumResult:double;//计算总的金额
Temp:double;//获取当前记录的金额
TempID:Integer;//获取当前记录ID
TempDate:TDate;//获取当前记录日期
i:Integer;
begin
AdoQuery1.Open;
AdoQuery1.First;
AdoQuery2.Close;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Delete * from collectResult');
AdoQuery2.ExecSQL;
AdoQuery2.SQL.Clear;
AdoQuery2.SQL.Add('Select * from collectResult');
AdoQuery2.Open;
AdoQuery2.First;
with AdoQuery2 do
begin
SumResult:=0;
DbGrid1.DataSource.DataSet.First;
TempID:= DbGrid1.Fields[0].Value;
for i:= 0 to AdoQuery1.RecordCount -1 do
begin
TempDate:=DbGrid1.Fields[2].AsDateTime;
Temp:=DbGrid1.Fields[1].AsFloat;
if TempDate < StrToDate('2007-1-1') then
begin
SumResult:=Temp+SumResult;
end
else
begin
SumResult:=Temp*0.6+SumResult;
end;
if TempID = DbGrid1.Fields[0].Value then
begin
Edit;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end
else
begin
SumResult:= Temp;
TempID:=DbGrid1.Fields[0].Value;
Insert;
FieldByName('SumResult').Value := SumResult;
FieldByName('Id').Value:= TempID;
end;
Post;
DbGrid1.DataSource.DataSet.Next;
end;
end;
end;
呵呵 才学 程序写的很难看 而且也不知道你要做的是什么 只是做了个你要的操作
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询