公司有一个系统要向另一个系统中传数据,一个是用asp做的,另一个用delphi做的
要将delphi程序数据库中的数据传到asp程序的数据库中,通过asp的querystring方式来传的
通过 shellexecute的方式,但这样每传一次都会打开一个IE窗口,比较耗费服务器的资源,请问有什么好办法吗?
不能通过WebService的方式,
不通过 findwindow来关闭IE,不知道indy里有控件来实现这个功能吗?
谢谢,急求
要将delphi程序数据库中的数据传到asp程序的数据库中,通过asp的querystring方式来传的
通过 shellexecute的方式,但这样每传一次都会打开一个IE窗口,比较耗费服务器的资源,请问有什么好办法吗?
不能通过WebService的方式,
不通过 findwindow来关闭IE,不知道indy里有控件来实现这个功能吗?
谢谢,急求
方法巨多,仅举一例。象你说的ShellExecute打开IE,以及WebBrowser,只能是比较低级的做法控件:idHTTPprocedure TForm1.Button1Click(Sender: TObject);
var
SS : TStringList;
begin
SS := TStringList.Create;
SS.Add('ID=1');
//有多个需要提交的QueryString,就继续Add Self.IdHTTP1.Post('http://localhost/xyz/answer.asp', SS); SS.Free;
end;
忘记说:上面实现的是 http://localhost/xyz/answer.asp?ID=1 这样的
procedure TFrmMain.TDBTimer(Sender: TObject);
var Url:TStringList;
begin
//刷新记录
with DataM.ADQTrans do
begin
close;
sql.Clear;
sql.Add('SELECT * FROM ql_hospital');
open;
end; if DataM.ADQTrans.RecordCount>0 then
begin
EdtLog.Text:=EdtLog.Lines.Text+'数据库中有新记录'+IntToStr(DataM.ADQTrans.RecordCount)+'条 '+FormatDateTime('yyyy-mm-dd hh:mm:ss',now())+#13#10; DataM.ADOCn.BeginTrans;
try
//插入
while not DataM.ADQTrans.Eof do
begin
with DataM.ADQMove do
begin
close;
sql.Clear;
sql.Add('INSERT INTO VoiceBak (QID,name,hosname,Doctors,send_mobile,result,send_time,success_time,send_count,issuccess,issend,InputTime) VALUES (:v1,:v2,:v3,:v4,:v5,:v6,:v7,:v8,:v9,:v10,:v11,:v12)');
parameters.ParamByName('v1').Value:=DataM.ADQTrans.FieldByName('ID').AsInteger;
parameters.ParamByName('v2').Value:=DataM.ADQTrans.FieldByName('name').AsString;
parameters.ParamByName('v3').Value:=DataM.ADQTrans.FieldByName('hosname').AsString;
parameters.ParamByName('v4').Value:=DataM.ADQTrans.FieldByName('Doctors').AsString;
parameters.ParamByName('v5').Value:=DataM.ADQTrans.FieldByName('send_mobile').AsString;
parameters.ParamByName('v6').Value:=DataM.ADQTrans.FieldByName('result').AsString;
parameters.ParamByName('v7').Value:=DataM.ADQTrans.FieldByName('send_time').AsDateTime;
parameters.ParamByName('v8').Value:=DataM.ADQTrans.FieldByName('success_time').AsDateTime;
parameters.ParamByName('v9').Value:=DataM.ADQTrans.FieldByName('send_count').AsInteger;
parameters.ParamByName('v10').Value:=DataM.ADQTrans.FieldByName('issuccess').AsInteger;
parameters.ParamByName('v11').Value:=DataM.ADQTrans.FieldByName('issend').AsInteger;
parameters.ParamByName('v12').Value:=DataM.ADQTrans.FieldByName('InputTime').AsDateTime;
ExecSql;
end;
//删除
with DataM.ADQMove do
begin
close;
sql.Clear;
sql.Add('DELETE FROM ql_hospital WHERE ID=:v1');
parameters.ParamByName('v1').Value:=DataM.ADQTrans.FieldByName('ID').AsInteger;
ExecSql;
end; Url:=TStringList.Create;
Url.Add('usernames='+Trim(DataM.ADQTrans.FieldByName('name').AsString));
Url.Add('&hosname='+Trim(DataM.ADQTrans.FieldByName('hosname').AsString));
Url.Add('&doctors='+Trim(DataM.ADQTrans.FieldByName('Doctors').AsString));
Url.Add('&caller='+Trim(Phone));
Url.Add('&send_mobile='+Trim(DataM.ADQTrans.FieldByName('send_mobile').AsString));
Url.Add('&result='+Trim(DataM.ADQTrans.FieldByName('result').AsString));
Url.Add('&send_time='+Trim(DataM.ADQTrans.FieldByName('send_time').AsString));
http.Post('http://'+Trim(IP)+'/qlrecv.asp',Url);
Url.Free;
EdtLog.Lines.Text:=EdtLog.Lines.Text+'发送给'+DataM.ADQTrans.FieldByName('send_mobile').AsString+'语音信息写入历史表成功! '+FormatDateTime('yyyy-mm-dd hh:mm:ss',now())+#13#10; DataM.ADQTrans.Next;
end;
DataM.ADOCn.CommitTrans;
except
DataM.ADOCn.RollbackTrans;
raise;
application.MessageBox('语音信息发送失败,请重启!','提示',mb_ok+mb_iconinformation);
application.Terminate;
end;
end
else
begin
EdtLog.Lines.Text:=EdtLog.Lines.Text+'数据库中无新记录 '+FormatDateTime('yyyy-mm-dd hh:mm:ss',now())+#13#10;
exit;
end;
end;
with DataM.ADQTrans do
begin
close;
sql.Clear;
sql.Add('SELECT * FROM ql_hospital');
open;
end;
需要释放吗,如何释放