GARANTIR DESCONTO

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


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

Darkducke

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar