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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-01-2006
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Thumbs up No se destruye mi aplicacion

Hola a todos

Tengo una aplicacion hecha en Delphi 6 con Paradox uso un DataModulo, trabajan varias maquinas con esta aplicacion, y se esta colgandose bastante cuando voy a la estacion donde se colgo la maquina donde se colgo - presiono CTRL+ALT+DEL veo en los procesos varios Textil.exe que es el nombre del ejecutable.

Cuando los elimino por esa ventana del windows ya pueden ingresar, pero por lo general siempre no termina de grabar alguna registro, bueno aqui unos alcances del codigo:

Para Grabar:
Dm.MiTabla.Post;
Dm.MiTabla.FieldValues['MiCampo'] := MiValor;
Dm.MiTabla.Post
y protejo este codigo con un try dentro de un bucle asi;
lgraba := false
while lgraba=false do begin
try
--- codigo para grabar ---
lgraba := true;
except
lgraba := false
end;
end;
--------
Para Crear Formularios y cualquier objeto
MiForm := TForm.create(self);
MiForm.ShowModal;
MiForm.Free;
--------
Ojala alguien pueda auxiliarme por que estoy con la presion de los que me
contrataron y estoy un poco saturado.

Gracias de antemano.

Javier Villa.
Responder Con Cita
  #2  
Antiguo 26-01-2006
Avatar de Jonnathan
Jonnathan Jonnathan is offline
Miembro
 
Registrado: may 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 64
Poder: 19
Jonnathan Va por buen camino
Hola Javier
Cita:
Empezado por javicho_villa
Dm.MiTabla.Post;
Dm.MiTabla.FieldValues['MiCampo'] := MiValor;
Dm.MiTabla.Post
¿Eso fue un error de transcripción o lo tienes así en el código? Porque si es asi, el segundo "post" va a generar una excepción porque la tabla ya no está en modo de edición, asi que ejecutará
Código Delphi [-]
except
lgraba := false
end;
tratará de entrar de nuevo en el ciclo y se volverá a repetir el cuento, no saldrá nunca. No te recomiendo que pongas el Guardar (post) de esa manera en el código (forzándolo con un while), cuando no pueda guardar se te colgará el programa, en vez de eso muestra un mensaje al usuario y cancela el guardado. Ah y otra cosa, los moderadores te agradecerán con el corazón que pongas el código delphi con sus respectivas etiquetas, para que se lea mejor. Saludos.
__________________
"En el siglo de la estupidez todas las casas comienzan por la fachada" (Fuckowsky)
Planeta Insólito, La Pluma Inspirada
Responder Con Cita
  #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
  #4  
Antiguo 26-01-2006
javicho_villa javicho_villa is offline
Miembro
 
Registrado: feb 2005
Ubicación: Lima - Perú
Posts: 99
Poder: 20
javicho_villa Va por buen camino
Thumbs up Gracias

Voy a probar las recomendaciones.

Los dos post son un error el primer post me equivoque quice decir appendo o edit segun sea el caso.

Me parece bien ingresar los registros con sentencias de SQL voy a probar y les comento los resultados.

Gracias nuevamente

Javier
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
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 21:20:45.


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