一个SQL语句的问题

changfenglee 2011-11-11 12:26:48


小弟正在做一个小程序,有个问题弄了很久没搞出来,问题如下:

我做的窗体上有两个表格,第一个表格是按月份汇总得出的求和表,数据如下:

时间 数量 金额
2011-09 100 5000
2011-10 120 6000
2011-11 106 7000

第二个表中我想根据上面表中的日期查询出当月的明细记录,也就是当我点2011-09那一栏时,下面的表就会显示这一个月的所有记录,第二张表的记录根据我点第一张表上的内容不同而变化,就在这里问题出来了,小弟不知道怎么处理这个日期格式了,怎么样才能根据比如2011-09而查出整月数据呢.

各位大侠,救救命吧,我在百度找了N久了.
...全文
64 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
changfenglee 2011-11-11
  • 打赏
  • 举报
回复
感谢6楼的朋友,你的答案在我这里成功了,同时也感谢各位参与的朋友
Elvis_chen 2011-11-11
  • 打赏
  • 举报
回复
关注中,目前在学习Delphi
changfenglee 2011-11-11
  • 打赏
  • 举报
回复
按照4楼的仁兄写法:
var
sTemp,Input_Year,Input_Month:string;
begin
sTemp:=qry_RuKuDan.fieldbyname('时间').AsString;
Input_Year:=Copy(sTemp,1,4);
Input_Month:=Copy(sTemp,6,2);
qry_RuKuDanMingXi.SQL.Clear;
qry_RuKuDanMingXi.SQL.Add('select * from 收支记录 where 收支=''收入'' and (datepart(year,时间)='+Input_Year +' and datepart(Month,时间)='+Input_Month +')');
qry_RuKuDanMingXi.Open;

运行时报错,参数YEAR没有默认值
kaikai_kk 2011-11-11
  • 打赏
  • 举报
回复
上面是SQL2000,SQL2005 ...

access就使用format,如:

SQL.Add('select * from t2 where format(日期,''YYYY-MM'')='+Quotedstr(adoquery1.fieldbyname('日期').asstring));
changfenglee 2011-11-11
  • 打赏
  • 举报
回复
我的数据库是ACCESS的,用convert(varchar(7),日期,120)冒似不行啊
风车呼噜噜 2011-11-11
  • 打赏
  • 举报
回复
第二个表的查询代码:
var
sTemp,Input_Year,Input_Month:string;
begin
sTemp:=qry_RuKuDan.fieldbyname('时间').AsString;
Input_Year:=Copy(sTemp,1,4);
Input_Month:=Copy(sTemp,6,2);
qry_RuKuDanMingXi.SQL.Clear;
qry_RuKuDanMingXi.SQL.Add('select * from 收支记录 where 收支=''收入'' and datepart(year,时间)='+Input_Year +' and datepart(Month,时间)'=Input_Month );
qry_RuKuDanMingXi.Open;
kaikai_kk 2011-11-11
  • 打赏
  • 举报
回复
第1个表adoquery1的SQL:
SQL.Add('select convert(varchar(7),日期,120) as 日期,SUM(数量) as 数量,SUM(金额) as 金额 from t1 group by convert(varchar(7),日期,120)');

第2个表adoquery2的SQL:
SQL.Add('select * from t2 where convert(varchar(7),日期,120)='+Quotedstr(adoquery1.fieldbyname('日期').asstring));
changfenglee 2011-11-11
  • 打赏
  • 举报
回复
我第一个表的汇总查询代码为:
qry_RuKuDan.Close;
qry_RuKuDan.SQL.Clear;
qry_RuKuDan.SQL.Add('select format(时间, "yyyy-mm ") as 时间,sum(数量) as 数量,sum(金额) as 金额 from 收支记录 where 收支=''收入'' group by format(时间, "yyyy-mm ")');
qry_RuKuDan.Open;

第二个表的查询代码:
var
Input_Date:string;
begin
Input_Date:=qry_RuKuDan.fieldbyname('时间').AsString;
qry_RuKuDanMingXi.SQL.Clear;
qry_RuKuDanMingXi.SQL.Add('select * from 收支记录 where 收支=''收入'' and 时间 like '''+ Input_Date +'%'' ' );
qry_RuKuDanMingXi.Open;

这样运行后点击第一个表后,第二个表的详细数据是空的,不知道问题在哪
bdmh 2011-11-11
  • 打赏
  • 举报
回复
点击时,另外一个adoquery根据上面adoquery的日期字段值查询
第二,做主从表

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