1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Donation with Paypal!!!

    Go to your paypal account and send directly donation to [email protected]

    1 month - 10 $ - Standart VIP

    6 months - 20 $- Standart VIP

    1 year - 30 $- Standart VIP

    2 years - 50 $- Standart VIP

    Gold member for life - 150 $- Standart VIP

    High Vip (Standart VIP include) group please send PM or email to [email protected] for info

    After Donation please send email to [email protected]

  3. Donation Ways 2020


    Paysend
  4. Telegram
Dismiss Notice

Donation with Paypal!!!

Go to your paypal account and send directly donation to [email protected]

1 month - 10 $ - Standart VIP

6 months - 20 $- Standart VIP

1 year - 30 $- Standart VIP

2 years - 50 $- Standart VIP

Gold member for life - 150 $- Standart VIP

High Vip (Standart VIP include) group please send PM or email to [email protected] for info

After Donation please send email to [email protected]

Dismiss Notice
For open hidden message no need write thanks, thank etc. Enough is click to like button on right side of thread.

Fast Looping

Discussion in 'Delphi Help&Requests' started by sitinurazizah, Jun 20, 2014.

  1. sitinurazizah
    Online

    sitinurazizah Guest

    hi..

    i have problem to select 124000 record of mysql database to list view quickly..i have wrote this code to load it :

    ADOQuery2.Active:=false;
    ADOQuery2.SQL.Text:='select judul,artis from lagu order by popular limit 0,124000 ';
    ADOQuery2.Active:=true;

    ADOQuery2.First;
    while NOT(ADOQuery2.Eof) do
    begin

       Itm := ListView1.Items.Add;
       Itm.Caption := ADOQuery2judul.Value;
       Itm.SubItems.Add(ADOQuery2artis.Value);
       Application.ProcessMessages;
       Sleep(1);
       ADOQuery2.Next;
    end;

    need about 4 minute until form show..because i put the code in formcreate event.

    is there a faster way to do it?


    thanks before

    Best regard,

    pram
     
  2. AdminDF
    Online

    AdminDFAdminDF is a Verified Member Delphifan Staff Member DF Staff

    RE:

    maybe you must use thread or multithread for this count 124 000 isnt small value
     
  3. AdminDF
    Online

    AdminDFAdminDF is a Verified Member Delphifan Staff Member DF Staff

    RE:

    One example for you

    Code:
    The main code goes in the thread's Execute method:
    Code:
     procedure TCalcThread.Execute;
     var
       Qry : TADOQuery;
       k : integer;
     begin
       inherited;
     
       CoInitialize(nil) ; //CoInitialize was not called
     
       Qry := TADOQuery.Create(nil) ;
       try
     // MUST USE OWN CONNECTION
     // Qry.Connection := Form1.ADOConnection1;
         Qry.ConnectionString := ConnStr;
         Qry.CursorLocation := clUseServer;
         Qry.LockType := ltReadOnly;
         Qry.CursorType := ctOpenForwardOnly;
         Qry.SQL.Text := SQLString;
     
         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 Synchronize
           Synchronize(RefreshCount) ;
     
           Qry.Next;
         end;
       finally
         Qry.Free;
       end;
     
       CoUninitialize() ;
     end;
     

Share This Page