Inventory存货表中定义了每个存货的加工属性
如:
名称 数车加工 加工中心 去毛 气试
A 是 否 是 是
然后用SQL语句调出加工工序为“是”的工序名称,并分行在DGGrid中显示。
按照上面的数据在DBGrid中显示为:
A 数车加工
A 去毛
A 气试我试了好多方法都不行,各位大侠帮忙啊。
如:
名称 数车加工 加工中心 去毛 气试
A 是 否 是 是
然后用SQL语句调出加工工序为“是”的工序名称,并分行在DGGrid中显示。
按照上面的数据在DBGrid中显示为:
A 数车加工
A 去毛
A 气试我试了好多方法都不行,各位大侠帮忙啊。
解决方案 »
- B2C网站的商品类别对应不同属性是什么设计思路了?
- DELPHI求注解!
- perform中为什么我只得到一个参数
- Tquery怎么设置sql得到字段1比字段2小的记录?
- 在按装程序里制做了 ODBC联接,能否让用户在按装时选择服务器IP?
- dephi6使用midocview控件出错
- fastreport 预览窗体关闭后 怎么连程序窗体也一起关掉?
- XE6发布的Android出现application does not support this device
- 如何再的delphi中调用api函数?
- 关于窗体的2个问题
- 可以实现给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