Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 26-01-2006
cuburu cuburu is offline
Miembro
 
Registrado: mar 2005
Posts: 63
Poder: 20
cuburu Va por buen camino
Por lo que veo estas utilizando un ciclo para decirle al usuario que grabe la información a pesar de que exista un error en la inserción de la información... creo yo, la verdad es que ando un poco falto de practica en ese aspecto, que si ya existe un error porque el sistema no pudo grabar la información, la operación se queda atrapando la tabla o el registro que acualizaste, lo que provoca que nadie pueda acceder a ella hasta que éste recurso sea liberado por la operación, provocando así un dead. Quizas sea por eso que los demás usuarios no puedan trabajar.

Al hacer un post lo único que haces es enviar la actualización a memoria pero a veces, y a mi me pasaba con frecuencia, cuando utilizas POST da la apariencia de que se actualiza la información pero al reiniciar el equipo o finalizar el programa y vuelves a buscar el mismo registro te das cuenta de que no fue así.

Por eso es mejor cambair el POST por un commit. Lo que hace el commit es que todas las operaciones que tienes en memoria sean enviadas a la BD.

Te recomiendo que restructures tu ciclo y que evites imponer el tener que actualizar una tabla que ya tuvo problemas al intentar actualizarse. Es mejor hacer un rollback o algo así para evitar este tipo de incidentes.

Estoy suponiendo que utilizas on objeto tipo TTable y que ingresas los datos de manera tradicional.

Yo prefiero utilizar un query, es más cómodo y te evitas de codificar un sin fin de cosas, si lo quieres hacer con un TQuery, o un objeto parecido podrías intentar algo asi:

Código Delphi [-]
Var
  Inserta: TQuery;
begin
  try
    Inserta := TQuery.create();
    try
      Inserta.Close;
      Inserta.SQL.Clear;
      Inserta.SQL.ADD('INSERT INTO Tabla1(campo1, campo2, ..., campon)' +
                            'VALUES(:C1, :C2, ...,:Cn)');
      {En lugar de asString, personalizalo al formato de campo que desees asString, asInteger, asFloat, etc.}
        Inserta.ParamByName('C1').asString := Edit1.Text;
        Inserta.ParamByName('C2').asString := Edit2.Text;
        Inserta.ParamByName('...').asString := Editn.Text;
        Inserta.ParamByName('Cn').asString := Edit3.Text;
      Inserta.Open;
    finally
      Inserta.Free;
    end;
  except
  on E:exception do
    MessageBox(Handle,PChar('Se ha generado un error al hacer la actualización' +
                     + #13 + 
                     E.Message) ,
                     'ERROR', 
                     mb_Ok);
  end;

De esta forma ejecutas una actualización en SQL. Es más entendible a mi punto de vista está mejor estructurado, además como veo que es para un sistema distribuido esto, a mi punto de vista, deberia de ser lo que debes utilizar.
Responder Con Cita
 



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
problemas al integrar una aplicación dentro de otra aranel Varios 1 23-10-2005 01:40:00
Ayuda con paquetes por favor!! adlfv OOP 9 29-08-2005 18:30:29
Error cuando llamo a un programa esxterno desde mi aplicacion quake2420 Varios 2 12-08-2005 19:30:44
lanzar proceso lanzado desde aplicacion delphi agustincs API de Windows 10 01-09-2004 21:24:52
Interactuar con otra aplicacion o con su base de datos (tablas .dbf) jealousy Varios 2 13-02-2004 00:46:15


La franja horaria es GMT +2. Ahora son las 06:08:31.


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