delphi中union的问题

新自由呼吸 2011-09-02 01:57:54
with data1.ADOpublic do
begin
close;
sql.Clear;
sql.Add('select c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 合计趟数 from T_renshibiao as r join T_cwbg AS c on r.bh=c.xzh where r.ssbm =:a');
parameters.ParamByName('a').Value:=trim(combobox1.Text);
sql.Add('and ');
sql.add('(fssj between :a1');
parameters.ParamByName('a1').Value:=strtodatetime(formatdatetime('yyyy-mm-dd',dateTimePicker1.datetime));
sql.Add(' and :a2)');
parameters.ParamByName('a2').Value:=strtodatetime(formatdatetime('yyyy-mm-dd',dateTimePicker2.datetime));
mydate:= strtodatetime(formatdatetime('yyyy-mm-dd',datetimepicker2.Datetime));
sql.Add('group by c.xm,c.xzh,c.cccc,c.fccc,r.bh,r.ssbm');
sql.Add('union all select c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 加班趟数 from T_renshibiao as r join T_cwbg AS c on r.bh=c.xzh where r.ssbm =:b');
parameters.ParamByName('b').Value:=trim(combobox1.Text);
sql.Add('and ');

sql.add('(fssj between :b1');
parameters.ParamByName('b1').Value:=strtodatetime(formatdatetime('yyyy-mm-dd',dateTimePicker1.datetime));
sql.Add(' and :b2)');
parameters.ParamByName('b2').Value:=strtodatetime(formatdatetime('yyyy-mm-dd',dateTimePicker2.datetime));
sql.Add('and c.jianban=''是'' group by c.xm,c.xzh,c.cccc,c.fccc,r.bh,r.ssbm'); }
open;
end;


While Not(data1.ADOpublic.Eof) do
begin
for i:=1 to data1.ADOpublic.FieldCount do
begin
temp_sc:= data1.ADOpublic.FieldByName('加班趟数').Value ;
end;
data1.ADOpublic.Next;
end;

提示说找不到ADOpublic的加班趟数,但假如用 union前的却可以,如data1.ADOpublic.FieldByName('合计趟数').Value ,union后的不行。

...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlb_chen 2011-09-02
  • 打赏
  • 举报
回复
前面的是c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 合计趟数,0 as 加班趟数
后面的是c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,0 as 合计趟数, count(c.fccc) as 加班趟数,

对应的呀~
kaikai_kk 2011-09-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 enio 的回复:]
那union后的数据,我如何取出?
[/Quote]

多加一常数列,union后面可以不指定列名,简化一点:
...,c.cccc as 出乘车次,c.fccc as 返乘车次, count(c.fccc) as 合计趟数,0 as 加班趟数
union ...,c.cccc,c.fccc, 0,count(c.fccc)
varick_zhong 2011-09-02
  • 打赏
  • 举报
回复
前面的是c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 趟数,'合计' as 类型
后面的是c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 趟数,'加班' as 类型

这样变通一下是不是可以
新自由呼吸 2011-09-02
  • 打赏
  • 举报
回复
那union后的数据,我如何取出?
bdmh 2011-09-02
  • 打赏
  • 举报
回复
union后,会以前面的字段为名,应该是 合计趟数
新自由呼吸 2011-09-02
  • 打赏
  • 举报
回复
前面的是c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 合计趟数,后面的是c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 加班趟数,对应的呀~
varick_zhong 2011-09-02
  • 打赏
  • 举报
回复
union 前一个select 语句中的列要与后一个select 语句中的列一致的,你这里是后面有列"加班趟数"前面却没有
新自由呼吸 2011-09-02
  • 打赏
  • 举报
回复
谢谢小V、DBMH!我又改了下
c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,count(c.fccc) as 合计趟数,isNull(null,0) as 加班趟数
c.xm as 姓名,c.xzh as 工资号,c.cccc as 出乘车次,c.fccc as 返乘车次,null,count(c.fccc) as 加班趟数

