请教关于stringgrid的问题,高手指点下小弟

chdaner 2009-07-06 10:11:59
我有表a如下: 学号 竞赛科目 成绩 (其中竞赛科目为列表框组件,包含语文,数学,英语)
001 语文 72
001 英语 64
002 数学 71

我的想法是:上面的表显示在dbgrid中,

然后通过按钮点击,在组件stringgrid中显示成如下内容

学号 语文 数学 英语
001 72 64
002 71

数据库用的是sql 2000,

刚刚学delphi,请高手指点下小弟,最好能提供详细的实例,感谢,

另外如果我想新增个科目如物理之类的,应该要怎么做呢?

...全文
120 19 打赏 收藏 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
dinoalex 2009-07-06
  • 打赏
  • 举报
回复
不是两个dbgrid.是两个adoquery,新增列? 加什么列?在stringgrid里加的话,直接赋值就行了,如果在数据库里的话,那要看你是的是什么列的,那个SQL语句是根据竞赛科目来写的,里面有多少个,你就写多少个
chdaner 2009-07-06
  • 打赏
  • 举报
回复
这个我倒是会写,但是这样的话,就得用到两个dbgrid,一个stringgrid, 因为这样循环赋值是取的第二个数据集dbgrid里面的数据,这样还有个问题,如果想新增列的话,还可不可行。

能不能只用一个dbgrid,一个stringgrid呢,如果这样的话,赋值语句就要换了。
dinoalex 2009-07-06
  • 打赏
  • 举报
回复
for i:= 0 to adoquery1.fieldcount -1 do
stringgrid1.cell[i,0]:= adoquery1.fields[i].fieldname; //加表头
r:= 1;
while not adoquery1.eof do
begin
for i:= 0 to adoquery.fieldcount -1 do
stringrid1.cell[i,r]:= adoquery1.fields[i].asstring;
inc(r);
end

大致是这样吧,手写,没测,你自己测吧
SuperTitan001 2009-07-06
  • 打赏
  • 举报
回复
一个个添加吧,别老想着偷懒,呵呵
chdaner 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 dinoalex 的回复:]
点击按钮,得到结果集,再把结果集写进stringgrid里不就行了?
[/Quote]

dinoalex
你好,现在有了一点眉目,只是我只会把结果集写进另外一个dbgrid里面,stringgrid不会操作,具体要写进去,是不是还要写个循环,一个个的添加?
能给个与stringgrid关联的语句吗?
dinoalex 2009-07-06
  • 打赏
  • 举报
回复
max主要用来是配合group by.

也可以不用max这个聚合函数
dinoalex 2009-07-06
  • 打赏
  • 举报
回复
点击按钮,得到结果集,再把结果集写进stringgrid里不就行了?
chdaner 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dinoalex 的回复:]
select 学号,
max(case 竞赛科目 when '语文' then 成绩 else 0 end) 语文,
max(case 竞赛科目 when '数学' then 成绩 else 0 end) 数学,
max(case 竞赛科目 when '物理' then 成绩 else 0 end) 物理,
from tb
group by 学号
[/Quote]

请问一下,'max' 的作用是什么?
chdaner 2009-07-06
  • 打赏
  • 举报
回复
同一科目的多条记录肯定会有的。
chdaner 2009-07-06
  • 打赏
  • 举报
回复
这是写在数据库里面的吧

我想写在程序中的话,应该要怎么做呢?
SuperTitan001 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dinoalex 的回复:]
select 学号,
  max(case 竞赛科目 when '语文' then 成绩 else 0 end) 语文,
  max(case 竞赛科目 when '数学' then 成绩 else 0 end) 数学,
  max(case 竞赛科目 when '物理' then 成绩 else 0 end) 物理,
from tb
group by 学号
[/Quote]

正解,如果没有同一科目的多条记录,可以不用max
chdaner 2009-07-06
  • 打赏
  • 举报
回复
不好意思,因为比较急,所以发了两贴

感谢楼上的回复

我上面的记录只是举个例子,学号是不定的,记录会有很多个
骑牛上铂金 2009-07-06
  • 打赏
  • 举报
回复
是个行列互换的问题,搜索一下应该有很多相关帖子!
dinoalex 2009-07-06
  • 打赏
  • 举报
回复
select 学号,
max(case 竞赛科目 when '语文' then 成绩 else 0 end) 语文,
max(case 竞赛科目 when '数学' then 成绩 else 0 end) 数学,
max(case 竞赛科目 when '物理' then 成绩 else 0 end) 物理,
from tb
group by 学号
dinoalex 2009-07-06
  • 打赏
  • 举报
回复
怎么发两帖了?
chdaner 2009-07-06
  • 打赏
  • 举报
回复
有劳各位,太感激了。
nbzip 2009-07-06
  • 打赏
  • 举报
回复
不管用SQL还是语句,这问题都是容易的.

楼主要加油了.
chdaner 2009-07-06
  • 打赏
  • 举报
回复
哎,高手帮帮忙啊
chdaner 2009-07-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dinoalex 的回复:]
select 学号,
max(case 竞赛科目 when '语文' then 成绩 else 0 end) 语文,
max(case 竞赛科目 when '数学' then 成绩 else 0 end) 数学,
max(case 竞赛科目 when '物理' then 成绩 else 0 end) 物理,
from tb
group by 学号
[/Quote]


再问个白痴的问题,这个sql语句应该要放在哪里?
内容概要:本文围绕“基于周期增强时序预测与帕累托多目标优化的建筑群储能鲁棒调度策略”开展研究,提出了一种融合高精度预测与多目标优化的综合调度方法。首先,采用周期增强的时序预测技术对建筑群的电力负荷与可再生能源出力进行精准建模,充分挖掘数据的周期性特征以提升预测准确性;其次,构建基于帕累托前沿的多目标优化模型,综合考虑经济成本最低、碳排放最小化以及系统运行鲁棒性等多重目标;最后,引入鲁棒优化机制应对预测不确定性,增强调度方案在复杂动态环境下的适应能力与稳定性。研究通过Python编程实现了完整的算法流程,涵盖数据预处理、模型构建、优化求解与结果分析,适用于建筑群或园区级综合能源系统的协同优化调度。; 适合人群:具备一定电力系统基础知识、优化算法理论及Python编程能力的研究生、科研人员和工程技术人员,尤其适合从事综合能源系统、智能电网、储能调度与低碳运行等领域的研究人员。; 使用场景及目标:①应用于园区级或多建筑群能源系统,实现经济性与低碳化协同优化调度;②解决可再生能源波动性和负荷不确定性带来的调度风险,提升系统鲁棒性;③为相关科研提供一套可复现、可扩展的周期性预测与多目标鲁棒优化集成技术框架; 阅读建议:建议结合文中提供的Python代码进行实践操作,重点理解周期增强预测模块的设计逻辑与帕累托最优解集的求解过程,可通过更换实际数据集、调整权重策略或引入新约束条件进行拓展研究,从而深化对鲁棒调度机制与多目标权衡关系的理解与应用能力。

5,943

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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