![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
#1
|
||||
|
||||
otra solucion
Lo que quieres hacer es bastante sencillo. Supongamos que tienes un DataModule con tus DataSet's (si no lo tienes, deberías), bien, te declaras una variable privada de tipo integer, supongamos que se llama ContError. Bien, luego te programas una rutina de este estilo:
Código:
procedure TDataModule1.EditErrore(DataSet: TDataSet; E: EDatabaseError; var Action: TDataAction); begin if ContError > 3 then begin ShowMessage('El registro no se puede editar, intentelo más tarde'); Action := daFail; ContError := 0; end else begin Inc(ContError); Sleep(2000); Action := daRetry; end; end; Ahora solamente te falta asignar esta rutina al OnEditError de todos los datasets que quieras controlar. Evidentemente puedes sofisticar el procedimiento, por ejemplo, con un form que avise al usuario de que se está intentando acceder al registro. Última edición por EstebanWeb fecha: 02-12-2004 a las 17:35:04. |
#2
|
||||
|
||||
Me parece que no hablamos de lo mismo o al menos yo no he entendido lo que tu dices.
Yo no hablo de índices sino de un número único que debe de identificar a una factura y no se debe repetir ni dejar huecos. Situación con tablas Paradox, para otro tipo de tablas hay otras soluciones, como generadores.... Estamos trabajando directamente con la tabla facturas en red. Último número de factura el 800 El usuario A, inicia la grabación de una factura lógicamente por el método que sea es la 801, graba 5 líneas y queda esperando a que el vendedor por teléfono le concrete el resto de la venta. El usuario B está haciendo lo mismo con otro cliente, como el usuario A aún no ha grabado su factura se la adjudicaría el mismo, número, problema los detalles de ambos se confunden en una misma factura la 801. Incluso utilizando una tabla axiliar de facturas pendientes de grabar, cuando decidamos enviar la factura al servidor nadie nos garantiza que vaya a ser la 801, se nos ha podido adelanter el Usuario A, C.... El usuario A, puede ocurrir que el vendedor le diga que cancele la factura, como el detalle ya se ha grabado, para poderla cancelar realmente tendríamos que eliminar (Delete) todas las líneas que ya habían sido grabadas, puesto que involuntariamente al pasar a la segunda línea se graba la primera. Conclusión para mí, el número de la factura solamente lo sabemos cuando vaya a grabarse el tiempo que tardemos en grabar, pueden haberse grabado 10 facturas y el número que creíamos que tenía nuestra factura habra aumentado... Claro que otras soluciones, pueden ser "In Memory Tables", ClienteDataset, o incluso que en cada PC, puede haber una tabla temporal de facturas y que solamene cuando el usuario confirme la grabación de la misma se envíe al servidor, para mí en este orden: 1.-Vamos al servidor, aumentamos, si nos deja, el número, sino como te decían sigues intentando y cuando obtengamos el número para nuestra factura, puesto que el siguiente que llegue ya tendría uno más. 2.-La enviamos al servidor con el número obtenido. Siempre hay que tener en cuenta que trabajando en red, puede haber por ejemplo 10 personas facturando a la vez. Y el primero que empieza la factura puede acabarla el último o incluso cancelarla, por lo tanto y para finalizar, solamente cuando se confirme la grabación podremos adjudicarle el número que le corresponde. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
#3
|
||||
|
||||
es tan simple como que asignes numero que corresponde al final de la transaccion o sea al dar el boton grabar, de otra forma es imposible ya que si cancelas te puede dejara un numero saltado, lamentablemente si lo quieres de otro modo deberas ser un vidente para saber si el usuario confirmará o cancelara tu facturas
Saludos. |
#4
|
||||
|
||||
La verdad es que en Paradox, no podemos hablar de grandes cosas en cuanto a transaciones.
Por eso propongo ese método, que por otra parte funciona correctamente, el número que tenemos en la tabla auxiliar es de la última factura grabada, y cuando asignamos uno nuevo es solamente por el usuario confirmo la grabación. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
![]() |
|
|
![]() |
|