比较合理了,合计等功能好像还是Ehlib比较好,用SQL写挺麻烦。
目录 : 第0章 认识Delphi 0-1 前言 0-2 Delphi简介 0-3 进入Delphi7 0-4 退出Delphi 第1章 常用的窗口工具 1-1 窗体(Form) 1-2 代码编辑器(Code Editor) 1-3 代码浏览器(Code Explorer) 1-4 组件面板(Componet Palette) 1-5 对象检视器(Object Inspector) 1-6 快捷工具栏(Speed Menu) 1-7 项目管理器(Project Manager) 1-8 桌面工具栏(Desktops Tollbar) 1-9 图像编辑器(Image Editor) 1-10 对象浏览器(Object TreeView) 1-11 关联选项卡(Digram Page) 第2章 常用的菜单 2-1 File菜单 2-2 Edit菜单 2-3 Search菜单 2-4 View菜单 2-5 Project菜单 2-6 Run菜单 2-7 Tools菜单 2-8 Windows菜单 第3章 集成开发环境的改变 3-1 Delphi集成开民环境介绍 3-2 操作菜单方面的改进 3-2-1 外面方面的改变 3-2-2 内容方面的改变 3-3 对象检视器方面的改进 3-4 组件面板的改进 3-5 代码编辑器的改进 3-6 设计陈列室的改进 3-7 编译信息的显示 3-8 调试器方面的改进 3-8-1 Watch List改进 3-8-2 Debugger选项的改进 3-8-3 Run Parameters对话框的改进 第4章 Delphi Object Pascal的初步印象 4-1 面向对象程序概论 4-1-1 类 4-1-2 对象 4-1-3 继承 4-1-4 封装 4-1-5 信息 4-2 Delphi项目结构及窗体的建立 4-2-1 GUI模式的项目 4-2-2 Console模式的项目 4-3 Object Pascal程序结构 4-3-1 项目程序(Program)的结构 4-3-2 单元程序(Unit)的结构 4-4 如何完成一个简单的窗体程序 第5章 简单的常用指令介绍 5-1 TLabel类对象 5-1-1 Caption属性 5-2 TButton类对象 5-2-1 Caption属笥 5-2-2 OnClick事件 5-3 TEdit类对象 5-4 TCanvas类对象 5-5 Showmessage函数 5-6 InputBox函数 5-7 MessageDlg函灵敏 第6章 Delphi与Object Pascal程序的基本概念 6-1 Object Pascal Program程序结构与Delphi项目结构的关系 6-1-1 标头(Heading) 6-1-2 Uses子句 6-1-3 编译指令(Compiler directive) 6-1-4 源代码区(begin end) 6-2 Unit程序结构与窗体的关系 6-2-1 Unit代码结构 6-2-2 语句(Statement) 6-2-3 Unit间Use的状况 6-3 数据类型与定义变量 6-3-1 数据类型概论 6-3-2 不需要使用type声明的数据类型 6-3-3 必须使用type声明的数据类型 6-3-4 定义变量 6-3-5 变量的作用域 6-3-6 定义常量 6-3-7 变量的类型转换(Typecast) 6-4 Object Pascal的运算符(Operator) 6-4-1 设置运算符(assign Operator) 6-4-2 算数运算符(Arithmetic Operator) 6-4-3 关系运算符(Relational Operator) 6-4-4 布尔运算符 6-4-5 集合运算符 6-4-6 字符串运算符 6-4-7 位逻辑运算符 6-4-8 运算符优先级 6-5 流程控制 6-5-1 语句的基本概念 6-5-2 表达式语句(Expression-Statement) 6-5-3 流程控制语句 6-5-4 可视化程序与嵌套程序 6-6 数组与指针 6-6-1 数组类型 6-6-2 指针类型 6-6-3 浅谈指针与数据结构 6-7 程序与函数(Procedures and Functions) 6-7-1 函数的意义与优点 6-7-2 函数的分类与效用 6-7-3 自定义函数使用方法概述 6-7-4 函数的声明、定义及其实现 6-7-5 参数传递方式 6-7-6 声明修

2,496

社区成员

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

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