sql.Add('select * from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
這條語句adoquery1.是做查詢的.結果是:
overtime_date(日期) overtime_id(工號) overtime_totaltime(加班時間)
2002/11/8 168 3
2002/11/9 168 3
而我現在另外做了一個adoquery.想在上面的基礎上算出這個員工加班的總時間.并把它把到edit3中.
我試了一下.下面的語句不行.請指教.
sql.Add('select sum(overtime_totaltime) as sumtime from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
edit3.text:=adoquery.fieldbyname('sumtime').asstring;
這條語句adoquery1.是做查詢的.結果是:
overtime_date(日期) overtime_id(工號) overtime_totaltime(加班時間)
2002/11/8 168 3
2002/11/9 168 3
而我現在另外做了一個adoquery.想在上面的基礎上算出這個員工加班的總時間.并把它把到edit3中.
我試了一下.下面的語句不行.請指教.
sql.Add('select sum(overtime_totaltime) as sumtime from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
edit3.text:=adoquery.fieldbyname('sumtime').asstring;
解决方案 »
- 过大年大散分-5
- WaitForSingleObject时窗体死了
- 请问如何在图标中显示进度条,像winrar在后台执行时那样?服务程序很需要.
- 多个客户端同时从服务器端下载一个文件,下面代码流程是否有问题?
- 关于创建对象的问题,执行报错,超难。。。。。。。。。。。。。。。。。。再线等待。。
- ★fast report多层结构数据报表问题★
- f4关闭当前程序,怎么办??
- 在DELPHI操作ORACLE中使用ADOQUERY.EXCESQL之后要不要执行COMMIT?
- ImageEn中使用ImageEnVect1.MouseInteract := [miSelect];怎样得到选择区域的高,宽,及起始x、y
- 关于程序移植的问题?
- 基础问题:用Pascal实现行编辑功能,实现在行内对字符的插入
- 在delphi中如何动态建立oracle的存储过程和触发器?
begin
close;
sql.Clear;
sql.Add('select * from danweibiao where dwmc like :dwmc');
Parameters[0].Value:='%'+edit1.text+'%';
open;
end;
用参数吧
begin
with adoq_overtime do
begin
close;
sql.Clear;
sql.Add('select * from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
open;
end;
//edit_time.Text:='';
edit2.Text:='';
edit2.SetFocus;
////////////////////////////////以下計算加班總時數
with adoq_total do
begin
close;
sql.Clear;
sql.Add('select sum(overtime_totaltime) as sumtime from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
prepared;
open;
end;
//sbar1.Panels[0].Text:=adoq_total.fieldbyname('sumtime').asstring;
edit3.Text:=adoq_total.fieldbyname('sumtime').AsString;
end;
再跟踪一下第二个查询,在open后看有没有记录被检索出
select sum(overtime_totaltime) as cnt
from overtime
where overtime_date like '2002/11%' and overtime_id like'g%'
go
这样的话就干脆可以用另外一种方法来实现:在 adoq_overtime 控件的 AfterRefresh 事件中累加 OverTime_TotalTime 的值然后赋予 edit3.Text ,我觉得这样会更好,因为使用的控件少了一个,但又可以达到目的,效率也不会降低。试一试把。
有空多交流啦...
from overtime
where year(overtime_date)=2002 and month (overtime_date )=11 and overtime_id ='g057'
這是我在數據庫版問到的結果.在SQL中能夠通過哦.可是在程序中怎樣做呢?
另外,你为什么使用繁文版的WINDOWS呢?在哪里工作,我对考勤等企业管理方面的设计有兴趣,大家交个朋友,交流交流如何?
其实,我上面说的方法应该更有效,只不过改一些代码而已,十来分钟就可以做到了。你没有注意到吗?
var
OverTime_Sum : Integer;
begin
OverTime_Sum := 0;
with adoq_overtime do
begin
First;
while not eof do
begin
OverTime_Sum := FieldByName('overtime_totaltime').AsInteger;
end;
end;
edit3.text := IntToStr(OverTime_Sum);
end;这个代码应该可以解决问题了,不过没有调试,请记得把结果通报给我们呐。
var
Amount_Sum : Integer;
begin
Amount_Sum := 0;
with adoq_OverTime do
begin
First;
while Not Eof do
begin
Amount_Sum := Amount_Sum + FieldValues['Amount'];
Next;
end;
end;
end;有空聊一聊啦,再见。
應該是
procedure TF_overtime.button2Click(Sender: TObject);
begin
with adoq_overtime do
begin
close;
sql.Clear;
sql.Add('select * from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
open;
end;
//edit_time.Text:='';
//edit2.Text:='';//注意這里
//edit2.SetFocus;
////////////////////////////////以下計算加班總時數
with adoq_total do
begin
close;
sql.Clear;
sql.Add('select sum(overtime_totaltime) as sumtime from overtime where convert(varchar,overtime_date,111) like '+'''%'+trim(edit_time.Text)+'%'+''''+' and overtime_id= '+#39+trim(edit2.Text)+#39);
prepared;
open;
end;
//sbar1.Panels[0].Text:=adoq_total.fieldbyname('sumtime').asstring;
edit3.Text:=adoq_total.fieldbyname('sumtime').AsString;
end;
edit2.Text:='';
edit2.SetFocus;
不过,我认为还是在原有的查询上进行字段累计的方法会更有效率,不知 pandarus(冷雨) 的意见如何。E - Mail : [email protected]