Espero que sigáis todos bien y que perdure.
Tengo un problema con una empresa y supongo que con mi programa.
Uso ficheros DBF para bases de datos, indices CDX y están filtrados con "SET FILTER".
El programa esta funcionando en una red local con unidades compartidas. Y todo funciona bien y va rápido dependiendo del sistema operativo y las características del PC.
Para presentar tablas de registros uso la clase XBROWSE.
Y cuando se trata de ficheros que no están en ese momento compartidos va rápido, pero si en dos puestos se conectan a las mismas bases de datos el tiempo se eterniza de dos segundos pueden pasar a 2 minutos en presentar la ventana de entrada y dar el control al usuario.
Por ejemplo en el siguiente codigo:
Code: Select all
FUNCTION GestAlba03()
SELECT 1
use EMPRESA SHARED
OrdSetFocus ("empre01")
seek xempr
SELECT 4
use &XA SHARED
OrdSetFocus (xaa)
go top
seek str(xnumact,6,0)
if eof()
store 0.00 to tiva1,tiva2,tiva3,tiva4,tiva5,tiva6,tiva7
store 0.00 to trec1,trec2,trec3,trec4,trec5,trec6,trec7
store 0.00 to tret1,tret2,tret3
else
tiva1 = iva1
tiva2 = iva2
tiva3 = iva3
tiva4 = iva4
tiva5 = iva5
tiva6 = iva6
tiva7 = iva7
trec1 = rec1
trec2 = rec2
trec3 = rec3
trec4 = rec4
trec5 = rec5
trec6 = rec6
trec7 = rec7
tret1 = ret1
tret2 = ret2
tret3 = ret3
endif
store fechadia to xfechadia
store cuencomi to xcomision
store multiple to multilin
SELECT 70
use CODIPAIS SHARED ALIAS CODPAIS
OrdSetFocus ("nombre")
SELECT 64
use &XY5 SHARED ALIAS PROMOCION
OrdSetFocus (xy5a)
go top
if eof()
xapliprom = 0
else
xapliprom = 1
endif
SELECT 67
use &XY7 SHARED ALIAS TEXTCAMP
OrdSetFocus (xy7a)
SELECT 68
use &XY8 SHARED ALIAS DESCUENTO
OrdSetFocus (xy8a)
SELECT 62
use &XY3 SHARED ALIAS TARIFA
OrdSetFocus (xy3a)
set filter to tipo = "1"
go top
SELECT 66
use &XY2 SHARED ALIAS TRANSPORTE
OrdSetFocus (xy2a)
go top
SELECT 63
use &XY4 SHARED ALIAS TARIFAS
OrdSetFocus (xy4a)
xtariclie = space(9)
SELECT 65
use &XY6 SHARED
OrdSetFocus (xy6a)
seek "02" // albaranes ingresos
yfecha = fecha
yorden = orden
yrecibo = recibo
ydescuento = descuento
yrecargo = recargo
yretencion = retencion
yotrimpd = otrimpd
ynumero = numero
ycambio = cambio
yempleado = empleado
yelemento = elemento
ylote = lote
ycoste = coste
ytalla = talla
ytallas = tallas
yvisusn = visusn
yfactor = factor
ymerma = merma
ymultiline = multiline
ycomision = comision
ynumant = numant
ynumdes = numdes
ydirenv = direnv
ycobpag = cobpag
ydesgen = desgen
ycamli1 = camli1
ycamli2 = camli2
ycamli3 = camli3
ycamli4 = camli4
ydescu1 = descu1
ydescu2 = descu2
ydescu3 = descu3
ydescu4 = descu4
ytarifa = tarifa
yportes = portes
ycompra = compra
ycomcom = comcom
yviscsn = viscsn
ynotasc = notasc
SELECT 40
use &XZ SHARED
OrdSetFocus (xza)
SELECT 21
use &XR SHARED
OrdSetFocus (xra)
seek xnumser
SELECT 23
use &XT SHARED
OrdSetFocus (xta)
SELECT 5
use &XB SHARED
OrdSetFocus (xba)
go top
SELECT 6
use &XC SHARED
OrdSetFocus (xca)
go top
SELECT 7
use &XD SHARED ALIAS PROVEEDO
OrdSetFocus (xda)
SELECT 8
use &XE SHARED
OrdSetFocus (xea)
go top
SELECT 9
use &XF SHARED
OrdSetFocus (xfa)
go top
SELECT 10
use &XG SHARED
OrdSetFocus (xga)
go top
SELECT 46
use &XZ6 SHARED
OrdSetFocus (xz6a)
SELECT 47
use &XZ7 SHARED ALIAS CABECERA
OrdSetFocus (xz7a)
set filter to tipo = "B" .AND. year(fecha)=val(xejer) .AND. xnumact = act .AND. xnumser = serie .AND. xnumcen = centro
go top
xTiRe = TipReg
xregi = numero
xfech = fecha
xclie = cliente
SELECT 13
use &XJ SHARED ALIAS VENCIMIEN
OrdSetFocus (xja)
set filter to act = xnumact .AND. serie = xnumser .AND. centro = xnumcen .AND. albaran = str(xregi,6,0) .AND. fecalba = xfech .AND. tipo = "C" .AND. cliente = xclie
go top
SELECT 12
use &XI SHARED ALIAS APUNTES
OrdSetFocus (xic)
set filter to year(fecalba)=val(xejer) .AND. xnumact = act .AND. xnumser = serie .AND. xnumcen = centro .AND. albaran = xregi
go top
SELECT 47
mTexto01 = mTexto01 + " -- " + LocaText( 1, 1, 32) + ": " + str(xnumact,6,0) + " - " + LocaText( 1, 1,753) + ": " + xnumser + " - " + LocaText( 1, 1,126) + ": " + xnumcen
xMenu01:Refresh()
CreaVent(600,1060,"wGestAlba","oVentPrinc",Locatext( 1, 1,348),"MenuAlba()")
va080 = space(9) // comprador para busqueda de descuentos no falle
vd001 = space(6)
vd002 = space(9)
@ 10*ProporV,600*ProporH SAY dDlg007 VAR LocaText( 1, 1,232) OF wGestAlba PIXEL COLOR escri1, fondo1 FONT xFont SIZE 400*ProporH,xProPorV*ProPorV
@ 10*ProporV, 10*ProporH SAY dDlg004 VAR LocaText( 1, 1, 87) OF wGestAlba PIXEL COLOR escri1, fondo1 FONT xFont SIZE 130*ProporH,xProPorV*ProPorV
@ 10*ProporV, 70*ProporH SAY dDlg005 VAR LocaText( 1, 1, 40) OF wGestAlba PIXEL COLOR escri1, fondo1 FONT xFont SIZE 130*ProporH,xProPorV*ProPorV
@ 10*ProporV,200*ProporH SAY dDlg006 VAR LocaText( 1, 1,136) OF wGestAlba PIXEL COLOR escri1, fondo1 FONT xFont SIZE 130*ProporH,xProPorV*ProPorV
@ 10*ProporV,130*ProPorH GET dDlg001 VAR vd001 OF wGestAlba PIXEL COLOR escri2, fondo2 FONT xFont SIZE 54*ProPorH,xProPorV*ProPorV PICTURE "######" ON CHANGE GestAlba2(1)
@ 10*ProporV,250*ProPorH GET dDlg002 VAR vd002 OF wGestAlba PIXEL COLOR escri2, fondo2 FONT xFont SIZE 78*ProPorH,xProPorV*ProPorV PICTURE "!!!!!!!!!" ON CHANGE GestAlba2(2)
dBrw := TxBrowse():New(wGestAlba)
dBrw:nHeaderLines := 1
dBrw:lAllowColSwapping := .f.
dBrw:nRowHeight := 18*ProPorV
dBrw:nMarqueeStyle := 5
dBrw:nColDividerStyle := 1
dBrw:lColDividerComplete := .t.
dBrw:lHScroll := .t.
dBrw:lFooter := .f.
dBrw:bChange := { || CaDiAlba() }
dBrw:bLDblClick := { || VisuAlba(1) }
dBrw:bKeyDown := { | nKey | if (nKey == 13, VisuAlba(1),) }
dBrw:nTop := 36*ProPorV
dBrw:nLeft := 5*ProPorH
dBrw:nBottom := 393*ProPorV
dBrw:nRight := 1050*ProPorH
dBrw:nClrPane := { || IIF( ( dBrw:cAlias)->( OrdKeyNo()) %2 == 1, fondo2,escri2)}
dBrw:bClrStd := { ||{escri1, IIF( ( dBrw:cAlias )->( OrdKeyNo() ) %2 == 0,fondo2,fondo1 ) }}
dBrw:bClrSelFocus := { || { fondo3, escri3 } }
dBrw:bClrSel := { || { fondo3, escri2 } }
dCol := dBrw:AddCol() // linea 1
dCol:cHeader := LocaText( 1, 1,586)
dCol:bStrData := { || str(cabecera->numero,6,0) }
dCol:nWidth := 52*ProPorH
dCol:nDataStrAlign := 1
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dCol := dBrw:AddCol() // linea 2
dCol:cHeader := LocaText( 1, 1,288)
dCol:bStrData := { || dtoc(cabecera->fecha) }
dCol:nWidth := 82*ProPorH
dCol:nDataStrAlign := 2
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dCol := dBrw:AddCol() // linea 3
dCol:cHeader := LocaText( 1, 1,136)
dCol:bStrData := { || cabecera->cliente }
dCol:nWidth := 74*ProPorH
dCol:nDataStrAlign := 0
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dCol := dBrw:AddCol() // linea 4
dCol:cHeader := LocaText( 1, 1,565)
dCol:bStrData := { || cabecera->nomcli }
dCol:nWidth := 263*ProPorH
dCol:nDataStrAlign := 0
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.T.
dCol := dBrw:AddCol() // linea 5
dCol:cHeader := LocaText( 1, 1, 81)
dCol:bStrData := { || str(cabecera->cambasto,17,2) }
dCol:nWidth := 134*ProPorH
dCol:nDataStrAlign := 1
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dCol := dBrw:AddCol() // linea 6
dCol:cHeader := LocaText( 1, 1,400)
dCol:bStrData := { || str(cabecera->camivato+cabecera->camrecto,17,2) }
dCol:nWidth := 134*ProPorH
dCol:nDataStrAlign := 1
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dCol := dBrw:AddCol() // linea 7
dCol:cHeader := LocaText( 1, 1,716)
dCol:bStrData := { || str(cabecera->camretto,17,2) }
dCol:nWidth := 134*ProPorH
dCol:nDataStrAlign := 1
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dCol := dBrw:AddCol() // linea 8
dCol:cHeader := LocaText( 1, 1,802)
dCol:bStrData := { || str(cabecera->camtotto,17,2) }
dCol:nWidth := 134*ProPorH
dCol:nDataStrAlign := 1
dCol:nHeadStrAlign := 2
dCol:lAllowSizing :=.F.
dBrw:SetRdd()
dBrw:CreateFromCode ()
SELECT 12
go top
dBrw1 := TxBrowse():New(wGestAlba)
dBrw1:nHeaderLines := 1
dBrw1:lAllowColSwapping := .f.
dBrw1:nRowHeight := 18*ProPorV
dBrw1:nMarqueeStyle := 5
dBrw1:nColDividerStyle := 1
dBrw1:lColDividerComplete := .t.
dBrw1:lHScroll := .t.
dBrw1:lFooter := .f.
dBrw1:bLDblClick := { || VisuAlba(1) }
dBrw1:bKeyDown := { | nKey | if (nKey == 13, VisuAlba(1),) }
dBrw1:nTop := 396*ProPorV
dBrw1:nLeft := 5*ProPorH
dBrw1:nBottom := 520*ProPorV
dBrw1:nRight := 1050*ProPorH
dBrw1:nClrPane := { || IIF( ( dBrw1:cAlias)->( OrdKeyNo()) %2 == 1, fondo2,escri2)}
dBrw1:bClrStd := { ||{escri1, IIF( ( dBrw1:cAlias )->( OrdKeyNo() ) %2 == 0,fondo2,fondo1 ) }}
dBrw1:bClrSelFocus := { || { fondo3, escri3 } }
dBrw1:bClrSel := { || { fondo3, escri2 } }
dCol2 := dBrw1:AddCol() // linea 1
dCol2:cHeader := LocaText( 1, 1,519)
dCol2:bStrData := { || str(apuntes->npedido,3,0) }
dCol2:nWidth := 23*ProPorH
dCol2:nDataStrAlign := 1
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 2
dCol1:cHeader := LocaText( 1, 1,605)
dCol1:bStrData := { || apuntes->ordalba }
dCol1:nWidth := 35*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 3
dCol1:cHeader := LocaText( 1, 1,288)
dCol1:bStrData := { || dtoc(apuntes->fecha) }
dCol1:nWidth := 65*ProPorH
dCol1:nDataStrAlign := 2
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 4
dCol1:cHeader := LocaText( 1, 1,157)
dCol1:bStrData := { || apuntes->concepto }
dCol1:nWidth := 95*ProPorH
dCol1:nDataStrAlign := 0
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
if xAgeBie = "G"
dCol1 := dBrw1:AddCol() // linea 5
dCol1:cHeader := LocaText( 1, 1,207)
dCol1:bStrData := { || apuntes->descripcio }
dCol1:nWidth := 353*ProPorH
dCol1:nDataStrAlign := 0
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 6
dCol1:cHeader := LocaText( 1, 1,122)
dCol1:bStrData := { || str((apuntes->cantidad * apuntes->factmult) - apuntes->merma,10,val(xpicca)) }
dCol1:nWidth := 65*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 7
dCol1:cHeader := LocaText( 1, 1,384)
dCol1:bStrData := { || str(apuntes->importe,17,val(xpicpr)) }
dCol1:nWidth := 107*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 7
dCol1:cHeader := LocaText( 1, 2,299)
dCol1:bStrData := { || str(apuntes->totlinea,17,val(xpicpr)) }
dCol1:nWidth := 107*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
else
dCol1 := dBrw1:AddCol() // linea 5
dCol1:cHeader := LocaText( 1, 1,207)
dCol1:bStrData := { || apuntes->descripcio }
dCol1:nWidth := 285*ProPorH
dCol1:nDataStrAlign := 0
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 6
dCol1:cHeader := LocaText( 1, 1,122)
dCol1:bStrData := { || str((apuntes->cantidad * apuntes->factmult) - apuntes->merma,10,val(xpicca)) }
dCol1:nWidth := 65*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 7
dCol1:cHeader := LocaText( 1, 1,384)
dCol1:bStrData := { || str(apuntes->importe,17,val(xpicpr)) }
dCol1:nWidth := 90*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 7
dCol1:cHeader := LocaText( 1, 1,851)
dCol1:bStrData := { || str(apuntes->coste,17,val(xpicpr)) }
dCol1:nWidth := 90*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 7
dCol1:cHeader := LocaText( 1, 2,299)
dCol1:bStrData := { || str(apuntes->totlinea,17,val(xpicpr)) }
dCol1:nWidth := 107*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
endif
dCol1 := dBrw1:AddCol() // linea 8
dCol1:cHeader := LocaText( 1, 1,211)
dCol1:bStrData := { || str(apuntes->descuento,17,val(xpicpr)) }
dCol1:nWidth := 70*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 9
dCol1:cHeader := LocaText( 1, 1, 7)
dCol1:bStrData := { || str(apuntes->iva,5,2) }
dCol1:nWidth := 35*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 10
dCol1:cHeader := LocaText( 1, 1, 11)
dCol1:bStrData := { || str(apuntes->retencion,5,2) }
dCol1:nWidth := 35*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.T.
dCol1 := dBrw1:AddCol() // linea 11
dCol1:cHeader := LocaText( 1, 1,276)
dCol1:bStrData := { || str(apuntes->factura,6,0) }
dCol1:nWidth := 65*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.F.
dCol1 := dBrw1:AddCol() // linea 12
dCol1:cHeader := LocaText( 1, 1,176)
dCol1:bStrData := { || apuntes->barras }
dCol1:nWidth := 157*ProPorH
dCol1:nDataStrAlign := 0
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.F.
dCol1 := dBrw1:AddCol() // linea 13
dCol1:cHeader := LocaText( 1, 1,506)
dCol1:bStrData := { || apuntes->lote }
dCol1:nWidth := 171*ProPorH
dCol1:nDataStrAlign := 0
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.F.
dCol1 := dBrw1:AddCol() // linea 14
dCol1:cHeader := LocaText( 1, 1,254)
dCol1:bStrData := { || apuntes->elemento }
dCol1:nWidth := 119*ProPorH
dCol1:nDataStrAlign := 0
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.F.
dCol1 := dBrw1:AddCol() // linea 15
dCol1:cHeader := LocaText( 1, 2,158)
dCol1:bStrData := { || str(apuntes->factmult,10,val(xpicca)) }
dCol1:nWidth := 110*ProPorH
dCol1:nDataStrAlign := 1
dCol1:nHeadStrAlign := 2
dCol1:lAllowSizing :=.F.
dBrw1:SetRdd()
dBrw1:CreateFromCode ()
SELECT 13
go top
dBrw2 := TxBrowse():New(wGestAlba)
dBrw2:nHeaderLines := 1
dBrw2:lAllowColSwapping := .f.
dBrw2:nRowHeight := 18*ProPorV
dBrw2:nMarqueeStyle := 5
dBrw2:nColDividerStyle := 1
dBrw2:lColDividerComplete := .t.
dBrw2:lHScroll := .f.
dBrw2:lFooter := .f.
dBrw2:bLDblClick := { || VencAlba() }
dBrw2:bKeyDown := { | nKey | if (nKey == 13, VencAlba(),) }
dBrw2:nTop := 525*ProPorV
dBrw2:nLeft := 5*ProPorH
dBrw2:nBottom := 610*ProPorV
dBrw2:nRight := 1050*ProPorH
dBrw2:nClrPane := { || IIF( ( dBrw2:cAlias)->( OrdKeyNo()) %2 == 1, fondo2,escri2)}
dBrw2:bClrStd := { ||{escri1, IIF( ( dBrw2:cAlias )->( OrdKeyNo() ) %2 == 0,fondo2,fondo1 ) }}
dBrw2:bClrSelFocus := { || { fondo3, escri3 } }
dBrw2:bClrSel := { || { fondo3, escri2 } }
dCol2:= dBrw2:AddCol() // linea 1
dCol2:cHeader := LocaText( 1, 1,288)
dCol2:bStrData := { || dtoc(vencimien->fecha) }
dCol2:nWidth := 82*ProPorH
dCol2:nDataStrAlign := 2
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.F.
dCol2:= dBrw2:AddCol() // linea 2
dCol2:cHeader := LocaText( 1, 1,271)
dCol2:bStrData := { || tipovenc(vencimien->estado) }
dCol2:nWidth := 97*ProPorH
dCol2:nDataStrAlign := 2
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.F.
dCol2:= dBrw2:AddCol() // linea 3
dCol2:cHeader := LocaText( 1, 1,205)
dCol2:bStrData := { || vencimien->numero }
dCol2:nWidth := 208*ProPorH
dCol2:nDataStrAlign := 2
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.F.
dCol2:= dBrw2:AddCol() // linea 4
dCol2:cHeader := LocaText( 1, 1,141)
dCol2:bStrData := { || vencimien->banco }
dCol2:nWidth := 97*ProPorH
dCol2:nDataStrAlign := 1
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.F.
dCol2:= dBrw2:AddCol() // linea 5
dCol2:cHeader := LocaText( 1, 1,384)
dCol2:bStrData := { || str(vencimien->importe,12,2) }
dCol2:nWidth := 97*ProPorH
dCol2:nDataStrAlign := 1
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.F.
dCol2:= dBrw2:AddCol() // linea 6
dCol2:cHeader := LocaText( 1, 2, 93)
dCol2:bStrData := { || str(vencimien->billetes,3,0) }
dCol2:nWidth := 100*ProPorH
dCol2:nDataStrAlign := 1
dCol2:nHeadStrAlign := 2
dCol2:lAllowSizing :=.F.
dBrw2:SetRdd()
dBrw2:CreateFromCode ()
SELECT 47
go bottom
dBrw:gobottom()
dDlg001:SetFocus()
RETURN (NIL)
Pasa con la clase XBROWSE ya que en ventanas que hay esta clase no hay la demora
A alguien le ha pasado algo parecido y ha podido resolverlo o puede orientarme de donde mirar ya que no se que puede pasar.
He comprobado que pasa en W10 y en W7.
En espera de vuestros comentarios.
Un saludo
Carlos