Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2004
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 22
pcicom Va por buen camino
Grabar Multiples registros en caliente (Firebird)

Saludos... soy nuevo en este FORO, he leido en ocasiones algunas consultas que han sido de mi interes, y ahora toca hacer algunas, espero me puedan ayudar.


Estoy haciendo la conversion de un sistema de VB a Delphi y las bases eran DBF, las cuales ya converti a Firebird y todo eso, no hay realmente ningun problema en eso, el detalle es que tengo una captura en donde capturo en un GRID una lista de informacion de hasta como 20 o 30 lineas, y las mando grabar leyendo el grid y grabando linea a linea en firebird, y veo que se tarda como 1/2 segundo en cada post que ejecuto, de hecho si una linea ya existia en la BD y actualizo un dato , entonces la actualiza mas rapidamente...

mi logica va mas o menos asi

Uso los compomentes TIBOTable de IBObjects

tabla.IB_connect := dmRaiz.db
tabla.indexname "FACTCODI"

como facturas detalla
leo contenido del grid
tomo los datos del grid, codigo
busco factura,codigo
si existe
tabla.edit
actualizo datos modificados de la partida
tabla.post
no existe
tabla.append
actualizo datos modificados de la partida
tabla.post
siguiente elemento del grid
fin leo


No me quejo, me es aceptable, pero no se si modificando algunos parametros del firebird o agregando algunas instricciones en delphi,,, pueda mejorar el desempeño...
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #2  
Antiguo 24-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Te aconsejo que uses llaves foraneas y en especial para los Mestros Detalles y no entendí como explicas la manera del guardado ó se desacomodo el texto que pusistes.... Que tengas buen día.
Responder Con Cita
  #3  
Antiguo 24-09-2004
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 22
pcicom Va por buen camino
La estrcutura era esta

Similar a un sistema Maestro Detalle de FACTURAS

leo contenido del grid
----tomo los datos del grid, codigo
----busco factura,codigo
----si existe
-------tabla.edit
-------actualizo datos modificados de la partida
-------tabla.post
----no existe
-------tabla.append
-------actualizo datos modificados de la partida
-------tabla.post
----siguiente elemento del grid
fin leo
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #4  
Antiguo 24-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Post oki

Una Cosa muy importante, si estas usando el dbGrid, no es necesario que actualices manualmente el dbGrid con un "Post", Automaticamente lo hace este mismo conforme vas agregando un nuevo registro, al terminar la captura cuando el usuario esta de acuerdo de que la Factura esta bien, se acepta la "Transacción" en el caso de que los componentes que usas tengan esta propiedad.

Yo uso un Maestro Detalle así:

Capturo Campos "llave primaria"
----SI Se Encuentran Entonces
Edito el Maestro y el Detalle
----SI NO
Inserto y Edito Nuevo Registro en Maestro y Detalle
----Capturo los Productos(Detalle-dbGrid)
SI PRODUCTO EXISTE ENTONCES
DESPLIEGO DATOS DEL PRODUCTO
SI NO
LANZO UN MENSAJE Y NO AVANZO DE CELDA
-----SI EL USUARIO ESTA SEGURO DE LOS DATOS CAPTURADOS
SOLO GRABO MAESTRO
TRY
ACEPTO TRANSACCION
EXCEPT //SI HAY UNA EXCEPCIÓN ENTONCES
MENSAJE(ERROR...NO SE HA PODIDO GRABAR FACTURA)
CANCELO TRANSACCION
END;
------FIN.

Espero haberte ayudado. Que tengas buen día.

Última edición por AGAG4 fecha: 24-09-2004 a las 16:28:16. Razón: Corrección
Responder Con Cita
  #5  
Antiguo 24-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Comprueba con el depurador de Delphi cada una de las líneas que se ejecutan en el bucle, para encontrar cual es la que tarda tanto en completarse.

Probablemente sea la busqueda de si la factura existe. Seguramente podrás agilizarla, creando unos índices sobre los campos sobre los que se busca.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #6  
Antiguo 24-09-2004
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola: ¿cuál es esa opción de debug con la que se puede ver el tiempo de proceso de cada línea de código?
chao.
Responder Con Cita
  #7  
Antiguo 27-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

No existe ninguna opción así (no estaria mal que la añadieran). Pero puedes ir ejecutando línea a línea, y cuando veas que hay una demora al pasar el control a la siguiente línea, es que has encontrado la instrucción lenta.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
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


La franja horaria es GMT +2. Ahora son las 08:58:47.


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