Hola
Te dire que yo cuando Abro un nuevo Registro(Appen Blank) despues de asignar los valores pongo COMMIT y luego recien UNLOCK (Aunque casi poco uso el UNLOCK despues de asignar los datos, ya que yo cierro la tabla automaticamente)
REPLACE DESCUENTO WITH c_Desc
REPLACE PORCEDESC WITH c_Porcdesc
REPLACE IMPRIMIO WITH Space(1)
*--
REPLACE PORCEDESC WITH c_Porcdesc
REPLACE IMPRIMIO WITH Space(1)
*--
COMMIT *************(Asi lo hago yo)
UNLOCK (aqui se produce el error) *******Casi nunca uso el UNLOCK ya que yo grabo y cierro la tabla automaticamente
UNLOCK (aqui se produce el error) *******Casi nunca uso el UNLOCK ya que yo grabo y cierro la tabla automaticamente
Te recomiendo que mantengas las tablas siempre cerradas y solo abrirla cuando vas a grabar o sacar informacion. y no tenerla abiertas siempre.
Atentamente
Jaime
----- Original Message -----From: Mario MansillaSent: Wednesday, February 28, 2007 9:36 AMSubject: [CA-Clipper] Problemas con error Dbf/Ntx 1035
Hola Lista :Tengo un sistema de facturacion en red hecho con Clipper 5.2e + Blinker 7 , instalado en servidor Pentium IV mas 2 terminales idem al servidor , todas con win98se .Este sistema provoca siempre en los mismos lugares del fuente el error 1035 , como dicen las guias norton se debe a la falta del unlock , pero reviso el fuente y estan todos colocados con su respectivo Rlock() y Neterr() (uso Lock.prg del samples de clipper) .Este error lo produce aleatoriamente hay veces que lo hace de 1 a 5 veces en el dia , y a veces pasan dias sin hacerlo .He modificado el fuente donde se producen los errores colocando el lugar donde se produce al final por ejemplo y lo mismo provoca el error de la misma manera en la misma sentencia .He provado usando una sola terminal en lugar de las tres que se usan normalmente y lo mismo se produce el error .Ya no se si se trata de un error de clipper 5.2e , de las ntx , del errorsys que uso para interceptar el error , etc .Les pego el fuente que provoca el error .Desde ya muchas gracias a quien me pueda ayudar .Saludos cordialesMario Mansilla*-------------------- --------- -----
* Programa : TQ_GRAB.PRG
* Contenido : Graba Ticket
*-------------------- --------- ----- LOCAL P_msgbox
LOCAL PaletaLOCAL c_RegLOCAL T_Tipo
LOCAL T_PvtaFac
LOCAL T_NumFac
LOCAL T_Articulo
LOCAL T_Importe
LOCAL T_Cantidad
LOCAL T_Rubro
LOCAL T_Interno
LOCAL T_Codigo
LOCAL T_Fecha
LOCAL T_Hora
LOCAL T_Nroid
LOCAL T_tiva
LOCAL T_Impint
LOCAL T_TipoArt
LOCAL T_Unitario
LOCAL T_DescuentoLOCAL Ant_Cant
LOCAL Ant_Imp
LOCAL Ant_Desc* inicializo variablesC_RecGen := 0Paleta := SETCOLOR()
SETCOLOR(c_mensaje)P_msgbox := SAVESCREEN(20,30,21,50)
@ 20,30,22,50 BOX caj_simple
@ 21,32 SAY "Grabando Factura"
SELECT FACTURAS
If Add_rec(0)
REPLACE FACTURAS->FECHA WITH C_Fecha
REPLACE FACTURAS->HORA WITH c_Hora
REPLACE FACTURAS->NROID WITH c_Nroid
REPLACE FACTURAS->NOMBRE WITH "A CONSUMIDOR FINAL" // C_Cliente
REPLACE FACTURAS->CODIGO WITH "A " // C_CodCliente
REPLACE FACTURAS->TIPO WITH C_TipoFac
REPLACE FACTURAS->COMPRO WITH C_PvtaFac
REPLACE FACTURAS->NUMERO WITH STRZERO(C_NumFac,8,0) REPLACE FACTURAS->REMITO WITH Space(15) // C_Remito
REPLACE FACTURAS->DOMICILIO WITH Space(30) // C_Domici
REPLACE FACTURAS->LOCALIDAD WITH Space(29) // C_Localidad
REPLACE FACTURAS->PROVINCIA WITH Space(10) // C_Prov
REPLACE FACTURAS->CODPOS WITH Space(4) // C_Postal
REPLACE FACTURAS->IBRUTO WITH Space(13) // C_Ibruto
REPLACE FACTURAS->CUIT WITH (" - - ") // C_Cuit
REPLACE FACTURAS->COND_IVA WITH "CONSUMIDOR FINAL " // C_Condiva
REPLACE FACTURAS->NETO WITH C_TotFac
REPLACE FACTURAS->IVA1 WITH C_Iva
REPLACE FACTURAS->IVA2 WITH C_Iva2
REPLACE FACTURAS->IMPINT WITH c_Impu
REPLACE FACTURAS->PAGO WITH C_Pago
REPLACE FACTURAS->TIPOPAGO WITH C_FPagoREPLACE FACTURAS->DESCUENTO WITH C_Desc
REPLACE FACTURAS->PORCEDESC WITH C_PorcDesc
*REPLACE FACTURAS->RECARGO WITH C_Rec
*REPLACE FACTURAS->PORCEREC WITH C_PorcRec
*--
UNLOCK (aqui se produce el error)
*--
Endif
*-- Grabo SpoolerSELECT FISCAL
IF ADD_REC(0)
*--
REPLACE NROID WITH c_Nroid
REPLACE DOCUMENTO WITH "FC"
REPLACE REFERENCIA WITH Space(15)
REPLACE NROFISCAL WITH Space(8)
REPLACE NOMBRE WITH "A CONSUMIDOR FINAL" // c_Cliente
REPLACE TIPO WITH "B" // c_Tipofac
REPLACE CUIT WITH (" - - ") // c_Cuit
*--
REPLACE IVA WITH "F"
*--
REPLACE DNI WITH Space(8) // c_DniREPLACE DOMICILIO WITH Space(30) // c_Domici
REPLACE LOCALIDAD WITH Space(29) // c_Localidad
REPLACE PROVINCIA WITH Space(10) // c_Prov
REPLACE NETO WITH c_Totfac
*--
REPLACE TIPOPAGO WITH c_Pago
REPLACE FORMAPAGO WITH c_Fpago
REPLACE DESCUENTO WITH c_Desc
REPLACE PORCEDESC WITH c_Porcdesc
REPLACE IMPRIMIO WITH Space(1)
*--
UNLOCK (aqui se produce el error)
*--
ENDIF*--------
* Cobros
*--------SELECT VENCOB
*--
If Add_rec(0)
*--
REPLACE VENCOB->FECHA WITH C_Fecha
REPLACE VENCOB->HORA WITH SUBSTR(TIME(),1,5)
REPLACE VENCOB->TIPO WITH C_TipoFac
REPLACE VENCOB->COMPRO WITH C_PvtaFac
REPLACE VENCOB->NUMERO WITH STRZERO(C_NumFac,8,0)
REPLACE VENCOB->MONTO WITH C_TotFac
UNLOCK
*-- Aqui calculo el recargo de Tarjeta
* Teniendo en cuenta el % de ivac_Reg := RECNO()*--
Do Case
Case Terminal = 3
SELECT VENTAS03
GO TOP
Case Terminal = 2
SELECT VENTAS02
GO TOP
Case Terminal = 1
SELECT VENTAS
GO TOP
Endcase
*--DO WHILE !EOF()
C_RecGen := C_RecGen + (IMPORTE * (C_PorcRec / 100))
SKIP
ENDDO*--
SELECT VENCOB
Go c_Reg
*--*-- Ahora Grabo
IF Rec_Lock(0)
*REPLACE VENCOB->RECARGO WITH C_RecGen
*--
UNLOCK
*--
ENDIF
*--
Endif*--------------
* Cuerpo Ticket
*-------------- Do Case
Case Terminal = 3
SELECT VENTAS03
GO TOP
Case Terminal = 2
SELECT VENTAS02
GO TOP
Case Terminal = 1
SELECT VENTAS
GO TOP
EndcaseDO WHILE !EOF()
*--
T_Tipo := TIPO
T_PvtaFac := COMPRO
T_NumFac := NUMERO
T_Articulo := ARTICULO
*--
IF C_TipoFac = "A"
T_Importe := IMPORTE + (IMPORTE * (TIVA/100))
ELSE
T_Importe := IMPORTE
ENDIF
*--
T_Cantidad := CANTIDAD
T_Rubro := RUBRO
T_Interno := INTERNO
T_Codigo := CODIGO
T_Fecha := FECHA
T_Hora := HORA
T_Nroid := NROID
T_tiva := TIVA
T_Impint := IMPINT
T_TipoArt := TIPOART
*--
T_Unitario := UNITARIO
T_Descuento := DESCUENTO
c_Reg := RECNO()***** Grabo Historico *****SELECT HISTVENT
If Add_rec(0)
*--
REPLACE HISTVENT->FECHA WITH T_Fecha
REPLACE HISTVENT->HORA WITH T_Hora
REPLACE HISTVENT->NROID WITH T_Nroid
REPLACE HISTVENT->TIPO WITH T_Tipo
REPLACE HISTVENT->COMPRO WITH T_PvtaFac
REPLACE HISTVENT->NUMERO WITH T_NumFac
REPLACE HISTVENT->ARTICULO WITH T_Articulo
REPLACE HISTVENT->RUBRO WITH T_Rubro
REPLACE HISTVENT->INTERNO WITH T_Interno
REPLACE HISTVENT->CODIGO WITH T_Codigo
REPLACE HISTVENT->CANTIDAD WITH T_Cantidad
*--
IF C_TipoFac = "A"
REPLACE HISTVENT->IMPORTE WITH ROUND(T_Importe / ((T_Tiva/100)+1), 4)
ELSE
REPLACE HISTVENT->IMPORTE WITH T_Importe
ENDIF
*--
REPLACE HISTVENT->TIVA WITH T_Tiva
REPLACE HISTVENT->IMPINT WITH T_Impint
REPLACE HISTVENT->TIPOART WITH T_TipoArt
*--
REPLACE HISTVENT->UNITARIO WITH T_Unitario
REPLACE HISTVENT->DESCUENTO WITH T_Descuento
*--
UNLOCK
*--
Endif**** Grabo spooler ****SELECT ITEMS
IF ADD_REC(0)
REPLACE NROID WITH T_Nroid
REPLACE NROFISCAL WITH Space(8)
REPLACE TIPO WITH T_Tipo
REPLACE CODIGO WITH T_Codigo
REPLACE NOMBRE WITH T_Articulo
REPLACE CANTIDAD WITH T_Cantidad
REPLACE TIVA WITH T_tiva
REPLACE IMPINT WITH T_Impint
REPLACE UNITARIO WITH T_Unitario
REPLACE DESCUENTO WITH T_descuento
REPLACE IMPRIMIO WITH Space(1)
*--
UNLOCK
*--
ENDIF**** Grabo Ventas Dpt ****SELECT VENDPT
SET ORDER TO 1
GO TOPSEEK T_RubroIF FOUND()
Ant_Cant := VENDPT->CANTIDAD
Ant_Imp := VENDPT->VENTA
If Rec_lock(0)
REPLACE VENDPT->VENTA WITH Ant_Imp + T_Importe
REPLACE VENDPT->CANTIDAD WITH Ant_Cant + T_Cantidad
UNLOCK
Endif
ELSE
If Add_rec(0)
REPLACE VENDPT->CODIGO WITH T_Rubro
REPLACE VENDPT->VENTA WITH ROUND(T_Importe, 3)
REPLACE VENDPT->CANTIDAD WITH T_Cantidad
UNLOCK
Endif
ENDIF**** Grabo Ventas ArticulosSELECT VENART
SET ORDER TO 1
GO TOPSEEK T_CodigoIF FOUND()
Ant_Cant := VENART->CANTIDAD
Ant_Imp := VENART->VENTA
Ant_Desc := VENART->DESCUENTO
*--
If Rec_lock(0)
REPLACE VENART->CANTIDAD WITH Ant_Cant + T_Cantidad
IF C_TipoFac = "A"
REPLACE VENART->VENTA WITH Ant_Imp + ((T_Unitario * (1+ T_tiva/100)) * T_Cantidad)
REPLACE VENART->DESCUENTO WITH Ant_Desc + (((T_Unitario * (1 + T_tiva/100)) * T_Cantidad) - T_Importe)
ELSE
REPLACE VENART->VENTA WITH Ant_Imp + (T_Unitario * T_Cantidad)
REPLACE VENART->DESCUENTO WITH Ant_Desc + ((T_Unitario * T_Cantidad) - T_Importe)
ENDIF
UNLOCK
Endif
*--
ELSE
*--
If Add_rec(0)
REPLACE VENART->CODIGO WITH T_Codigo
REPLACE VENART->CANTIDAD WITH T_Cantidad
IF C_TipoFac = "A"
REPLACE VENART->VENTA WITH round((T_Unitario * (1 + T_tiva/100)) * T_Cantidad, 3)
REPLACE VENART->DESCUENTO WITH ((T_Unitario * (1 + T_tiva/100)) * T_Cantidad) - T_Importe
ELSE
REPLACE VENART->VENTA WITH round(T_Unitario * T_Cantidad, 3)
REPLACE VENART->DESCUENTO WITH (T_Unitario * T_Cantidad) - T_Importe
ENDIF
UNLOCK
Endif
*--
ENDIF*--
SELECT ARTI
SET ORDER TO 2
GO TOPSEEK T_CodigoIF FOUND()
*--
Ant_Cant := ARTI->STOCK
*--
If Rec_lock(0)
REPLACE ARTI->STOCK WITH Ant_Cant - T_Cantidad
UNLOCK
Endif
*--
ENDIF
Do Case
Case Terminal = 3
SELECT VENTAS03
Case Terminal = 2
SELECT VENTAS02
Case Terminal = 1
SELECT VENTAS
EndcaseGO c_Reg*--
SKIP
*--
ENDDO
*-----------------
*-- Formas de pago
*----------------- SELECT VENPAG
SET ORDER TO 1
GO TOPSEEK c_nPagoIF EOF()
If Add_Rec(0)
REPLACE VENPAG->CODIGO WITH c_nPago
REPLACE VENPAG->NOMBRE WITH c_Pago
REPLACE VENPAG->TIPOPAGO WITH c_fPago
REPLACE VENPAG->CANTIDAD WITH 1
REPLACE VENPAG->NETO WITH c_TotFac
UNLOCK
Endif
ELSE
If Rec_Lock(0)
REPLACE VENPAG->CANTIDAD WITH VENPAG->CANTIDAD + 1
REPLACE VENPAG->NETO WITH VENPAG->NETO + c_TotFac
UNLOCK
Endif
ENDIF*--
COMMIT
*--RESTSCREEN(20,3022,50,P_ msgbox)
SETCOLOR(paleta)RETURN