Entrar
¿Nuevo usuario? Inscribirme
DesarrolloClipper · Desarrollo de Software en CA-Clipper
? ¿Ya estás suscrito? Entra a Yahoo!

Consejos

¿Sabías que...?
Podés hacer búsquedas de antiguos mensajes del grupo.

Mensajes

  Mensajes Ayuda
Avanzado
Re: [CA-Clipper] Problemas con error Dbf/Ntx 1035   Lista de mensajes  
Responder | Reenviar Mensaje #2499 de 3606 |
Re: [CA-Clipper] Problemas con error Dbf/Ntx 1035

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)
      *--
      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
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 -----
Sent: Wednesday, February 28, 2007 9:36 AM
Subject: [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 cordiales
Mario Mansilla
 
 
*----------------------------------
* Programa  : TQ_GRAB.PRG
* Contenido : Graba Ticket
*----------------------------------
 
LOCAL P_msgbox
LOCAL Paleta
 
LOCAL c_Reg
 
LOCAL 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_Descuento
 
LOCAL Ant_Cant
LOCAL Ant_Imp
LOCAL Ant_Desc
 
* inicializo variables
 
C_RecGen := 0
 
Paleta := 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_FPago
 
     REPLACE 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 Spooler
 
SELECT 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_Dni
 
      REPLACE 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 iva
 
     c_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
Endcase
 
DO 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 TOP
 
  SEEK T_Rubro
 
  IF 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 Articulos
 
  SELECT VENART
  SET ORDER TO 1
  GO TOP
 
  SEEK T_Codigo
 
  IF 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 TOP
 
  SEEK T_Codigo
 
  IF 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
  Endcase
 
  GO c_Reg
 
  *--
  SKIP
  *--
ENDDO
 

*-----------------
*-- Formas de pago
*-----------------
 
SELECT VENPAG
SET ORDER TO 1
GO TOP
 
SEEK c_nPago
 
IF 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
   
                   



Mié, 28 de Feb, 2007 4:02 pm

jacgsoft
Sin conexión Sin conexión
Enviar correo Enviar correo

Reenviar Mensaje #2499 de 3606 |
Desplegar mensajes Autor Ordenar por fecha

Compañero cuando agregue registros en red utilizando add_rec(0) tambien es conveniente enllavar el registro o todo e fichero asi: If add_rec( 0 ) .and....
José María Gonz...
chemagonzale...
Sin conexión Enviar correo
28 de Feb, 2007
10:55 pm

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...
Jaime Coronado
jacgsoft
Sin conexión Enviar correo
3 de Mar, 2007
12:06 am

Hola Jhon , muchas gracias . Tampoco colocas el Neterr() despues del Append Blank? Saludos . Mario Mansilla ... From: Hector Jhon Guillen Liendo To:...
Mario Rafael Mansilla
mmansilla12
Sin conexión Enviar correo
5 de Mar, 2007
1:11 am

Hola Jaime , muchas gracias por tu colaboracion Saludos . Mario Mansilla ... From: Jaime Coronado To: DesarrolloClipper@... Sent: Wednesday,...
Mario Rafael Mansilla
mmansilla12
Sin conexión Enviar correo
5 de Mar, 2007
1:13 am

Hola Jose Maria . Le agregare el Flock() a las rutinas de grabacion , con respecto a la apertura si bien esta en las rutinas el Dbuse() no lo utilizo y lo hago...
Mario Rafael Mansilla
mmansilla12
Sin conexión Enviar correo
5 de Mar, 2007
1:16 am

Hola Hector Jhon Guillen Liendo: Te marco algunas sugerencias If rlock() // Bloqueas un registro append blank // Creas un registro en la tabla y lo...
Daniel Portunato
portunato
Sin conexión Enviar correo
7 de Mar, 2007
2:52 pm
Avanzado

Copyright © 2009 Yahoo! de Argentina S.R.L. Todos los derechos reservados.
Política de privacidad - Condiciones del Servicio - Reglas de la comunidad de Yahoo! - Ayuda