急急急!!!我要疯了 他奶奶的 谁能帮我把这个存储过程在MIDAS的ClientDataSet中调用??200分不够再加200分(C++Builder) (20

葬月

Unregistered / Unconfirmed
GUEST, unregistred user!
急急急!!!我要疯了 他奶奶的 谁能帮我把这个存储过程在MIDAS的ClientDataSet中调用??200分不够再加200分(C++Builder) (200分)<br />我的存储是
CREATE PROCEDURE AddReg
@un char(15),
@pw char(15),
@changpw char(15),
@quanxian int,
@begin
time smalldatetime,
@endtime smalldatetime,
@name char(10),
@photo image,
@email char(50),
@result int output,
@errormsg char(50) output,
@AdminPW char(15)
AS
if exists ( select 用户名 from MyPower
where 用户名=@un)
begin
select @result=0
select @errormsg='用户名<'+rtrim(@un)+'>已经存在'
return (0)
end
Insert MyPower values(@un,@pw,@changpw,@quanxian,
@begin
time,@endtime,@name,@photo,@email)
select @result=1
GO
注意
要上传个image 还有两个返回值
请确保代码可以执行
 
你的那些参数什么意思,说明白一点,我来看看,说说程序的背景。
 
只是用来注册个个人信息的 什么用户名,密码,姓名,email 照片
 
你不能在服务端写一个方法调用它吗?我想应该是可以的吧。
 
怎么????难道不能在MIDAS客户端调用存储过程???不会吧
就算用方法调用,,那image怎么办??如何传递????
 
其实有些问题换一种方式也许就很容易解决。客户端不行,就换成服务端解决。我想你可以
改一改存储过程,把想要的结果存到临时表中。或者在服务端直接查库执行存储过程。
或者把想要的信息写到文件中,通过共享文件夹直接访问。(不过那不是midas结构了)。
还有,若真用存储过程,用程序断点跟一下,查找一下问题在什么地方,也许就容易解决了。
 
1. 你在中間層放上TStoredProc,過程名字設為AddReg,再放一TDataSetProvider組件指向TStoredProc
組件
2.在客戶端放一dcomconnection,連接組件及TClientDataSet,tclientDataset的povider為
TDataSetProvider組件,在TDataSetProvider組件上單擊鼠標右鍵,選Fetch Parms,取得參數
3.在每次執行存儲程時作如下語句:
ClientDataSet1.FetchParams;
ClientDataSet1.execute;
 
参数是变化的,,怎么办
 
1. 你在中間層放上TStoredProc,過程名字設為AddReg,再放一TDataSetProvider組件指向TStoredProc
組件
2.在客戶端放一dcomconnection,連接組件及TClientDataSet,tclientDataset的povider為
TDataSetProvider組件。在调用按钮下代码为:
procedure TForm1.Button1Click(Sender: TObject);
Var
StrAdoQuery : String;
x :String;
begin
StrAdoQuery :='declare @un char(15),
@pw char(15),
@changpw char(15),
@quanxian int,
@begin
time smalldatetime,
@endtime smalldatetime,
@name char(10),
@photo image,
@email char(50),
@result int output,
@errormsg char(50) output,
@AdminPW char(15) '+
'execute AddReg 输入参数1,输入参数2,'+
'输出参数 output,'+
'输出参数 output'+
' select 输出参数,输出参数 ';
With clientdatasetdo
begin
clientdataset.Close;
clientdataset.SQL.Clear;
clientdataset.SQL.Add(StrAdoQuery);
clientdataset.open;
end;
end;
 
1. 你在中間層放上TStoredProc,過程名字設為AddReg,再放一TDataSetProvider組件指向TStoredProc
組件
2.在客戶端放一dcomconnection,連接組件及TClientDataSet,tclientDataset的povider為
TDataSetProvider組件。在调用按钮下代码为:
procedure TForm1.Button1Click(Sender: TObject);
Var
StrAdoQuery : String;
x :String;
begin
StrAdoQuery :='declare @result int output,
@errormsg char(50) output,
@AdminPW char(15) '+
'execute AddReg 输入参数1,输入参数2,'+
'输出参数 output,'+
'输出参数 output'+
' select 输出参数,输出参数 ';
With clientdatasetdo
begin
clientdataset.Close;
clientdataset.SQL.Clear;
clientdataset.SQL.Add(StrAdoQuery);
clientdataset.open;
end;
end;
好像因该这样,
 
Insert MyPower values(@un,@pw,@changpw,@quanxian,
@begin
time,@endtime,@name,@photo,@email)
????
insert into 吧应该是!
 
declare @result int output,
 
我的做法是把调用存储过程的代码封装为对象方法,客户端直接调用此对象方法。由于存储
过程本身是自己负责则事务的管理,而不是由MTS/COM+负责的,因此没有必要在TClientDataSet
里进行调用。
 
顶部