服务器一切正常,每个过程都可以执行,为什么客户端取不到数据?即使把MIDAS重新注册了还是不行?但很奇怪的是把服务器运行起来就可以取到数据了。按道理服务器端只要第一次运行注册一下不就行了吗?
解决方案 »
- 如何取sql表或exel表中的数据,用notes自动发送邮件,求助!
- 求一小程序!截屏,并保存为bmp图片
- panel上画图问题
- 需要与EXCEL连接传输数据并打印EXCEL表格的简单源程序例子!
- delphi7中的indy servers中的idTCPServer中的关闭错误
- 高分求救
- 如何操控OleContainer控件里的Excel文件?(或者把用OLE变量连接的Excel 显示到自己的界面下?)
- 无标题栏移动窗口--问题
- 请问下各位前辈有没有通过识别图像的原理来写过计牌器的,请指点下!!!
- 请问Win9x中如何得到当前拨号网络中的DNS,听说注册标中有,如有souce,万分感谢!!!
- 在TQuery中用单个SQL语句删除或修改一个表,当有可能数据量巨大时,是不是应该分批处理,请各位大侠谈谈经验:针对sql server 和mysql分
- 用API操作注册表的问题!!
interfaceuses
Windows, Messages, SysUtils, Classes, ComServ, ComObj, VCLCom, DataBkr,
DBClient, ControlSer_TLB, StdVcl, ADODB, Provider, DB;type
TMainControlRDM = class(TRemoteDataModule, IMainControlRDM)
adcnectMain: TADOConnection;
adprocQuery: TADOStoredProc;
dspQuery: TDataSetProvider;
adprocQueryper: TADOStoredProc;
adprocQuery_Go: TADOStoredProc;
adprocQueryBill: TADOStoredProc;
adprocDelData: TADOStoredProc;
adoqUpload: TADOQuery;
dspUpload: TDataSetProvider;
adprocDelUpData: TADOStoredProc;
procedure RemoteDataModuleCreate(Sender: TObject);
procedure RemoteDataModuleDestroy(Sender: TObject);
procedure adoqUploadPostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
private
{ Private declarations }
protected
class procedure UpdateRegistry(Register: Boolean; const ClassID, ProgID: string); override;
procedure UpLoad(const UpLoadSQL: WideString; out ErrorFlag: OleVariant);
safecall;
procedure DelData(const SiteNo, Date: WideString); safecall;
procedure Query(const V_SiteNo: WideString; out Data: OleVariant;
const CurDate: WideString); safecall;
procedure Query_bill(const V_SiteNo: WideString; out Data: OleVariant;
const CurDate: WideString); safecall;
procedure Query_Go(const V_SiteNo: WideString; out Data: OleVariant;
const CurDate: WideString); safecall;
procedure Query_per(const V_SiteNo: WideString; out Data: OleVariant;
const CurDate: WideString); safecall;
public
{ Public declarations }
end;implementation
uses MainControlFrm;
{$R *.DFM}class procedure TMainControlRDM.UpdateRegistry(Register: Boolean; const ClassID, ProgID: string);
begin
if Register then
begin
inherited UpdateRegistry(Register, ClassID, ProgID);
EnableSocketTransport(ClassID);
EnableWebTransport(ClassID);
end else
begin
DisableSocketTransport(ClassID);
DisableWebTransport(ClassID);
inherited UpdateRegistry(Register, ClassID, ProgID);
end;
end;
procedure TMainControlRDM.UpLoad(const UpLoadSQL: WideString;
out ErrorFlag: OleVariant);
begin
adoqUpload.Close;
adoqUpload.SQL.Clear;
adoqUpload.SQL.Add(UpLoadSQL);
try
adoqUpload.ExecSQL;
ErrorFlag := 0 ;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(now)+ 'UpLoad Success!'))
except
on e : Exception do
begin
ErrorFlag := 1 ;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message + DateTimeToStr(now)));
end;
end;
end;procedure TMainControlRDM.RemoteDataModuleCreate(Sender: TObject);
begin
if Not( adcnectMain.Connected ) then
begin
adcnectMain.ConnectionString := MainControlForm.sConnect;
adcnectMain.Connected := true;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+ 'Connected Success'));
end;
MainControlForm.SetClientCount(1);end;
procedure TMainControlRDM.DelData(const SiteNo, Date: WideString);
begin
with adprocDelData do
begin
Close;
ProcedureName := 'sp_DelUpData';
Parameters.CreateParameter('@Site_No',ftString,pdInput,2,SiteNo);
Parameters.CreateParameter('@CurDate',ftString,pdInput,10,Date);
try
ExecProc;
//PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+'DelData: sp_DelUpData'));
close;
except
on e : Exception do
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message + DateTimeToStr(now)));
end;
end;
end;
procedure TMainControlRDM.Query(const V_SiteNo: WideString;
out Data: OleVariant; const CurDate: WideString);
begin
dspQuery.DataSet := adprocQuery;
with adprocQuery do
begin
Close;
ProcedureName := 'sp_query';
Parameters.CreateParameter('@Site_No',ftString,pdInput,2,V_SiteNo);
Parameters.CreateParameter('@Curdate',ftString,pdInput,10,CurDate);
try
Open;
except
on e : Exception do
begin
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message));
Exit;
end;
end;
Data := dspQuery.Data;
Close;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+'Query: sp_Query'));
end; // with
end;procedure TMainControlRDM.Query_bill(const V_SiteNo: WideString;
out Data: OleVariant; const CurDate: WideString);
begin
dspQuery.DataSet := adprocQueryBill;
with adprocQueryBill do
begin
Close;
ProcedureName := 'sp_query_bill';
Parameters.CreateParameter('@Site_No',ftString,pdInput,2,V_SiteNo);
Parameters.CreateParameter('@Curdate',ftString,pdInput,10,CurDate);
//Parameters[0].Value := V_SiteNo;
//Parameters[1].Value := CurDate;
try
Open;
except
on e : Exception do
begin
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message ));
exit;
end;
end;
Data := dspQuery.Data;
Close;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+'Query_go: sp_query_temp'));
end;
end;procedure TMainControlRDM.Query_Go(const V_SiteNo: WideString;
out Data: OleVariant; const CurDate: WideString);
begin
dspQuery.DataSet := adprocQuery_Go;
with adprocQuery_Go do
begin
Close;
ProcedureName := 'sp_query_temp';
Parameters.CreateParameter('@Site_No',ftString,pdInput,2,V_SiteNo);
Parameters.CreateParameter('@Curdate',ftString,pdInput,10,CurDate);
try
Open;
except
on e : Exception do
begin
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message ));
Exit;
end;
end;
Data := dspQuery.Data;
Close;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+'Query_go: sp_query_temp'));
end;
end;
procedure TMainControlRDM.Query_per(const V_SiteNo: WideString;
out Data: OleVariant; const CurDate: WideString);
begin
dspQuery.DataSet := adprocQueryper;
with adprocQueryper do
begin
Close;
ProcedureName := 'sp_query_per';
Parameters.CreateParameter('@Site_No',ftString,pdInput,2,V_SiteNo);
Parameters.CreateParameter('@Curdate',ftString,pdInput,10,CurDate);
//Parameters[0].Value := V_SiteNo; //sp_query_per
//Parameters[1].Value := CurDate;
try
Open;
except
on e : Exception do
begin
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message ));
Exit;
end;
end;
Data := dspQuery.Data;
Close;
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+'Query_per: sp_query_per'));
end;
end;procedure TMainControlRDM.RemoteDataModuleDestroy(Sender: TObject);
begin
MainControlForm.SetClientCount(-1);
PostMessage(MainFrmHand,WM_SaveLog,0,integer(DateTimeToStr(Now)+'DisConnect Success'));
end;procedure TMainControlRDM.adoqUploadPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
PostMessage(MainFrmHand,WM_SaveLog,0,integer(e.Message + DateTimeToStr(now)));
end;initialization
TComponentFactory.Create(ComServer, TMainControlRDM,
Class_MainControlRDM, ciMultiInstance, tmFree); // tmFree 线程模型Threading Model中的自由线程
// 只有tmFree才可以访问服务器界面线程
end.