![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Ahora nos entendemos mejor. Pero en codigo como podria realizarlo, lo que pasa es que quiero que todo este en orden, y es como debe ser por alli leyendo me dicen que tengo que ponerlo en el Beforepost de los dataset, pero previo a esto me parece que tenqo que buscar el ultimo registro.... en codigo como puedo hacer esto.
Gracias |
|
#2
|
|||
|
|||
|
Pues mas que código (creo que lo estas ya haciendo) tu problema es de concepto, si tienes un botón de cancelar deberías de usar el botón de imprimir para cerrar el folio.
Yo haria lo siguiente: Si presiono el botón de CANCELAR hago un Rollback y si presiono el botón ACEPTAR hago un COMMIT. Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney |
|
#3
|
||||
|
||||
|
Aqui tienes otra idea depende de como tengas configurada la impresión, si la impresora (y sus facturas) están conectadas solo a esa PC:
* Iniciar la transacción * Obtener el siguiente de numero de factura que le corresponda (solo como referencia ya que se supone que es el mismo folio que esta en ese momento en la impresora listo para imprimir) * Hacer la transacción * Imprimir la factura * ¿Se imprimió correctamente? (Si) (No) (pudo haberse atascado, roto, etc.) Si si se imprimió (ahora si) guardar el folio a la BD Si no se imprimió bien, saltar al siguiente folio y reintentar la impresión
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#4
|
||||
|
||||
|
Cita:
yo sugiero un contador de facturas, no un generador ni similar para evitar los posibles huecos en la correlatividad de las mismas; además este contador estando ubicado en otra tabla podria manejarse y variar según conveniencia. la experiencia me dice que los clientes, por muy correcto, legal, etc, prefieren no tener anuladas ni generar facturas de abono salvo ultimo recurso, y al fin son los que pagan y exigen. la forma de generar esos numeros elementalmente estarian dentro de una misma y unica transacion, tal y como se indica vamos, no deja de ser mas que un idea más |
|
#5
|
||||
|
||||
|
Yo antes de nada, sugiero que no se utilice el número de factura como clave principal de la tabla (que sería lo lógico). Precisamente por todo lo comentado aquí.
Creamos un Store Procedure, que dada la clave primaria de una factura, nos devuelva el nº correlativo de dicha factura (o inserte el valor en la tabla factura). Sólo llamamos a este procedimiento cuando realmente estamos seguro de grabar la factura. El correlativo, puede ser un generador. En caso de fallos, siempre se puede establecer un generador a un nº determinado. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
|
#6
|
||||
|
||||
|
Si haces el insert del registro en la tabla, ya tienes el nuevo valor generado. Cualquier cancel que hagas posteriormente, no evitará que se tome el nuevo valor ( incrementado).
Lo que necesitas es generar la factura sin utilizar el insert en la tabla. Yo utilizaría componentes que no sean de BBDD, y cuando vaya a imprimir/guardar, comenzar un transacción, hacer sentencias SQL insert parametrizadas y cerrar la transacción. Si cancelas, no has tocado la BBDD, por lo que el valor del nº de fra. no se habrá incrementado. Yo en su día utilizaba cacheupdates de los objetos SQL en estos casos, aunque no me acuerdo bien y no tengo el compilador a mano. Realmente lo que hacen es crear registros en local, y al hacer ApplyUpdates ( asociandolo a la impresión/guardado ) realmente inyecta las sentencias sql que hayas definido. Suerte
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
|
#7
|
|||
|
|||
|
Hola a todos y felíz 2007
Tengo un sistema de facturación y te sugiero lo siguiente. Como lo han expresado otros no debes asignar el número de la factura hasta que vayas a calcularla o imprimirla. en este caso si el número de la factura es 0 incluso debes permitir que tu aplicación pueda eliminar físicamente el registro, no siendo de esta manera una vez que sea generada, osea que obtenga un consecutivo y después éste aumentará en uno. Una vez creada la factura no podrás editar los datos y mucho menos eliminarla de la tabla. sin embargo debes permitir que se imprima con el mismo número que adquirió cuantas veces sea necesario y en caso de error cancelarla digamos que pudieras tener un campo lógico en tu tabla por ejemplo "Cancelada" que sería marcado a True cuando intentas eliminar una factura que ya tiene un número consecutivo el cual no volverás a usar. Espero me hayas entendido |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Sugerencias sobre bases de datos | taita | Conexión con bases de datos | 19 | 17-11-2005 16:55:38 |
| Sugerencias sobre la eleccion de bbdd | taita | Conexión con bases de datos | 2 | 01-02-2005 13:24:42 |
| Dudas y sugerencias sobre la web del ClubDelphi | Magician^ | Varios | 13 | 05-04-2004 19:22:55 |
| Campos calculados, facturas y detalles de facturas. | Letty | Conexión con bases de datos | 7 | 07-11-2003 11:19:44 |
| Control de numeracion de versiones | erickperez6 | Varios | 2 | 14-05-2003 17:10:28 |
|