sql简单问题,菜鸟在线等,毕业设计啊,就要交了,高手也不一定能解决.(100分)

  • 主题发起人 主题发起人 chefee
  • 开始时间 开始时间
谢谢各位仁兄,吃饭时间还来帮助小弟;
to logingyw
不是Params的问题.
to janker
我知道这种方法好,但目前不采用,以后测试
to kukujaky
无效,怀疑参数多了,跨表多了就会这问题?
 
跟踪一下,看看sql3是什么
 
再不行可以用''''+trim(xpcombobox1.Text)+'''';
 
to kukujaky
我从1.2.3.4.5.6个'号都测试过来还不行.郁闷啊,不毕业算了,有空可以聊下,各位毕业那光景事情哈,

事件探察器的跟踪看不懂,跟踪信息如下:
RPC:COMPLETED :
exec sp_executesql N'select classt.编号,classt.班级, 学号 from classt,stuinfort where stuinfort.班级=cast(@P1 as char) and classt.编号=@P2 and 学号 like(@P3)
', N'@P1 varchar(2),@P2 varchar(6),@P3 varchar(9)', '03', '030303', '030303__%'

SQL:BATCHCOMPLETED:
SET FMTONLY ON select departmentt.系别,classt.班级,scoret.学号 from scoret,stuinfort,courseinfort,classt,departmentt SET FMTONLY OFF


RPC:COMPLETED :
declare @P1 int
set @P1=6
exec sp_prepare @P1 output, N'@P1 char(16),@P2 char(20),@P3 char(8)', N'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.系别=@P1 and classt.班级=@P2 and scoret.学号=@P3 group by scoret.学号,姓名,性别,departmentt.系别,classt.班级,courseinfort.学期,课程编号,课程名,成绩,学分,补考1,补考2,出生日期
', 1
select @P1

RPC:COMPLETED :
exec sp_unprepare 6 这里跳出多步OLE错误
 
跳出多步OLE错误
——感觉会不会是控件初始化的问题?

你有没有拿这个控件做了其他作用?
你重新建立一个form,其他的动作都别过去,就这个连接的内容过去就行,试试。

也许就是你少了一个:clientdataset1.Params.Clear
 
to jenhon
你这么一说,如醍醐灌顶,新建FROM能通过,不过查询结果不对,大侠定是久经沙场之人.

主要问下 clientdataset1.Params.add 怎么动态添加,怎么根据索引取参数.
 
params不用手工加啊,会根据你的sql语句增加的,
象你这句不是动态就加了一个?
ClientDataSet1.Params.ParamByName('xb').asstring:=#39+trim(xpcombobox1.Text)+#39;

难道还有错误?
 
我以前QUERY是这样就行,可这个ClientDataSet1很奇怪要先手动增加.
 
我郁闷啊,还是得不到解决..
 
还是F1有用
Move all parameter info from Params2 to Params1 }

while Params2.Count <> 0 do
begin
{ Grab the first parameter from Params2 }
TempParam := Params2[0];
{ Remove it from Params2 }
Params2.RemoveParam(TempParam);
{ And add it to Params1 }
Params1.AddParam(TempParam);
end;

搞来搞去还是依照以前习惯动态添加ClientDataSet4.Params[0].text:='xb';
 
我狂晕啊,越来越烦了.


ClientDataSet4.Close;
ClientDataSet4.DataRequest(sql3);
ClientDataSet4.Params.Clear;
ClientDataSet4.Params[0].text:='xb';
ClientDataSet4.Params[0].DataType:=ftString;
ClientDataSet4.Params[1].text:='bj';
ClientDataSet4.Params[1].DataType:=ftString;
ClientDataSet4.Params[2].text:='xh';
ClientDataSet4.Params[2].DataType:=ftString;
ClientDataSet4.Params[3].text:='xq';
ClientDataSet4.Params[3].DataType:=ftString;
ClientDataSet4.Params.ParamByName('xb').asstring:=Quotedstr(trim(xpcombobox1.Text));
ClientDataSet4.Params.ParamByName('bj').asstring:=Quotedstr(trim(xpcombobox2.Text));
ClientDataSet4.Params.ParamByName('xh').asstring:=Quotedstr(trim(xpcombobox3.Text));
ClientDataSet4.Params.ParamByName('xq').asstring:='1';
 
救命啊,难道就没人,遇到过这方面的问题?
 
好惨,有一个给逼疯了.....

究竟还有什么问题啊?描述清楚点啊。
你的PARAMS.CLEAR写在DataRequest(sql3);前面不就行?
 
谢谢 jenhon 一直关注,我是快成神仙了,天堂的隔壁就是疯人院~~!

上面我CLEAR调整是放在SQL提交前的,却遇到参数类型问题,手动添加时就是ftString这类型通过的,绕过之后又是多步OLE错误.
独立FROM成功,为什么在这里不行,好郁闷啊,多个ClientDataSet的原因,我还特提其他的ClientDataSet.close; ClientDataSet.active:=false; 无奈的是,evil come still .
 
你的clientdataset应该是新的,不能用原来用过的,有试过吗?
新建一个clientdataset。
 
搞不清楚,

ClientDataSet4.Params.ParamByName('xb').asstring:=Quotedstr(trim(xpcombobox1.Text));
ClientDataSet4.Params.ParamByName('bj').asstring:=Quotedstr(trim(xpcombobox2.Text));
ClientDataSet4.Params.ParamByName('xh').asstring:=Quotedstr(trim(xpcombobox3.Text));

应该没问题啊
 
看来这方面资料还不多,大家接触MIDAS还不多吧,有很多问题,时间到了,换了个思路完成.谢谢大家~~~!
来结贴了~~!
 
谢谢大家闭幕~~
 
多人接受答案了。
 
后退
顶部