Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-01-2008
crcmartell crcmartell is offline
Registrado
 
Registrado: dic 2007
Posts: 1
Poder: 0
crcmartell Va por buen camino
Ayuda en anidación de transacciones

Les mando el procedimiento donde tengo las transacciones, aqui una tabla depende de la otra, ya que es su llave foranea, lo que pasa que al ejecutar ese procedimiento tarda un poco, es por eso que mando el código para que me ayuden a mejorar el rendimiento.

Saludos.
Código Delphi [-]
procedure TFrmCreditos.Grabar_credito;
begin
  LimpiarConsulta;
  Tabla.Add('creditos');
  If Modifica Then
  Begin
    Try
      With Valores Do
      Begin
        Add('folio = ' + QuotedStr(Trim(seFolio.Text))+ ',');
        Add('sedesol = ' + QuotedStr(Trim(seSedesol.Text)) + ',');
        Add('no_mens = ' + QuotedStr(Trim(sePagos.Text)) + ',');
        Add('monto_mens = ' + QuotedStr(Trim(seMonto.Text)) + ',');
        Add('login = ' + QuotedStr(Trim(Login)) + ',');
        Add('beneficiario = ' + QuotedStr(Trim(seSoli.Text)) + ',');
        Add('banco = ' + IntToStr(scCuentas.KeyValue));
      End;
      Condicion.Add('credito = ' + QuotedStr(Trim(seCredito.Text)));
      If Not Modificar(Tabla, Valores, Condicion) Then
        SkMesg.MessageDlg('El registro no pudo ser guarado en la BD', mtWarning, [mbOK], 0);
      Modifica := False;
    Except
      SkMesg.MessageDlg('No se pudo modificar el credito', mtWarning, [mbOK], 0);
    End
  End
  Else
  Begin
    Try
      LimpiarConsulta;
      Tabla.Add('creditos');
      Campos.Add('GEN_ID(creditos_gen, 0)');
      If Not Consultar(Tabla, Campos, Condicion, Grupo, Orden, False, DM.qBuscar) Then
      Begin
        SkMesg.MessageDlg(DM.qBuscar.FieldByName('GEN_ID').AsString, mtWarning, [mbOK], 0);
        Exit;
      End;
      LimpiarConsulta;
      Tabla.Add('creditos');
      With Campos Do
      Begin
        Add('folio, sedesol, programa, pie, no_mens, monto_mens, fec_posesion,');
        Add('login, beneficiario, cap_cre, banco, activo');
      End;
      With Valores Do
      Begin
        Add(QuotedStr(Trim(seFolio.Text)) + ',');
        Add(QuotedStr(Trim(seSedesol.Text)) + ',');
        Add(IntToStr(scPrograma.KeyValue) + ',');
        Add(IntToStr(0) + ',');
        Add(QuotedStr(Trim(sePagos.Text)) + ',');
        Add(QuotedStr(Trim(seMonto.Text)) + ',');
        Add(QuotedStr(FormatDateTime('mm/dd/yyyy', sdPosesion.Date)) + ',');
        Add(QuotedStr(Trim(Login)) + ',');
        Add(QuotedStr(Trim(seSoli.Text)) + ',');
        Add(QuotedStr(FormatDateTime('mm/dd/yyyy hh:mm:ss', Now)) + ',');
        Add(IntToStr(scCuentas.KeyValue) + ',');
        Add(QuotedStr('O'));
      End;
      If Not Insertar(Tabla, Campos, Valores) Then
        SkMesg.MessageDlg('El registro no pudo ser guardado en la BD', mtWarning, [mbOk], 0);
      Try
        LimpiarConsulta;
        Tabla.Add('mejoramiento');
        Campos.Add('paquete, credito, tipo_paquete');
        With Valores Do
        Begin
          Add(IntToStr(scPaquete.KeyValue) + ',');
          Add(QuotedStr(IntToStr(DM.qBuscar.FieldByName('GEN_ID').AsInteger + 1)) + ',');
          If srAmplia.Checked Then
            Add(QuotedStr(Trim('A')))
          Else
            Add(QuotedStr(Trim('P')));
        End;
        If Not Insertar(Tabla, Campos, Valores) Then
          SkMesg.MessageDlg('El registro no pudo ser guardado en la BD', mtWarning, [mbOk], 0);
        seCurp.SetFocus;
      Except
        SkMesg.MessageDlg('No se pudo guardar el credito', mtWarning, [mbOK], 0)
      End
    Except
      SkMesg.MessageDlg('No se pudo guardar el pie de casa', mtWarning, [mbOK], 0)
    End
  End;
  DM.qCreditos.Close;
  DM.qCreditos.Transaction.Active := False;
  Limpiar(False);

Última edición por jachguate fecha: 04-01-2008 a las 08:00:33. Razón: añadir etiqueta delphi
Responder Con Cita
  #2  
Antiguo 04-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

En primer lugar, bienvenid@ al clubdelphi. Te recomiendo la lectura de la guía de estilo, donde están plasmadas las reglas que rigen estos foros, y que son de carácter obligatorio.

He editado tu mensaje para añadir la etiqueta [delphi], razón por la que ahora ves que se respeta la indentación y se resalta la sintaxis. Te recomiendo pulsar al botón de editar en tu mensaje para ver la manera en que se usa.

Luego comento que me parece que tu pregunta es un poco vaga. Es poco probable que alguien se tome la molestia de entender lo que hace tu código, con la poca información que das. Sobre todo después de que la pregunta, según se entiende, nada tiene que ver con el título del hilo.

En el futuro te recomiendo hacer preguntas mas específicas.

Finalmente te comento que la ejecución de la aplicación paso a paso puede ayudarte a ver donde se está tardando tu proceso, que supongo que el tema de la "optimización" viene por que pretendés reducir el tiempo que tarda.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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
Cursores y anidación de procedimientos almacenados david.rguez SQL 1 02-08-2007 17:06:31
Ayuda con transacciones en IBX gorsan Conexión con bases de datos 2 20-07-2007 00:27:52
Transacciones juanmdq Oracle 3 12-01-2007 14:59:42
Transacciones en punto de venta Ayuda !!! lroblesco Varios 2 23-05-2005 10:56:39
Transacciones radiohead Conexión con bases de datos 2 16-11-2004 09:29:50


La franja horaria es GMT +2. Ahora son las 16:32:29.


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