Grabar en entorno de red
Publicado por ANTONIO (29 intervenciones) el 02/03/2018 00:28:41
Buenas amigos ya estoy loco con un tema.
Estoy haciendo un pequeño programa para clínicas y en mono usuario funciona bien hasta ahora todo lo que tengo terminado.
Tengo las tablas compartidas con shared in 0, y en un principio casi todo me funcionaba bien, salvo a la hora de probar con los presupuestos y facturas que es un mismo modulo donde según sea uno u otro abre la tabla presu como cabeza y presupuesto como detalle o factu como cabeza y facturas como detalle.
Una vez puestos en antecedentes les paso el código que tengo puesto una vez realizado la captura de datos en unos cursores me dispongo a grabar la información y a sumar uno al contador en la tabla empresas.
Los pasos que sigo son:
- guardar el nº en una variable
- sumar 1 al contador
- guardar lo creado o modificado
Si lo abro en dos sitios a la vez y genero el proceso a la vez en dos no va bien.
Espero que me puedan ayudar.
Desde ya Muchas gracias.
Antonio Z.
*********** Nº DE FACTURAS Y PRESUPUESTOS ********
&&numfac guardará el nº de presupuesto o factura por el que vamos
DO CASE
CASE donde = 1 .and. thisform.quehago = "alta"
_numfac = empresas.npre
CASE donde = 1 .and. thisform.quehago <> "alta"
_numfac = cabeza.nfra
CASE donde = 2 .and. thisform.quehago = "alta"
_numfac = empresas.nfra
CASE donde = 2 .and. thisform.quehago <> "alta"
_numfac = cabeza.nfra
ENDCASE
****************************************************
IF thisform.quehago = "alta"
SELECT empresas
RLOCK()
IF donde = 1
replace npre WITH ALLTRIM(STR(VAL(empresas.npre)+1))
ELSE
replace nfra WITH ALLTRIM(STR(VAL(empresas.nfra)+1))
ENDIF
UNLOCK IN empresas
ENDIF
**************************************************
SELECT cabeza && presu o factu según sea....
RLOCK()
IF thisform.quehago = "alta"
APPEND BLANK
endif
replace nfra WITH _numfac
replace codigocli WITH thisform.txtcliente.Value
replace fecha WITH thisform.txtfecha.Value
replace totalfra WITH thisform.desglose.page1.text6.value
replace base WITH thisform.desglose.page1.text4.value
replace iva WITH thisform.desglose.page1.text5.value
UNLOCK
IF thisform.quehago <> "alta" && propiedad para saber si es alta o modificación
SELECT detalle
RLOCK()
DELETE FOR nfra = cabeza.nfra .and. YEAR(fecha) = year(cabeza.fecha)
UNLOCK
ENDIF
SELECT facturas2 && en este cursor esta todo el contenido ya sea creado o modificado (detalle)
GOTO TOP
numc = 1
DO WHILE !RLOCK()
ENDDO
DO WHILE !EOF()
SELECT detalle
RLOCK()
APPEND BLANK
replace nc WITH numc
replace fecha WITH facturas2.fecha
replace nfra WITH _numfac
replace codigocli WITH thisform.txtcliente.Value
replace concepto WITH facturas2.concepto
replace cantidad WITH facturas2.cantidad
replace precio_u WITH facturas2.precio_u
replace base WITH facturas2.base
replace dto WITH facturas2.dto
replace iva WITH facturas2.iva
replace total WITH facturas2.total
UNLOCK
SELECT facturas2
SKIP
numc = numc +1
ENDDO
SELECT facturas2
GOTO TOP
thisform.mostrar && carga la información y la muestra en pantalla
thisform.grlistado.refresh
thisform.grlistado.SetFocus
thisform.txtquehace.Visible = .F.
thisform.shaQuehace.Visible = .F.
thisform.quehago = ""
Estoy haciendo un pequeño programa para clínicas y en mono usuario funciona bien hasta ahora todo lo que tengo terminado.
Tengo las tablas compartidas con shared in 0, y en un principio casi todo me funcionaba bien, salvo a la hora de probar con los presupuestos y facturas que es un mismo modulo donde según sea uno u otro abre la tabla presu como cabeza y presupuesto como detalle o factu como cabeza y facturas como detalle.
Una vez puestos en antecedentes les paso el código que tengo puesto una vez realizado la captura de datos en unos cursores me dispongo a grabar la información y a sumar uno al contador en la tabla empresas.
Los pasos que sigo son:
- guardar el nº en una variable
- sumar 1 al contador
- guardar lo creado o modificado
Si lo abro en dos sitios a la vez y genero el proceso a la vez en dos no va bien.
Espero que me puedan ayudar.
Desde ya Muchas gracias.
Antonio Z.
*********** Nº DE FACTURAS Y PRESUPUESTOS ********
&&numfac guardará el nº de presupuesto o factura por el que vamos
DO CASE
CASE donde = 1 .and. thisform.quehago = "alta"
_numfac = empresas.npre
CASE donde = 1 .and. thisform.quehago <> "alta"
_numfac = cabeza.nfra
CASE donde = 2 .and. thisform.quehago = "alta"
_numfac = empresas.nfra
CASE donde = 2 .and. thisform.quehago <> "alta"
_numfac = cabeza.nfra
ENDCASE
****************************************************
IF thisform.quehago = "alta"
SELECT empresas
RLOCK()
IF donde = 1
replace npre WITH ALLTRIM(STR(VAL(empresas.npre)+1))
ELSE
replace nfra WITH ALLTRIM(STR(VAL(empresas.nfra)+1))
ENDIF
UNLOCK IN empresas
ENDIF
**************************************************
SELECT cabeza && presu o factu según sea....
RLOCK()
IF thisform.quehago = "alta"
APPEND BLANK
endif
replace nfra WITH _numfac
replace codigocli WITH thisform.txtcliente.Value
replace fecha WITH thisform.txtfecha.Value
replace totalfra WITH thisform.desglose.page1.text6.value
replace base WITH thisform.desglose.page1.text4.value
replace iva WITH thisform.desglose.page1.text5.value
UNLOCK
IF thisform.quehago <> "alta" && propiedad para saber si es alta o modificación
SELECT detalle
RLOCK()
DELETE FOR nfra = cabeza.nfra .and. YEAR(fecha) = year(cabeza.fecha)
UNLOCK
ENDIF
SELECT facturas2 && en este cursor esta todo el contenido ya sea creado o modificado (detalle)
GOTO TOP
numc = 1
DO WHILE !RLOCK()
ENDDO
DO WHILE !EOF()
SELECT detalle
RLOCK()
APPEND BLANK
replace nc WITH numc
replace fecha WITH facturas2.fecha
replace nfra WITH _numfac
replace codigocli WITH thisform.txtcliente.Value
replace concepto WITH facturas2.concepto
replace cantidad WITH facturas2.cantidad
replace precio_u WITH facturas2.precio_u
replace base WITH facturas2.base
replace dto WITH facturas2.dto
replace iva WITH facturas2.iva
replace total WITH facturas2.total
UNLOCK
SELECT facturas2
SKIP
numc = numc +1
ENDDO
SELECT facturas2
GOTO TOP
thisform.mostrar && carga la información y la muestra en pantalla
thisform.grlistado.refresh
thisform.grlistado.SetFocus
thisform.txtquehace.Visible = .F.
thisform.shaQuehace.Visible = .F.
thisform.quehago = ""
Valora esta pregunta


0