Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   EOleException La Operacion en varios pasos genero errores (https://www.clubdelphi.com/foros/showthread.php?t=38750)

Lucas_diaz1810 27-12-2006 09:43:52

EOleException La Operacion en varios pasos genero errores
 
Saludos

El problema es el siguiente:

Estoy ejecuntando dos querys uno para leer datos de de los empleados de la Tabla Empleados y tomar el codigo de estos guardando el valor en una variable, para luego en otro query consultar por codigo las ausencias de ese empleado en la tabla ausencias y grabar en otra tabla (tmpAus) para la cual utilizo un ADOTable la cantidad de ausencias de c/u de los empleados para su respectivo desc. en la nomina.

Hasta aqui todo va bien pero al ir grabando a la tabla (tmpaus) luego de cierta cantidad de registro truena el delphi y el mensaje es:

EOleException La Operacion en varios pasos genero errores

que prodria ser?

Aqui esta el codigo del boton cargar ausencias, que es el uso para generar lo antes mencionado.

Código Delphi [-]
procedure TFrmAusencias.BtnEjecutarClick(Sender: TObject);
 var
 Contador: Integer;
 Valor :String;
 begin
       Label2.Visible:= True;
                       // Eliminar Todos Los Registros TBLtemp
      qryBorrar.Close;
      qryBorrar.SQL.Clear;
      qryBorrar.SQL.Append('DELETE FROM tmpaus');
      qryBorrar.SQL.Append('WHERE Codbar => 1');
      qryBorrar.ExecSQL;
                     // Comenzamos a Cargar las Ausencias aTabla TmpAus
                QryEmpleados.First;
                 while not QryEmpleados.Eof do
                 begin
                 Valor := QryEmpleadoscodbar.AsString;
                                 // consultar y contar ausencias
                 qryAusencias.Close;
                 qryAusencias.SQL.Clear;
                 qryAusencias.SQL.Append('SELECT codigo, codbar FROM ausencia');
                 qryAusencias.SQL.Append('WHERE Codbar ='+Valor);
                 qryAusencias.Open;
                               // Verificamos si la consulta tiene datos
                      if not qryAusencias.IsEmpty then
                      begin
                          Contador := qryAusencias.RecordCount;
                          ADOTable1.Append;
                          ADOTable1.Fields[0].Value := qryAusencias.Fields[0].Value;
                          ADOTable1.Fields[1].Value := qryAusencias.Fields[1].Value;
                          ADOTable1.Fields[2].Value := contador;
                                              //Mostrar Barra de Progreso al los usuarios
                          progressbar1.Position := QryEmpleados.RecNo;
                                             // Hacemos el next para QryEmpleados
                         QryEmpleados.Next;
                      end
                         else  // Si la consulta no tiene datos se ejecuta aqui
                      begin
                         QryEmpleados.Next;
                      end;
                 end;
                                     //Informando al usuario el final del proceso
          Showmessage('Proceso finalizado');
          progressbar1.Position:= qryAusencias.RecNo-1;
          Label2.Visible:=False;
 end;

Lepe 27-12-2006 15:43:02

Es imposible seguir el código, añade las etiquetas delphi.

http://www.clubdelphi.com/foros/showthread.php?t=10003

Saludos

Lepe 28-12-2006 13:11:36

En principio, veo que no haces un Adotable1.Post.

Realmente no hace falta, ya que al moverse de registro, se guarda el anterior, pero no está demás añadirlo.

Quizás te interese AdoTable1.AppendRecord (espero que tenga ese método el Adotable), que solo es una línea.

También puedes simplificar esto:
Código Delphi [-]
    QryEmpleados.Next;
                      end
                         else  // Si la consulta no tiene datos se ejecuta aqui
                      begin
                         QryEmpleados.Next;
                      end;

Esa línea se debe ejecutar en ambos casos del if, por tanto, sácalo fuera. No dará error, es una simple optimización.

Saludos


La franja horaria es GMT +2. Ahora son las 19:27:32.

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