In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Bloqueo de registros...

Foro de Xailer profesional en español
Responder
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Bloqueo de registros...

Mensaje por Xevi »

Con el DbfDataSet
¿Cómo se si un registro está bloqueado por otro usuario???
Cuando estoy en modo edición
::oBrowse1:Edit()
Cuando termino los Edits con Enter, me salta este error...
***************************** Registro de errores *****************************
Fecha: 08/09/2005
Hora: 10:31:38
Memoria libre: 612176
Area actual: 1
------------------------- Información del compilador --------------------------
Versión Xailer: Xailer 0.99.4 Pre-release 4
Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode Version: 7
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Home Edition 5.01.2600 Service Pack 2
----------------------- Información detallada del error -----------------------
Subsistema: XAILER
Código de error: 0
Estado: .F.
Descripción: Registro bloqueado por otro usuario
Operación: INCID.Dbf
Argumentos:
Fichero:
Código error SO: 0
Pila de llamadas:
TNTXDATASOURCE:NEWERROR (323)
TDBFDATASET:NEWERROR (425)
TDBFDATASET:RECLOCK (610)
TDBFDATASET:UPDATE (550)
TDBBRWCOLUMN:POSTEDIT (755)
TDBBROWSE:CANCELEDIT (2471)
TGRIDEDIT:WMKILLFOCUS (267)
TDBBROWSE:GONEXTCONTROL (0)
TWINCONTROL:WMCHAR (943)
TDBBROWSE:WMCHAR (2252)
RUNFORM (0)
TAPPLICATION:RUN (189)
MAIN (15)
------------------ Información detallada de áreas de trabajo ------------------
Area: 1
Alias: INCID
Registro: 866
Filtro:
Relación:
Orden del í­ndice: 6
Clave activa: 6
Y me hecha fuera de mi aplicación.
Gracias.
Un Saludo,
Xevi.
--
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9447
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Bloqueo de registros...

Mensaje por ignacio »

