Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-03-2016
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question Uso de TFDScript

Buenas, estoy intentando hacer un pequeño Script para borrar unos datos en mi Firebird 2.5.
Estoy usando TFDScript y Delphi XE5.

Paso a continuación el código que tengo.
Código Delphi [-]
procedure TfrmVueltaAtrasUltimoBoletin.btnVueltaAtrasClick(Sender: TObject);
begin
  if IDYES = Application.MessageBox(PWideChar('¿Confirma vuelta atrás del último Boletín (BOD) registrado?'
    + #13#10 + 'Esta acción NO PODRÁ deshacerse.'),
    PWideChar(Self.Caption), MB_YESNO + MB_ICONQUESTION) then
  begin
    with DataModule1 do
    begin
      terminarTransaccion;
      try
        trxBoletin.StartTransaction;
        //BorrarUltimoBoletinRegistrado(scrptUltimoBoletin, GetCodBOD);
        scrptUltimoBoletin.SQLScriptFileName:='Scripts\VueltaAtras.sql';
        scrptUltimoBoletin.Params[0].AsInteger:=GetCodBOD;
        scrptUltimoBoletin.ValidateAll;
        scrptUltimoBoletin.ExecuteAll;
        trxBoletin.Commit;
        Application.MessageBox('Vuelta atrás terminada.',
          PWideChar(self.Caption), MB_OK + MB_ICONINFORMATION);
        Close;
      except
        on e:Exception do
        begin
          terminarTransaccion;
          mErrores(e, 'Imposible completar la operación solicitada.',
            self.Caption);
        end;
      end;
    end;
  end;
end;

Ahora muestro lo que tengo en el archivo .sql

Código SQL [-]
Delete from avisosxboletines_digitales a
Where a.cod_boletin_digital = :codigo;


Delete from avisosadminxboletines_digitales ax
where ax.cod_boletin_digital = :codigo;


Delete from boletines_digitales b
Where b.cod_boletin_digital = :codigo;

Update entorno_boletin_digital u set u.valor_ebd = CAST(u.valor_ebd AS integer) - 1
Where u.nombre_ebd = 'ULTIMO_NRO_EDICION';

El parámetro :codigo lo he definido a través de: TFDScript.Params

La cuestión es que esta secuencia no me tira ningún error, llega al Commit sin drama y me dice que la operación se hizo correctamente. Pero cuando voy a ver mi BBDD, los datos siguen ahí, no se borraron los registros que quiero.
He comprobado este script SQL haciéndolo directamente en Script Executive de IBExpert y funciona bien, no hay errores.
¿Podría decirme alguien que estoy haciendo mal?

Muchas gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #2  
Antiguo 09-03-2016
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Está claro:
- GetCodBOD no devuelve el valor que esperas (pon un showMessage)
- el scrptUltimoBoletin no está asociado con la transacción trxBoletin

Me inclino por el primer error.

Saludos!!
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 15-03-2016
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino
Question

Cita:
Empezado por Lepe Ver Mensaje
Está claro:
- GetCodBOD no devuelve el valor que esperas (pon un showMessage)
- el scrptUltimoBoletin no está asociado con la transacción trxBoletin

Me inclino por el primer error.

Saludos!!
Hola compañero, gracias por tu aporte.
Te cuento.
Revisé todo lo que proponías.

En lugar de GetCodBOD puse un valor numérico, 200215, que estoy seguro que está en los registros de la BBDD.
scrptUltimoBoletin Si estaba asociada con la transacción trxBoletin, y esta con el componente de Conexión, cntBoletin. Hice un Select y responde perfectamente, con un TFDQuery.

Ejecuté el programa y nada.
No puedo dar con el problema...

Gracias, Santiago.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #4  
Antiguo 16-03-2016
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 583
Poder: 21
santiago14 Va por buen camino

Qué mas puedo decir... y escribir.
Encontré la falla.
Resulta que en el script había cuatro consultas: 3 Delete's y 1 Update.

En la BBDD (Firebird) tenía los permisos para hacer el Update sobre la tabla pero NO tenía permisos para Delete en las otras...
Poniendo esos permisos se acabó el problema.
El Script tiene un Evento: OnError, supongo que tocando ahí se podrá detectar el error que ocasiona una consulta del Script.
En este caso, no enviaba ningún error y seguía. Me dí cuenta porque lo único que se ejecutaba era el Update.

Bueno.... Gracias.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Responder Con Cita
  #5  
Antiguo 16-03-2016
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estas cosas son de las que es difícil poder ayudar si no podemos probarla en un entorno exactamente igual. Pero menos mal que lo has solucionado
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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


La franja horaria es GMT +2. Ahora son las 20:08:05.


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