如何写c/s的服务器端的方法(200分)

  • 主题发起人 主题发起人 gsfxm
  • 开始时间 开始时间
G

gsfxm

Unregistered / Unconfirmed
GUEST, unregistred user!
我在服务器端增加一个方法,将客户端的传来的数据传给服务器端的一个存储过程,并且
执行这个存储过程,如何写法。
如:function emsave(text:variant):variant
begin
adostoredproc1.parameters.params.parambyname('@text'):=text;
adostoredproc1.exec;
end;
他老说adostoredproc1没有定义
 
你没有声明此函数。在public下添加function emsave(text:variant):variant;
 
PUBLICE emsave(text:variant):variant;
function FORM1.emsave(text:variant):variant
begin
adostoredproc1.parameters.params.parambyname('@text'):=text;
adostoredproc1.exec;
end;
 
已经定义了,adostoredproc1是一个控件,我因该如何引用
 
若能执行这个服务器端的方法(没有提示找不到),说明方法定义是成功的。
只是方法中的代码有错误。不会是提示你的存储控件没有定义吧?你先明确
一下你的存储控件的名称是否与代码中对应。我想,很有可能是提示你的存储
控件的参数有误,是它的参数没有定义。若如此,就该检查一下这个存储控件
是否正确定义了参数。(在属性中设置好)
若参数没有问题。试一下
adostoredproc1.edit;
adostoredproc1.parameters.params.parambyname('@text'):=text;
adostoredproc1.prepare;
adostoredproc1.execproc
adostoredproc1.post;
很可能是参数的原因。
 
我按了保存后,他就自动生成了一个过程,我对下面的过程进行了修改,现在我想
增加一个返回参数mailname,如何写,再加200分
procedure TSlMailServer.EmSave(mailtype, address, subject, attachment,
account, checked, readed, charset, mailtext: OleVariant);
begin
StMailSave.Parameters.ParamByName('@type').Value:=mailtype;
StMailSave.Parameters.ParamByName('@address').Value:=address;
StMailSave.Parameters.ParamByName('@subject').Value:=subject;
StMailSave.Parameters.ParamByName('@attachment').Value:=attachment;
StMailSave.Parameters.ParamByName('@account').Value:=account;
StMailSave.Parameters.ParamByName('@checked').Value:=checked;
StMailSave.Parameters.ParamByName('@readed').Value:=readed;
StMailSave.Parameters.ParamByName('@charset').Value:=charset;
StMailSave.Parameters.ParamByName('@mailtext').Value:=mailtext;
StMailSave.ExecProc;
//mailname:=StMailSave.Parameters.Parambyname('@mailname').value;
end;
 
在Type library中
在新增方法后,在Parameters页中填写参数名(Name),类型(type),Modify时
将类型名字后加*,然后双击modify那栏,在out前打色就OK了
有个范例程序:
http://delphi.mychangshu.com/dispdoc.asp?id=536
里面的SERVER对象的方法中有var 参数。
 
客户端这样写,最后一个参数是返回参数,执行后说内存已锁定。
emdbdm.Sc1.AppServer.emsave('n',editto.text,editsubject.text,fj1,emaccount,'1','1','gb2312',memo1.Lines.Text,mailname);
 
我自己解决了,怎么每次都是这样
 
后退
顶部