S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #1 我有一个信息输入界面,里边涉及很多内容。有十几个表,而且每个表都有上万条记录。现在打开界面时如果在create事件里逐个open,打开界面的时间会很长,现在我为每个表建立一个线程,每个线程里写一句open语句。然后在界面的create事件里逐个创建线程。可是这样会有错误,不知为何?
我有一个信息输入界面,里边涉及很多内容。有十几个表,而且每个表都有上万条记录。现在打开界面时如果在create事件里逐个open,打开界面的时间会很长,现在我为每个表建立一个线程,每个线程里写一句open语句。然后在界面的create事件里逐个创建线程。可是这样会有错误,不知为何?
S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #2 线程部分代码 uses U_datamodule; procedure ThreadOpenGdazb.Execute; begin { Place thread code here } freeonterminate:=true; synchronize(OpenDataset); end; procedure ThreadOpenGdazb.OpenDataset; begin CustomerData.CDS_Gdazb.Open; end;
线程部分代码 uses U_datamodule; procedure ThreadOpenGdazb.Execute; begin { Place thread code here } freeonterminate:=true; synchronize(OpenDataset); end; procedure ThreadOpenGdazb.OpenDataset; begin CustomerData.CDS_Gdazb.Open; end;
J jianguobu Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #3 我认为你这个想法就不好 十几个表,每个有上万条记录?有必要吗? 做程序要尽量减少网络传输呀.
S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #5 调用部分代码: create //// ...... CustomerData.CDS_Gdfbb.close; CustomerData.CDS_Gdfbb.Open;//这条语句放到下边线程创建之后运行就出错 ThreadOpenGdfbb1 :=ThreadOpenGdfbb.create(false);//只此一句后面的不要不会出错 ThreadOpenGdkpb1 :=ThreadOpenGdkpb.create(false); ThrdOpenWtggb1:=ThrdOpenWtggb.create(false); .....
调用部分代码: create //// ...... CustomerData.CDS_Gdfbb.close; CustomerData.CDS_Gdfbb.Open;//这条语句放到下边线程创建之后运行就出错 ThreadOpenGdfbb1 :=ThreadOpenGdfbb.create(false);//只此一句后面的不要不会出错 ThreadOpenGdkpb1 :=ThreadOpenGdkpb.create(false); ThrdOpenWtggb1:=ThrdOpenWtggb.create(false); .....
S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #6 是这样,主表有上万条记录,从表10几个,是采用三层结构做的。客户为了方便输入用pagecontrol逐页分开的。本来在点击相应页面的时候打开数据集,可是这样停顿比较厉害。客户不同意。
S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #7 to itren, 怎么样让数据和界面无关?help me
J jianguobu Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #8 既然是录入数据,就不要从后台取数据出来呀. 你又不是查询.
S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #9 现在不是讨论这个问题的时候了。东西都已经在用了。现在是改进。补救。想想我提的这个问题吧。谢谢
一 一飞冲天 Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-08 #10 具体方法你可以去多线程那里问。 别管自己是多少层结构,你的做法就是把数据库的东西一下子全部保存到本地数据集里对吧。如果数据多,就算你开多线程一样会有延迟的。而且,如果你采用的是一次集中下,你又怎么保证数据的统一性呢?? 你看看这样的方法可以不可以:你显示的时候只是取要用到的那一部分数据。 这个时候你会说:是啊,原来我就是这么做的,但,在PAGE切换的时候,有延迟,用户乱点还会死机。。。一个PAGE里要提供显示用的数据不会很多的,当然如果你里面有个DBGRID而表里有10000000000条记录,你一次全取过来,那慢是谁的错??取个10个就够了,要那么多做什么呢,你看得来,用户也烦啊。 一句话,物尽其用!
具体方法你可以去多线程那里问。 别管自己是多少层结构,你的做法就是把数据库的东西一下子全部保存到本地数据集里对吧。如果数据多,就算你开多线程一样会有延迟的。而且,如果你采用的是一次集中下,你又怎么保证数据的统一性呢?? 你看看这样的方法可以不可以:你显示的时候只是取要用到的那一部分数据。 这个时候你会说:是啊,原来我就是这么做的,但,在PAGE切换的时候,有延迟,用户乱点还会死机。。。一个PAGE里要提供显示用的数据不会很多的,当然如果你里面有个DBGRID而表里有10000000000条记录,你一次全取过来,那慢是谁的错??取个10个就够了,要那么多做什么呢,你看得来,用户也烦啊。 一句话,物尽其用!
S sunrainwang Unregistered / Unconfirmed GUEST, unregistred user! 2004-04-09 #12 一飞冲天: 我就是这样做的packetrecords=10 lich: 开一个线程延时长一些,我想多开几个线程,加快数据打开速度。但是这么多数据集在一个线程里边一起打开是不会出错的,在多个线程里边打开就会出错
一飞冲天: 我就是这样做的packetrecords=10 lich: 开一个线程延时长一些,我想多开几个线程,加快数据打开速度。但是这么多数据集在一个线程里边一起打开是不会出错的,在多个线程里边打开就会出错