首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

在做东东的时候的三个有关问题,网络连接,单实例,报表

2012-02-07 
在做东东的时候的三个问题,网络连接,单实例,报表1、报表,我用FastReport做的报表,报表是以流的形存在数据库

在做东东的时候的三个问题,网络连接,单实例,报表
1、报表,我用FastReport做的报表,报表是以流的形存在数据库中,要用时再从数据库中加载,但是在报表设计时就有问题了,因为报表是保存在数据中的,所以在设计好以后不知道怎么保存到数据库中?

2、我是用tserversocket、tclientsocket两上控件做了一个C/S东东,其中有两上问题,
        一是不知道怎么判断客户端和服务端是否连接上(在客户端判断),同时,当连接上服务器端以后,服务器端会传上一些数据到客户端,也就是说:clientsocket.open;后下面执行的语句要用到服务器传过来的数据,怎么样能让clientsocket.open;执行后,得到了服务器的数据后再执行后面的代码;
        二是当服务端/客户端某一端断电后,另一端怎么及时发现连接已断开,收到断开信息后再执行一些代码。
      (注:因为东东写的快差不多了,所以不想换控件)

3、因为服务器端只能是一个程式运行,所以还要一个单实例的东东。

急啊,那位高手告诉我怎么做啊,
如有DEMO更好
高手我啊,
可以的话加我Q:7814167


[解决办法]
接收或者发送数据的时候加上超时信息,等待超过时间了就认为是断电了
如:
procedure TSockThread.ClientExecute;
var
Stream: TWinSocketStream;
Buffer, strIn: string;
nRead: SmallInt;
begin
// CoInitialize(nil);
inherited FreeOnTerminate := TRUE;
try
try
Stream := TWinSocketStream.Create(ClientSocket, 2000);
// 设置100000毫秒的充许超时.
while (not Terminated) and (ClientSocket.Connected) do
try
Stream.WaitForData(3000);
[解决办法]
在dpr中修改为:
createmutex(nil, false, 'xxxx ');//任意字符
if getlasterror <> error_already_exists then
begin
Application.CreateForm(TPcSystem, form1);
Application.Run;
end;
[解决办法]
Fr从数据库表里载入
if not AdoQueryReport.FieldByName( 'FrFile ').IsNull then
begin
FRReport.LoadFromBlobField(AdoQueryReport.FieldByName( 'FrFile '));
end;

Fr保存到数据库表
在FRDesigner OnSaveReport事件里写代码
procedure TDesignForm.FRDesignerSaveReport(Report: TfrReport;
var ReportName: String; SaveAs: Boolean; var Saved: Boolean);
begin
if SaveAs then
begin
//另存
end else
begin
AdoQueryReport.Edit;
FRReport.SaveToBlobField(AdoQueryReport.FieldByName( 'FrFile '));
AdoQueryReport.Post;
end;
end;

热点排行