当前位置:主页>仓库管理软件> 列表

200分,求一个解决方法 解决马上另开帖结帐 找用友财务软件8.52

销售管理软件版1楼: 多个adoquery对同一个表进行数据插入,每个adoquery都有一个对应的adoconnection
每个adoquery一次插入20~120条记录之间,每3s就会发生一次,如何实现,具体的说明和本人写的一部分代码请到
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3361271

2楼: 太空通了 如用友财务软件8.52

3楼: 看了一下老兄的代码,感觉比较乱。读不太懂。
不过看样子老兄对d的tthread类不是很了解,强烈建议
看看,比自己管理多xian程安全多了。
1 建议:procedure TMonitor_Data.Save_Batt_Vol_data;
a TAdoconnection有一个keepcontion,大概这样写吧,它保持连接,建议:=false;
b adoqry.Free; 前面首先用close比较好。

2 多线程处理
a 虽然对入库用了临界,但是主要的
Rec_data[i*2+1]:= GetCommVol(crcBuf[i*6+4],crcBuf[i*6+3],2);
入库的数据还要这样处理所得,如果没有其他保护则会出现问题。
b 每2/12秒就create一个contion并且updata,这并不是一个好主意。
建议;
i Monitor_Data类不考虑多线程的处理方法,按照一个串口的标准
写一个监视处理的类方法。(这个楼主应该没问题吧)
注意:在这个类里面在MONITOR_DATA.CREATE里创建一个TADOCONTION,
在DESTORY里面conn.close conn.free;
输入输出不要考虑主界面,以数组,记录等方式输入输出。
ii 使用的时候建立
tthread类,在tthread类里面实现monitor_data的创建和监视。
用synchronization对主界面进行访问控制。
提示:就是把要访问的主界面控件在一个函数里写入,然后用
这个方法执行。要注意use mainform.pas
这样就完成了多线程的监视工作,每个都独立工作。当然这和lz
的想法不是一致的,但是在开发中经常这样。oo吗,就是这样

如果非要实现用一个函数监视串口,几个多线程发送也很容易。
主要注意的就是同步, Rec_data是一个数据区,还牵扯到crcBuf
数据区,n个线程 用Save_Batt_Vol_data;访问读取,还有opinion_style,transact_Batt_vol_byte在不知道什么时候updata,不同步,怎么能不出问题。
{不知道你到底怎么调用的,不过建议试着在这些函数里使用临界区}
而且在一个发送线程中不能adocon----create-- send data --free,因为每一个
adoconntion的创建都要建立socket数据服务也要socket,发送那么


400个字节就关闭,服务器也要closesocket,这个代价有点大哦,
建议建立足够的adocon,每个线程一个。

这是几点建议,楼主看看!!

4楼: 每个Query一个连接太耗费资源了
连接应该共享 因为操作的是同一个表

5楼: / 自定义过程实现关闭程序中所有的Query
procedure QueryClose;
var
i : Integer;
begin
for i := 0 to DM.ComponentCount-1 do
begin
if (DM.Components[i] is TQuery ) then
TQuery(DM.Components[i]).Close;
end;
end;
把这个自定义过程声明为全局的,然后在需要打开Query前调用一下就可以关闭所有的Query节省资源!

6楼: 多人接受答案了。