delphi dbgrid如何把数据库中多行内容显示在一列里?

时间:2021-05-05 03:39:37
数据库中有3行数据,

用户    资料
  A     1111
  A     2222
  A     3333

我想把这个用户的全部'资料'查询出来,在DBgrid的一个列里面显示出来,如何处理?

结果: 

  用户   资料
  A      1111 2222 3333

谢谢

6 个解决方案

#1


你那个不适合dbgrid的应用,而stringsgrid循环填加可以满足你的要求.

#2


to:babydog01

你的意思换成 stringsgrid 控件?

有没有其他的控件可以直接实现的,DBgridEH 或者RzDBgrid ?

请指教下具体步骤,谢谢

#3


创建一个SQL方法
CREATE FUNCTION AggregateString 

参数

RETURNS varchar(3000) 
AS 
BEGIN 
declare @Str varchar(3000) 
set @Str = '' 
select @Str = @Str + 资料 from 表
where 条件
return @Str 
END

使用以下SQL语句

select 用户,dbo.AggregateString(资料)
from 表
group by 用户

#4


引用 2 楼 hk2009 的回复:
to:babydog01

你的意思换成 stringsgrid 控件?

有没有其他的控件可以直接实现的,DBgridEH 或者RzDBgrid ?

请指教下具体步骤,谢谢


对不起,英文不太好,打错了。应该是stringgrid。你的需求中还有一个行转列的问题。
DBgridEH 或者RzDBgrid ?都不具备行转列的功能。

我对SQL不太懂,可以试试楼上的方法行不行。

#5


列传行是一个delphi很蹩脚的面试题,如果行数不多的话,可以这样写
select 用户,1111 as 资料1,2222 as 资料2,3333 as 资料3 from 表1 
行数多的话,还是看LS吧

#6


我的数据库是ACCESS的

#1


你那个不适合dbgrid的应用,而stringsgrid循环填加可以满足你的要求.

#2


to:babydog01

你的意思换成 stringsgrid 控件?

有没有其他的控件可以直接实现的,DBgridEH 或者RzDBgrid ?

请指教下具体步骤,谢谢

#3


创建一个SQL方法
CREATE FUNCTION AggregateString 

参数

RETURNS varchar(3000) 
AS 
BEGIN 
declare @Str varchar(3000) 
set @Str = '' 
select @Str = @Str + 资料 from 表
where 条件
return @Str 
END

使用以下SQL语句

select 用户,dbo.AggregateString(资料)
from 表
group by 用户

#4


引用 2 楼 hk2009 的回复:
to:babydog01

你的意思换成 stringsgrid 控件?

有没有其他的控件可以直接实现的,DBgridEH 或者RzDBgrid ?

请指教下具体步骤,谢谢


对不起,英文不太好,打错了。应该是stringgrid。你的需求中还有一个行转列的问题。
DBgridEH 或者RzDBgrid ?都不具备行转列的功能。

我对SQL不太懂,可以试试楼上的方法行不行。

#5


列传行是一个delphi很蹩脚的面试题,如果行数不多的话,可以这样写
select 用户,1111 as 资料1,2222 as 资料2,3333 as 资料3 from 表1 
行数多的话,还是看LS吧

#6


我的数据库是ACCESS的