Inventory存货表中定义了每个存货的加工属性
如:
名称 数车加工 加工中心 去毛 气试
A 是 否 是 是
然后用SQL语句调出加工工序为“是”的工序名称,并分行在DGGrid中显示。
按照上面的数据在DBGrid中显示为:
A 数车加工
A 去毛
A 气试我试了好多方法都不行,各位大侠帮忙啊。
如:
名称 数车加工 加工中心 去毛 气试
A 是 否 是 是
然后用SQL语句调出加工工序为“是”的工序名称,并分行在DGGrid中显示。
按照上面的数据在DBGrid中显示为:
A 数车加工
A 去毛
A 气试我试了好多方法都不行,各位大侠帮忙啊。
解决方案 »
- 判斷登錄的次數
- 有关ListView右键菜单的问题;
- http://www.qqst.com/film/film.asp?id=fanhongbin1979 全国最优秀的免费电影网站之一,进来顶多后悔一时,不进来可能会后悔终生哦:)
- 怎样修改ACTIVEX控件的图标?
- 如何控制鼠标移动
- 在DLL中如何使用ADO!!!
- 大家请帮我!!!!!!!!!!!!!
- Delphi record结构体 数据较多时出现数据紊乱和内存报错
- 用代码生成数据库的方法有哪些?请带例子说明
- delphi可编译的最大程序是多大?
- 可以实现给dbgrid的一个列填充么?
- 【散分贴】delphi XE5 北京发布会,参加的留个名喽~
union
select 名称,'加工中心' from Inventory where 去毛='加工中心'
union
select 名称,'去毛' from Inventory where 去毛='是'
union
select 名称,'气试' from Inventory where 气试='是'类似于这样子的
最后可以 order by 名称 一下
drop table ta
create table ta(名称 varchar(1),数车加工 varchar(2),加工中心 varchar(2),去毛 varchar(2),气试 varchar(2))
insert into ta
select 'A','是','否','是','是'
--union all
--select 'B','是','是','否','否'select * from ta--SQL SERVER 2000 静态SQL
select * from
(
select 名称, 类别 = '数车加工' , 选项 = 数车加工 from ta
union all
select 名称, 类别 = '加工中心' , 选项 = 加工中心 from ta
union all
select 名称, 类别 = '去毛' , 选项 = 去毛 from ta
union all
select 名称, 类别 = '气试' , 选项 = 气试 from ta
) t
order by 名称 , case 类别 when '数车加工' then 1 when '加工中心' then 2 when '去毛' then 3 when '气试' then 4 end
--SQL SERVER 2000 动态SQL。
--调用系统表动态生态。
declare @sql varchar(8000)
select @sql = isnull(@sql + ' union all ' , '' ) + ' select 名称 , [类别] = ' + quotename(Name , '''') + ' , [选项] = ' + quotename(Name) + ' from ta'
from syscolumns
where name<> '名称' and ID = object_id('ta')
order by colid ascexec(@sql + ' order by 名称 ')
得到的结果集再次按照是否过滤一下就是你想要的
您是以 SQL Server 舉的例子~ 請問若用在 ADO 也可以這樣做嗎? 先謝了!
您是以 SQL Server 舉的例子~ 請問若用在 ADO 也可以這樣做嗎? 先謝了!
完全可以的,做成存储过程,然后用TADOStoredProc或ADODataSet调用这个过程就行了
当然因为你指定要用DGGrid,所以这个方法是首选,如果换成StringGrid的话,也可以用Delphi前端去处理
得到相应的需加工工序后,双击Grid返回文本框,在加工进度表中录入对应的合格数量。
union
select 名称,'加工中心'as T_NAME from Inventory where 去毛='加工中心'
union
select 名称,'去毛'as T_NAME from Inventory where 去毛='是'
union
select 名称,'气试' as T_NAME from Inventory where 气试='是'
大概定义了20几个加工工序,我不知道要多少查几次啊。
=================================================
我上面不是提供了动态SQL语句吗,你有100个工序都可以
我想得到的是如果
A 的加工工序为是的,则显示如下:DBGrid中显示为
名称 加工工序名称
A 数车
A 气试
A 去毛并不是得到列的内容。
另外每个存货的加工属性不一样,我只是举例一个。
您是以 SQL Server 舉的例子~ 請問若用在 ADO 也可以這樣做嗎? 先謝了!
完全可以的,做成存储过程,然后用TADOStoredProc或ADODataSet调用这个过程就行了
当然因为你指定要用DGGrid,所以这个方法是首选,如果换成StringGrid的话,也可以用Delphi前端去处理
學習了! 非常感謝您喔~
insert into a values('A','是','否','是','是');
--select * from a
create table new_a ( 名称 varchar(50), 加工方式 varchar(50),是否 varchar(50) ); declare @sql varchar(8000)
select @sql = isnull(@sql + ' union all ' , '' )
+ ' select 名称 , [加工方式] = '
+ quotename(Name , '''')
+ ' , [是否] = ' + quotename(Name) + ' from a '
from syscolumns
where name<> N'名称' and ID = object_id('a')
order by colid asc
--exec(@sql )
insert into new_a exec(@sql)
select 名称,加工方式 from new_a where 是否='是'
drop table a ,new_a