This is a multi-part message in MIME format.
------=_NextPart_000_0012_01C5B471.4113D4D0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0013_01C5B471.4113D4D0"
------=_NextPart_001_0013_01C5B471.4113D4D0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Xevi,=20
Hay funciones de xharbour para ello, por ejemplo DbrLockList(), que es =
precisamente la que utiliza el metodo IsRecordLocked()
No obstante puedes tu mismo bloquear el registro antes de hacer el =
update()
IF oDs:RecLock()
oDs:Update()
else
O utilizar un TRY..CATCH como ya te he comentado.
Saludos,=20
"Xevi" <xevicomas@terra.es> escribi=F3 en el mensaje =
news:[email=431ffa0b@ozsrvnegro.ozlan.local...]431ffa0b@ozsrvnegro.ozlan.local...[/email]
Con el DbfDataSet
=BFC=F3mo se si un registro est=E1 bloqueado por otro usuario???
Cuando estoy en modo edici=F3n
::oBrowse1:Edit()
Cuando termino los Edits con Enter, me salta este error...
***************************** Registro de errores =
*****************************
Fecha: 08/09/2005
Hora: 10:31:38
Memoria libre: 612176
Area actual: 1
------------------------- Informaci=F3n del compilador =
--------------------------
Versi=F3n Xailer: Xailer 0.99.4 Pre-release 4
Compilador: xHarbour build 0.99.50 Intl. (SimpLex) PCode =
Version: 7
Compilador C/C++: Borland C++ 5.5.1
Plataforma: Windows XP Home Edition 5.01.2600 Service Pack 2
----------------------- Informaci=F3n detallada del error =
-----------------------
Subsistema: XAILER
C=F3digo de error: 0
Estado: .F.
Descripci=F3n: Registro bloqueado por otro usuario
Operaci=F3n: INCID.Dbf
Argumentos:=20
Fichero:=20
C=F3digo error SO: 0
Pila de llamadas:
TNTXDATASOURCE:NEWERROR (323)
TDBFDATASET:NEWERROR (425)
TDBFDATASET:RECLOCK (610)
TDBFDATASET:UPDATE (550)
TDBBRWCOLUMN:POSTEDIT (755)
TDBBROWSE:CANCELEDIT (2471)
TGRIDEDIT:WMKILLFOCUS (267)
TDBBROWSE:GONEXTCONTROL (0)
TWINCONTROL:WMCHAR (943)
TDBBROWSE:WMCHAR (2252)
RUNFORM (0)
TAPPLICATION:RUN (189)
MAIN (15)
------------------ Informaci=F3n detallada de =E1reas de trabajo =
------------------
Area: 1
Alias: INCID
Registro: 866
Filtro:=20
Relaci=F3n:=20
Orden del =EDndice: 6
Clave activa: 6
Y me hecha fuera de mi aplicaci=F3n.
Gracias.
Un Saludo,
Xevi.
------=_NextPart_001_0013_01C5B471.4113D4D0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; =
charset=3Diso-8859-1">
<META content=3D"MSHTML 6.00.2900.2722" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#e6feff>
<DIV>Xevi, </DIV>
<DIV>Â</DIV>
<DIV>Hay funciones de xharbour para ello, por ejemplo DbrLockList(), que =
es=20
precisamente la que utiliza el metodo IsRecordLocked()</DIV>
<DIV>Â</DIV>
<DIV><IMG alt=3D"" hspace=3D0 =
src=3D"cid:000d01c5b460$7d8b04d0$0e00000a@ozlan.local"=20
align=3Dbaseline border=3D0></DIV>
<DIV>Â</DIV>
<DIV>No obstante puedes tu mismo bloquear el registro antes de hacer el=20
update()</DIV>
<DIV>Â</DIV>
<DIV>IF oDs:RecLock()</DIV>
<DIV>ÂÂÂ oDs:Update()</DIV>
<DIV>else</DIV>
<DIV>Â</DIV>
<DIV>O utilizar un TRY..CATCH como ya te he comentado.</DIV>
<DIV>Â</DIV>
<DIV>Saludos, </DIV>
<DIV>Â</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Xevi" <<A =
href=3D"mailto:xevicomas@terra.es">xevicomas@terra.es</A>>=20
escribi=F3 en el mensaje <A=20
=
href=3D"news:431ffa0b@ozsrvnegro.ozlan.local">news:431ffa0b@ozsrvnegro.oz=
lan.local</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>Con el DbfDataSet</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>=BFC=F3mo se si un registro est=E1 =
bloqueado por otro=20
usuario???</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial size=3D2>Cuando estoy en modo =
edici=F3n</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>ÂÂÂÂÂ=20
::oBrowse1:Edit()<BR>Cuando termino los Edits con Enter, me salta este =
error...</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Â</DIV></FONT>
<DIV><FONT face=3DArial size=3D2></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D1>*****************************=20
Registro de errores *****************************</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff=20
size=3D1> ÂÂÂÂÂÂ ÂÂÂÂ =
Fecha:=20
=
08/09/2005<BR> ÂÂÂÂÂÂ ÂÂÂ&nbsp=
;Â=20
Hora: 10:31:38<BR>ÂÂ Memoria libre:=20
612176<BR>ÂÂÂÂ Area actual: 1</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D1>-------------------------=20
Informaci=F3n del compilador --------------------------</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1>Â Versi=F3n =
Xailer: Xailer=20
0.99.4 Pre-release 4<BR>ÂÂÂÂÂ Compilador: =
xHarbour=20
build 0.99.50 Intl. (SimpLex) PCode Version: 7<BR>Compilador C/C++: =
Borland=20
C++ 5.5.1<BR>ÂÂÂÂÂ Plataforma: Windows XP =
Home=20
Edition 5.01.2600 Service Pack 2</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D1>----------------------- Informaci=F3n=20
detallada del error -----------------------</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff =
size=3D1>ÂÂÂÂÂ=20
Subsistema: XAILER<BR>ÂC=F3digo de error:=20
0<BR> ÂÂÂÂÂÂ ÂÂÂ Estado:=20
.F.<BR>ÂÂÂÂ Descripci=F3n: Registro bloqueado por =
otro=20
usuario<BR> ÂÂÂÂÂÂ Operaci=F3n:=20
INCID.Dbf<BR>ÂÂÂÂÂ Argumentos:=20
<BR> ÂÂÂÂÂÂ ÂÂ Fichero: =
<BR>ÂC=F3digo=20
error SO: 0</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1>Pila de =
llamadas:<BR>Â=20
TNTXDATASOURCE:NEWERROR (323)<BR>Â TDBFDATASET:NEWERROR =
(425)<BR>Â=20
TDBFDATASET:RECLOCK (610)<BR>Â TDBFDATASET:UPDATE (550)<BR>Â =
TDBBRWCOLUMN:POSTEDIT (755)<BR>Â TDBBROWSE:CANCELEDIT =
(2471)<BR>Â=20
TGRIDEDIT:WMKILLFOCUS (267)<BR>Â TDBBROWSE:GONEXTCONTROL =
(0)<BR>Â=20
TWINCONTROL:WMCHAR (943)<BR>Â TDBBROWSE:WMCHAR (2252)<BR>Â =
RUNFORM=20
(0)<BR>Â TAPPLICATION:RUN (189)<BR>Â MAIN (15)</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1>------------------ =
Informaci=F3n=20
detallada de =E1reas de trabajo ------------------</FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff=20
=
size=3D1> ÂÂÂÂÂÂ ÂÂÂÂ&nbs=
p;=20
Area: =
1<BR> ÂÂÂÂÂÂ ÂÂÂÂ Alias: =
INCID<BR> ÂÂÂÂÂÂ Â Registro:=20
866<BR> ÂÂÂÂÂÂ ÂÂÂ Filtro:=20
<BR> ÂÂÂÂÂÂ Â Relaci=F3n: <BR>Orden =
del =EDndice:=20
6<BR>ÂÂÂ Clave activa: 6<BR></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2>Y me=20
hecha fuera de mi aplicaci=F3n.</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2></FONT></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2>Gracias.</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2></FONT></FONT>Â</DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2>Un=20
Saludo,</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2>Xevi.</FONT></FONT></DIV>
<DIV><FONT face=3DArial color=3D#0000ff size=3D1><FONT color=3D#000000 =
size=3D2></FONT>Â</DIV></BLOCKQUOTE></FONT></BODY ></HTML>
------=_NextPart_001_0013_01C5B471.4113D4D0--
------=_NextPart_000_0012_01C5B471.4113D4D0
Content-Type: image/png;
name="Image1.png"
Content-Transfer-Encoding: base64
Content-ID: <000d01c5b460$7d8b04d0$0e00000a@ozlan.local>
iVBORw0KGgoAAAANSUhEUgAAAgcAAADvCAMAAABR94fPAAAAB3RJTUUH1QkI Ch0mZnUBlQAAAAlw
SFlzAAAOwwAADsMBx2+oZAAAAARnQU1BAACxjwv8YQUAAAAhUExURf///wAA AOzp2KyomcDAwAAA
ZszMzGZmZgAzZgBmzP/MAEZjljEAAAubSURBVHja7Z2JYuMqEkWpaXcyk/// 4AluC9UGWrzJ9jnv
dWKgKBBcA7IJKieA06k8uwJwCNABVNABVNABVNABVNABVNDBW1IcyxnqD9GY 8MVqftXCNSbYOfLo
1TkyK1kqcz0XFxs8LZveoFo3ofw1XK0DSS9Pgg7Sq09jh1lkiw6ubXF0oDNc at/TgWSXp6IHnSKb
dSDbdHBlk7+3Ds7Twdfvf+Xra60O/CXocSBrqyAP6XRZ2lCyNsfQBB2MKH+/ KuX8M9HBT8iQXUJY
GLRZwKYnCwg/pthIa6hynEwO10P5DBUdhIAJ1VdGhF0ddH1k9dJmR9LBeTr4 W/J54efHC2FBB6dk
4Rj6K7FzVnNPhrfxwK/Vh+81NzkZb27aygvq6MDNOtF0WPBhdPD9/V1FUH5/ f3sd/PwEIWzVgSzp
YOprb5UME67VOzoIopgzZipJAm64ifGpDHoiTFXmcj2d33mhXMaEX5wOfn6i ENbrIOkMb2fjc+P4
Jk06+RTdREVKcCCDXydJKtLRweDXaVjzI+ng63Kv8PXt1gc/P4kQVuug3zX+ ZcjkLHQ/psoJbrLx
w1XB6fBk+z2tdKoDl8t4TBcqxuxA64Ovch4QShgPfn4yIdxeB9ms4T870jaJ KnzZtvmNL+MgEeOg
0j0d6FdRJGFaOKoOvr+/zqPBtx8P/tv4n8qQtMAVOkh7NZ06WwMu6SBbJya6 QAeawXjQyZC0wH4d
mGYxLRbbNW/nUxoMUpGkCo/RQZrtiDr4/jcgxPVBniFrRN+EyzoYzPZ+Ih23 86kX7MzyaXfccX1w
ehkdqG+Zbvl5YlydR7tlHfR6Z7w+SELJbcjy/ULvmlyhw/uF5BYhuSd5Nvu+ X7CdGm/O/Co9iXYy
sZOEj3RZbCBv6UwHHQchEMe0jpkMUkMVRmU9nX3fOw904COM6dgutmzi6hTS MgEkvRkq0Q8kk1hf
B35VmxTuDLMWejkWdKDTTNt0Lv4SED0E2Ei76p5T2+vQ3sYk2FoHNnAK16Cz dnQw8OHqFQo+zvpg
M+xHggo6gAo6gAo6gAo6gAo6gAo6gAo6gEoBAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAADgK
54PAFkx2pIxsJAutcZW5kGWTPa1yTeaXRJYve6MOZMnmMTpYU/+VVfwEZPm6 0cEHMOvgPD+cX1x+
XqLmsJpBphQdungQ0THKT0ljpIgt7mISInMXTUaS5W8VkrT+xqBErx9E04Hu cdFRPnbKJVlIt+hF
O8Vl9DHSTLNMzmnJ0ouPEQl5g49ujZXXD8LpoEjJ+kBKtx3TkPfZ6QAbk3bO kgsb6Wvt03QH5wYm
4YOYdSBqAHVRbVidBtY5RYX0mCoiw05UrspYB8ZTdKEjY6HiNaBmso5QdMIH YcaDEseDonTgcyVr
vO4omw4dNqY7EJSBixXpiQ5WDCYfhriGGHTjtvXBeDzIYtavD5bmhWR9EOov qYFK+CzmEXpaQk+x
LUoP9ipbmZvLrOmnH+L9lJLFiOT3C86y50IPC/n9wtyx3XsOU5xdXMAzubYT 6MT34Jp+lCvzw3G4
qh8XvzABAAAAAAAAAAAAAAAAAAAAAIC78B94c9AB/PJnrQ7+PICHFAKR34Zf rYNHzD6PKAQi6AAq
6AAq6AAq6AAq23QgF8q9/hDonw7ioQdLxL+rHxm3i+j/QdP4dLhNxb0Em8eD 9pfCd6pOUSct6B9j
tnZM6jy8lCypW85Lq2KnDu5XnbLYCRn7dZCXgw66hmE8aNPD8gGbG6pTTPP7 Ew/KPFPYoxRKYpma
zE5UZ4fz21wVzCEMWXGSHODwUlylA5n0cLNRoq0P/pVV3AkoNjKeqTK01EdW WB1kx6GEKpigL05c
9pfjuvHgTjqYilnSQWkxXcsSenlOEmelOztWYVhccqLOa3FUHYx7184L1tLe a5RVOlBnn+lJbnbn
jtoJxaGDO+ggGa8THXiTeFrRah3EN7VJUhl7xX22Du60PlilA/2W3LKSmJPm H86J5BIppV/cZ+vg
TvcL89ie3S+E49Gm4Tm1dF5aiimmOWkvQxWaEPLims3H3C/M3OOK+Vz5SaAD qKADqPB9I1TQAVQ2
6ADemQ3jwWO2zcIzYF6ACjqACjqACjqACjqAykYdSG8f740+XIzfN8JD2KyD kvb58h7vtdVpzhDB
I7mRDvpsGygu48HLfo3/suzWwbwLQH0fL21ziklxRgNpWB2c/08e5ayKeHb7 vQt7ddB+610YooQQ
dq2prSv97pvWB/P//pWNZNS4EfvXidOb3AV6/2YdjLou6qAs/oIbsGc8OGPe 2ukYYLVhEgbVKVP/
ooNHslcHnS52CSUxGk7r6OBJ3FUH+9cHfg0Q9gmjg9tyxbwg5h2e9LuZMzbd L5Tit6GbRzknW5Ph
Ol7oc2X6/I68iA6YAu7Mi+iAKeDOvIoO4L6gA6igA6iwbx3OsG8d/rBvHf6B DqCCDqCCDqCCDqCy
9Zzt82t9MGm+iX3vkUlGB4OvqLdtmYZF7qQDn7K2j9DBk7h23/o6Hazuo1kH skcHSGEv1+9bL3GH
iU+J+9Z7Z+5NOnA72Yre1uJ3QV7st/9pBczcYt96OExzcbNa9wzO6fzE5sZv c5x3t4WYMGfBerbe
L7Q3cmereksab2BNsxV37n5PB63wTunPbtNXZLcOen+uckmbp4XtOlgaD4qZ Y0LKs5v0Jdmrg9FW
9Ti7b9TBgodiVKhTUcFedpyvPG8rv2Z9MNZBuF9Ytz5ABXvZqwOzb13fO5T2 wq3n3R2G293eqqMC
Uya3DX50vwA74XNlqKADqKADqKADqKADqKADqBxQB93Ph2UQisiKNFnnan2h L8v76iBFbFZ0MHFA
HfjOatxMBz6IDg6ug/YQ7aIOwjgnSkyf3+WXWB0q4VHe/8popvYxgD4yFvpm HFEH/qmYl28O1Eko
LqR6rmgbFxLrucyee45LP+3NeAkdFN/P484Nv8RHxkQZOe5FvhGH1MHlRNX2 XVYxI7UeCEL6Jdsc
Ut9TTZH2SeAjHdhDYws6eJIOSpl+dd+vJeogJNrIdApZ4R8dnA0f+jmSWip6 HXTn7w3rg9F4kPpn
PGiGT9BBMpiLPj/PpU9O+vcLRftQbrRZ9J9HvhcH1cEzecNeXgYdBNDB0BAd vDPoACroACqclwZn
jnVeGjyP1QMHvDXPnpoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAHYg7VHLa4xX
Rd2oYr6eA6tgO52gvFDP9NEOvSJl6Cp3MNVi3ErmKdbzg81l6PzGyEI4pMl6 +xtWTNabqnpu00F0
oJ/vseJCk6ZZlVOMyfF10LvYB1RsUzGtGW+pg51VXhwMgsmzdTB45FXvmVjx EVf2EVjzSynmnPzp
X8/Mp8tUUuopy6ptRb3jJKmHuBLbc1omT+2BT/E8f3UBxTed6di5LqYC5jkR tkLm2vIWlJvJo60P
Ok+/mJ9WsfT4jFKCjYrJfHTNSpbe85RmtbbSqWC3jCmydxHpBSRtoXUgWfV1 x8+Pqwmd0m3Bm40S
fvXjdZC13bg7rYPSySxpsbmrzEW/79yI3BWqafnivaY6MOpZeQG5dLJ3ndJB fundVrilDuxA6x5x
00S6oIN52hAV09WB6IE/G1p0Pe6hA3NbIbYR1uggPhvMxvR1kD2LzNRbt8BD dRA7tYQalEGdnBPr
INXBcCCRTui240Feh7U66Dr2tRhUfzgexGHj7jrIRqpRry81s2rV6Z9v4Et8 P6NJ7zVERwdSliu4
oLWQK+nU/gW4GuTrA9scmQ4eNR60z5HMI6+Sa0kM4iOueutou9ptV+rX8b7H xIZMm0jySl2Trl+7
TlfB1r/SbkjaNRodTF3Wef5X3hb2c6TO/UIQrZ8XWq/7pxG/5FNoZSF8QOLb 7apKy8iHdF6/HegA
HcSLe41HJcpNxTvWgWQvAQAAAAAAAAAAAAAADsL/AaN/M51L6S0yAAAAAElF TkSuQmCC
------=_NextPart_000_0012_01C5B471.4113D4D0--

Attached files
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder