Uso CachedUpdate en los ibDataset's
En Parámetros del ibTransaction tengo lo siguiente:
Código Delphi
[-]
read_committed
rec_version
nowait
Tengo una Tabla de Consecutivos de Folios donde llevo el control, pongo un ejemplo:
DOCUM SERIE FOLIOFISCAL
FACT FM 344488 /*FACTURAS*/
FACT PM 5509 /*COTIZACIONES*/
FACT RM 24456 /*REMISIONES*/
Tengo 1 problema que me tiene muy preocupado ya hace varios meses atras con mi Aplicación de Facturación, el problema que tengo es que si mandan a Guardar Facturas más de 2 Clientes, alguno de estos clientes solo Imprime la Factura pero no la guarda. Pongo el Siguiente ejemplo de la forma que lo implemento al momento de Guardar una Factura:
Código Delphi
[-]
while true do
try
FolioFinal:=0;
FolioFinal:=DameFolioFiscal
('GRABA_FOLFISCAL','DOCUM','SERIE','FACT',Serie,'FOLIOFISCAL');
Maestro.FieldByName('FOLIOFISCAL').value:=FolioFinal;
if FolioFinal > 0 then
break;
except
Sleep(5000);
end;
Imprimir;
try
if Detalle.UpdatesPending then
Detalle.ApplyUpdates;
if Maestro.UpdatesPending then
Maestro.ApplyUpdates;
Transaccion.CommitRetaining;
except
on E:Exception do
MensajesW(PChar(e.message),'Error al Guardar',MB_ICONERROR);
end;
El Problema de que sólo Imprime la Factura y NO la GUARDA es que al llegar a Aplicar los Cambios con ApplyUpdate es donde se produce el siguiente error:
lock conflict on no wait transaction
deadlock
update conflicts with concurrent update
Este ERROR indica que 2 ó más Clientes quieren accesar al mismo registro es por eso que se produce este error pero lo que no me Explico es que Porque Diablos lo marca porque supuestamente ARRIBA ya dejo Bloqueado el Registro, ya hice pruebas Compilando la Aplicación paso por paso(F8) en 2 PC's con DELPHI(Compilando cada una al mismo tiempo) y una tercera PC sin Delphi tomando el papel de un cliente normal, y realize pruebas TODO el día Accesando al mismo tiempo cuando toman el FolioFiscal, pero Todo funcionó a la Perfección, Siempre llegaba 1 CLIENTE a Bloquear dicho registro y las demás se esperaba a que se desocupará, se desbloqueaba el registro y otro cliente lo bloqueaba y asi sucesivamente.
Espero que a alguien le haya pasado lo mismo, y ojala me pudieran ayudar con este problema que me tiene SuperEnbroncado con el programa.
Que tengan buen día.