Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > FireMonkey
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2020
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 19
amadis Va por buen camino
Question Thread Firemonkey Android query

Que tal compañeros.

Estoy tratando de hacer funcionar un query Firedac (Sqlite). que toma datos de un clientdataset remoto.

Estoy tratando de aplicar este ejemplo de thread.

Código Delphi [-]
AniIndicator1.Enabled := True;
  Timer1.Enabled := True;
  Button1.Enabled := False;

  TThread.CreateAnonymousThread(procedure
    const
      Max = 20;
    begin
      for var i := 1 to Max do
      begin
        DoSomething(i);
        TThread.Synchronize(TThread.Current, procedure
          begin
            Progress := i * 100 div Max;
          end);
      end;
      TThread.Synchronize(TThread.Current, EndProgress);
    end).Start;


Pero cuando le pongo lo que necesito dentro NO FUNCIONA, NO SE EJECUTA

Este es el código que pretendo hacer funcionar

Código Delphi [-]
    
            QryRec := TFDQuery.Create(NIL);
                        QryRec.Connection := datos.FDconmovil;
                       QryRec.Transaction := datos.FDTrans;
                       QryRec.Connection.StartTransaction;
                      datos.CDSVende.IndexFieldNames := 'ID; COBRADOR';
                      datos.CDSVende.First;
                      max := datos.CDSVende.RecordCount;

                    TThread.CreateAnonymousThread(procedure

                      begin
                        for  i := 1 to Max do
                        begin

                          QryRec.Close;
                          QryRec.SQL.Clear;
                          QryRec.SQL.Append('INSERT INTO VENDEDOR');
                          QryRec.SQL.Append('(ID, VENDEDOR)');
                          QryRec.SQL.Append('values(:id, :v) ');
                          QryRec.ParamByName('id').AsInteger := datos.CDSVendeID.VALUE;
                          QryRec.ParamByName('v').AsString :=  datos.CDSVendeCOBRADOR.Value;
                          QryRec.ExecSQL;
                          datos.CDSVende.Next;


                          TThread.Synchronize(TThread.Current, procedure
                            begin
                              Progress := i * 100 div Max;
                              Label1.Text := inttostr(i); // esta linea es a fin de prueba para saber si corre y pues NO CORRE
                            end);
                        end;
                        TThread.Synchronize(TThread.Current, fin);
                      end).Start;


                      QryRec.Connection.Commit;
                      QryRec.free;

Si no pongo nada antes del primer TThread.Synchronize si corre.

¿que me estoy salteando u olvidando??
Responder Con Cita
  #2  
Antiguo 23-09-2020
el-mono el-mono is offline
Miembro
 
Registrado: abr 2008
Ubicación: Lules
Posts: 176
Poder: 17
el-mono Va por buen camino
Amadis como va. Mira este post que a mi me funciono de esta manera:


http://delphiaccess.com/foros/index....ta-en-un-hilo/
Responder Con Cita
  #3  
Antiguo 23-09-2020
amadis amadis is offline
Miembro
 
Registrado: may 2005
Ubicación: San José, Colón, Entre Ríos, Argentina
Posts: 315
Poder: 19
amadis Va por buen camino
Muchas gracias, estudiaré el link que mencionas.

Aprovecho para comentar que había logrado ejecutar el hilo de la siguiente forma.

En realidad son 4 querys que ejecuto, uno tras otro aunque es indistinto.

Entonces hice un procedimiento por cada query y dentro del hilo los ejecuto a todos.

Código Delphi [-]
AniIndicator1.Enabled := True;
  Timer1.Enabled := True;
  Button1.Enabled := False;

  TThread.CreateAnonymousThread(procedure
      begin
        Q1;
        Q2;
        Q3;
        Q4;
        TThread.Synchronize(TThread.Current, procedure
          begin
            //mostraba progreso
          end);
      end;
      TThread.Synchronize(TThread.Current, EndProgress);
    end).Start;

De esa forma el tocar el boton que ejecuta ya se largaban los 4 querys en carrera, funciona, pero no se cuando terminan. Me iba dando cuenta porque como sincroniza una tabla contra el clientdataset remoto estaba viendo los cambios, pero era tal cual carrera. Todos corriendo a la par.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
BASS Firemonkey Radio Player Delphi XE7 - Pantalla Negra en Android wolfran_hack FireMonkey 3 27-07-2021 18:04:30
Ordenar datos por columna en stringgrid Firemonkey Android S0BBLy FireMonkey 2 23-01-2020 20:28:06
Android 5.0 Lollipop Style Pack para FireMonkey wolfran_hack Desarrollo en Delphi para Android 4 23-07-2015 03:38:43
Aplicación en FireMonkey para Android en Delphi XE6 MercedesReto Desarrollo en Delphi para Android 3 17-06-2015 18:19:54
Componentes para FireMonkey - Android gandalf_uy Desarrollo en Delphi para Android 2 19-11-2013 19:09:18


La franja horaria es GMT +2. Ahora son las 03:29:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi