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;
解决方案 »
- 只打开一个子窗体
- 关于 界面 控制的问题
- DBGRID 如何高亮显示某一列~
- 有这样一个表 T(a, b, c) 三个字段, 求类似这样的语句 select ((a>b)?a;b) + c as total from T
- 怎样利用FlashGet支持通过COM和DDE接口添加任务和获得正在下载的文件信息?我有的是分呀,分不够重新开贴给!!!
- ■■■■【绝对有趣,up有分,谢谢关注】请问win98的Explorer.exe的运行机制■■■■
- 这是什么错误? -- 'Row cannot be located for updating. Some values may have been changed since it was last read.'
- 我想在panel中直接画图!
- 在线急等:as3开发的air桌面软件怎么在windows实现一机一码功能?或者说用软件的方法实现加密狗功能?防君子不防小人
- 为什么AdoDataSet不能Close?
- 基础问题:用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]