Fórum Thread com TIBDataSet #345048
24/08/2007
0
Galera, to tentando coloca um codigo dentro de uma trhead, eu peguei este exemplo com Tquery, funciona que é uma blz!
só que com IBDataSet ele soh aceita ler a primeira query..
dai em diante não faz nada ou da erro...
pra quem quizer ver o exemplo ta aqui:
http://delphi.about.com/od/kbthread/a/query_threading.htm
eu acho que o problema ta quando vou referenciar a conexão do TIBDataSet criado com o database que tenho no forumulario...
como o tquery usa string de conexão não da esse problema, e como o ibdataset tenho que referenciar o objeto ai acho que é por isso...
meu execute ficou assim:
o resto é praticamente igual
só que com IBDataSet ele soh aceita ler a primeira query..
dai em diante não faz nada ou da erro...
pra quem quizer ver o exemplo ta aqui:
http://delphi.about.com/od/kbthread/a/query_threading.htm
eu acho que o problema ta quando vou referenciar a conexão do TIBDataSet criado com o database que tenho no forumulario...
como o tquery usa string de conexão não da esse problema, e como o ibdataset tenho que referenciar o objeto ai acho que é por isso...
meu execute ficou assim:
o resto é praticamente igual
procedure TCalcThread.Execute;
var
// Qry : TADOQuery;
Qry : TIbDataSet;
i : integer;
// Ctc : TMultiReadExclusiveWriteSynchronizer;
begin
inherited;
// Ctc := TMultiReadExclusiveWriteSynchronizer.Create(Nil);
ticks := GetTickCount();
CoInitialize(nil); //CoInitialize was not called
// Qry := TADOQuery.Create(nil);
Qry := TIbDataSet.Create(nil);
try
// Qry.Connection := Form1.ADOConnection1; MUST USE OWN CONNECTION
{ Qry.ConnectionString := ConnStr;
Qry.CursorLocation := clUseServer;
Qry.LockType := ltReadOnly;
Qry.CursorType := ctOpenForwardOnly;
Qry.SQL.Text := SQLString;
}
// Qry.Database := ConnBD;
Qry.Database := Dm.IbCon;
Qry.SelectSQL.Text := SQLString;
ListBox.Clear;
Qry.Open;
while NOT Qry.Eof and NOT Terminated do
begin
ListBox.Items.Insert(0, Format(´¬s - ¬d´, [Qry.Fields[0].asString,Qry.Fields[1].AsInteger]));
//Canvas Does NOT Allow Drawing if not called through Synhronize
Synchronize(RefreshCount);
Qry.Next;
end; //while
// if Terminated then break;
finally
Qry.Free;
end;
CoUninitialize();
ticks := GetTickCount - ticks;
TicksLabel.Caption := ´Ticks: ´ + IntToStr(ticks);
end; //TCalcThread.Execute;Darkducke
Curtir tópico
+ 0
Responder
Posts
24/08/2007
Marcosrocha
ele soh aceita ler a primeira query..
dai em diante não faz nada ou da erro...
Já parou pra pensar que pode estar dando erro e a Thread para? Quando uma Thread obtem uma exception, (se nao tratada) ela termina automaticamente...
Responder
Gostei + 0
25/08/2007
Darkducke
[quote:68a4944150=´darkducke´]ele soh aceita ler a primeira query..
dai em diante não faz nada ou da erro...
Já parou pra pensar que pode estar dando erro e a Thread para? Quando uma Thread obtem uma exception, (se nao tratada) ela termina automaticamente...[/quote:68a4944150]
eu acho que o erro ta na conexao
alguma ideia de como fazer?
pq acho que o problema ta quando faço isso:
CalcThread.ConnBD := Dm.IbCon;
ConnBD é uma veriavel do tipo TIBConnection e faz referencia ao
Dm.IbCon que é um compenente do tipo TIBConnection que ta no meu data modulo já com a conexao prontinha...
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)