C
chefee
Unregistered / Unconfirmed
GUEST, unregistred user!
多步OLE同步问题,看了很多前辈这个问题,改来改去还是解决不了,我测试了是SQL语句的问题,该怎么写呢?
我是SQL放在INI文件里调用的,语句如下:
sql3=select distinct scoret.学号,姓名,性别,departmentt.系别,classt.班级,courseinfort.学期,课程编号,课程名,成绩,学分,补考1,补考2,出生日期,sum(cast(学分 as integer))as 总学分
from scoret,stuinfort,courseinfort,classt,departmentt
where scoret.学号=stuinfort.学号 and scoret.课程编号=courseinfort.编号 and scoret.学号 like(classt.编号+'%') and stuinfort.系别=departmentt.编号 and departmentt.系别=:xb and classt.班级=:bj and scoret.学号=:xh
group by scoret.学号,姓名,性别,departmentt.系别,classt.班级,courseinfort.学期,课程编号,课程名,成绩,学分,补考1,补考2,出生日期
表中涉及的各字段均为CHAR类型 如果我把要传递的参数用具体的值代替就没问题
即:departmentt.系别='计算机系' ,分析原因主要是'号不能从程序正确写到SQL中?
用#39代替还是出现OLE多步错误.
程序中调用:
ClientDataSet1.Close;
ClientDataSet1.DataRequest(sql3);
ClientDataSet1.Params.ParamByName('xb').asstring:=trim(xpcombobox1.Text);
ClientDataSet1.Params.ParamByName('bj').asstring:=trim(xpcombobox2.Text);
ClientDataSet1.Params.ParamByName('xh').asstring:=trim(xpcombobox3.Text);
//showmessage(ClientDataSet1.Params.ParamByName('xb').Value+ClientDataSet1.Params.ParamByName('bj').Value+ClientDataSet1.Params.ParamByName('xh').Value+sql3);
ClientDataSet1.Open;
if ClientDataSet1.RecordCount=0 then
showmessage('对不起,没有找到记录,请重新选择打印条件。')
else
self.frReport1.ShowReport;
end;
end
except
showmessage('sql3语句出错');
exit;
还有ClientDataSet有分组功能,我有如下需要应该怎么实现:
需要提取信息如下:
系别 班级 姓名 课程 成绩 学期 学分 ...
计算机 计算机应用 成达到 电子 80 1 2
计算机 计算机应用 成达到 是似的 71 2 5
在fastreport 中要根据 学期 的值添充信息 .注: 即毕业成绩汇总表
我的下下策是有几个学期就用几个ClientDataSet,用SQL根据学期不同写到各个ClientDataSet 中 ,但是听说每用一个ClientDataSet,就增加一个MIDAS.DLL
我希望只用一个ClientDataSet 就能完成.
分不多,希望各位不令赐教,我的QQ:25017101
我是SQL放在INI文件里调用的,语句如下:
sql3=select distinct scoret.学号,姓名,性别,departmentt.系别,classt.班级,courseinfort.学期,课程编号,课程名,成绩,学分,补考1,补考2,出生日期,sum(cast(学分 as integer))as 总学分
from scoret,stuinfort,courseinfort,classt,departmentt
where scoret.学号=stuinfort.学号 and scoret.课程编号=courseinfort.编号 and scoret.学号 like(classt.编号+'%') and stuinfort.系别=departmentt.编号 and departmentt.系别=:xb and classt.班级=:bj and scoret.学号=:xh
group by scoret.学号,姓名,性别,departmentt.系别,classt.班级,courseinfort.学期,课程编号,课程名,成绩,学分,补考1,补考2,出生日期
表中涉及的各字段均为CHAR类型 如果我把要传递的参数用具体的值代替就没问题
即:departmentt.系别='计算机系' ,分析原因主要是'号不能从程序正确写到SQL中?
用#39代替还是出现OLE多步错误.
程序中调用:
ClientDataSet1.Close;
ClientDataSet1.DataRequest(sql3);
ClientDataSet1.Params.ParamByName('xb').asstring:=trim(xpcombobox1.Text);
ClientDataSet1.Params.ParamByName('bj').asstring:=trim(xpcombobox2.Text);
ClientDataSet1.Params.ParamByName('xh').asstring:=trim(xpcombobox3.Text);
//showmessage(ClientDataSet1.Params.ParamByName('xb').Value+ClientDataSet1.Params.ParamByName('bj').Value+ClientDataSet1.Params.ParamByName('xh').Value+sql3);
ClientDataSet1.Open;
if ClientDataSet1.RecordCount=0 then
showmessage('对不起,没有找到记录,请重新选择打印条件。')
else
self.frReport1.ShowReport;
end;
end
except
showmessage('sql3语句出错');
exit;
还有ClientDataSet有分组功能,我有如下需要应该怎么实现:
需要提取信息如下:
系别 班级 姓名 课程 成绩 学期 学分 ...
计算机 计算机应用 成达到 电子 80 1 2
计算机 计算机应用 成达到 是似的 71 2 5
在fastreport 中要根据 学期 的值添充信息 .注: 即毕业成绩汇总表
我的下下策是有几个学期就用几个ClientDataSet,用SQL根据学期不同写到各个ClientDataSet 中 ,但是听说每用一个ClientDataSet,就增加一个MIDAS.DLL
我希望只用一个ClientDataSet 就能完成.
分不多,希望各位不令赐教,我的QQ:25017101