This is a multi-part message in MIME format.
------=_NextPart_000_008F_01C52950.9CD03360
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0090_01C52950.9CD03360"
------=_NextPart_001_0090_01C52950.9CD03360
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Fredy,=20
>>Mira el ejemplo que te adjunto En el browse de arriba falla y d=E9 el=20
>>mensaje que te mand=E9 ayer. El browse de abajo funciona bien =
directamente=20
>>desde de DbNavigator.
A mi no me falla. S=F3lo consigo que falle cuando suprimo pero es porque =
se esta violando una constraint y entonces es completamente normal que =
falle.
>>Me tienes que contar con m=E1s detalle lo del SetPrimaryFields(), que =
por=20
>>cierto a m=ED con ese nombre no me funciona, sino que tengo que poner=20
>>SetPrimaryKeys()
Ese nombre se lo pusistes tu en tu mensaje del 6 de marzo de 2005 a las =
1:08, Asunto: SetPrimaryFields, y precisamente en mi contestaci=F3n te =
explique en que consistian las PrimaryKeys.
Fredy,
Una PrimaryFields o Clave primar=EDa es tan s=F3lo un mecan=EDsmo para =
establecer=20
unicidad de filas en una tabla, es decir, no puede haber dos filas=20
exactamente iguales. Y dicha clave primar=EDa se puede componer de uno o =
m=E1s=20
campos. Un ejemplo claro es el t=EDpico campo 'Codigo' que suele haber =
en=20
muchas tablas.
A diferencia de xBase si el campo 'Codigo' se define como tabla primaria =
el=20
propio Motor SQL se encarga de que sea imposible que existan dos filas=20
(registros) con el mismo valor en el campo c=F3digo. Y es precisamente =
esta=20
cualidad de las claves primarias la que nos permite en Xailer y otros=20
entornos de desarrollo hacer modificaci=F3n en las tablas con la =
seguridad de=20
que SOLO afectar=E1 a la fila que deseemos.
La definici=F3n de claves primarias en las tablas se hace por DDL (Data=20
Definition Language), es decir, es una instrucci=F3n SQL m=E1s, pero lo =
m=E1s=20
normal es que utilices el administrador del Motor SQL para hacer el =
trabajo=20
ya que puede variar algo la sintaxis entre distintos motores, por =
ejemplo en=20
FireBird / Interbase ser=EDa algo as=ED:
CREATE UNIQUE INDEX ACCIONES_INDEX1 ON ACCIONES (CODIGO);
Si la table tiene clave primaria y el cliente ODBC que estes usando sea=20
capaz de retornar dicha informaci=F3n no har=E1 falta que hagas nada, en =
caso=20
contrario puedes tu si lo deseas indicar la clave primaria de la tabla, =
pero=20
much=EDsimo cuidado, pues como no sepas muy bien lo que est=E1s haciendo =
es=20
posible que en operaci=F3n de edici=F3n y borrado tus operaciones =
afecten a m=E1s=20
de un fila sin que te des cuenta.
Yo siempre pongo el ejemplo de las lineas de factura, normalmente =
cualquier=20
Clippero utiliza el campo n=FAmero de factura en la tabla de lineas de=20
facturaci=F3n para conocer todas las lineas de una factura. Sin embargo =
es=20
posible que el usuario haya introducido dos lineas exactamente iguales, =
es=20
decir, en vez de cambiar la cantidad de un art=EDculo ha vuelto a =
introducir=20
el art=EDculo de nuevo. En SQL ello implicar=EDa que una modificaci=F3n =
sobre esa=20
linea afectar=EDa tambi=E9n a la nueva.
Si se intentase introducir una clave primaria en el campo 'Factura' =
sobre la=20
tabla de lineas de facturaci=F3n el motor de SQL te dar=EDa un error ya =
que hay=20
muchas lineas con el mismo n=FAmero de factura lo cual no es posible. La =
soluci=F3n ha este problema es facil, simplemente a=F1adele un nuevo =
campo de=20
nombre 'linea' y haz que la clave primar=EDa sea la conjunci=F3n de los =
dos=20
campos: 'Factura' y 'Linea'.
Un saludo,
Despu=E9s de ver tu ejemplo compruebo que al driver ODBC de Firebird no =
le gusta como nombre de tabla 'employeE' para obtener su primary Key, =
sin embargo con 'EMPLOYEE' va perfectamente. Te recomiendo que utilices =
el propio IbExpert para construir las consultas ya que las =
construcciones WHERE Tabla1, Tabla2 deben de sustituirse por operaciones =
de JOIN que aportan m=E1s funcionalidad y son m=E1s claras. En tu caso =
podr=EDa ser algo as=ED:
SELECT EMPLOYEE.*, DEPARTMENT.PHONE_NO
FROM EMPLOYEE
LEFT OUTER JOIN DEPARTMENT ON (EMPLOYEE.DEPT_NO =3D =
DEPARTMENT.DEPT_NO)
Por cierto, el proceso de mostar el dialogo del Avi y el bucle que =
tiene hacen innecesariamente lento las consultas SQL, por lo menos en mi =
m=E1quina.
Un saludo,
------=_NextPart_001_0090_01C52950.9CD03360
Content-Type: text/html;
charset="iso-8859-15"
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-15">
<META content=3D"MSHTML 6.00.2900.2604" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY>
<DIV>Fredy, </DIV>
<DIV>Â</DIV>
<DIV>>>Mira el ejemplo que te adjunto En el browse de arriba falla =
y d=E9 el=20
<BR>>>mensaje que te mand=E9 ayer. El browse de abajo funciona =
bien=20
directamente <BR>>>desde de DbNavigator.</DIV>
<DIV>Â</DIV>
<DIV>A mi no me falla. S=F3lo consigo que falle cuando suprimo pero es =
porque se=20
esta violando una constraint y entonces es completamente normal que =
falle.</DIV>
<DIV>Â</DIV>
<DIV><IMG alt=3D"" hspace=3D0 =
src=3D"cid:008a01c52948$3b04c680$0e00000a@ozlan.local"=20
align=3Dbaseline border=3D0><BR></DIV>
<DIV>>>Me tienes que contar con m=E1s detalle lo del =
SetPrimaryFields(), que=20
por <BR>>>cierto a m=ED con ese nombre no me funciona, sino que =
tengo que=20
poner <BR>>>SetPrimaryKeys()</DIV>
<DIV>Â</DIV>
<DIV>Ese nombre se lo pusistes tu en tu mensaje del 6 de marzo de 2005 a =
las=20
1:08, Asunto: SetPrimaryFields, y precisamente en mi contestaci=F3n te =
explique en=20
que consistian las PrimaryKeys.</DIV>
<DIV>Â</DIV>
<DIV><EM><FONT color=3D#0000ff>Fredy,<BR><BR>Una PrimaryFields o Clave =
primar=EDa es=20
tan s=F3lo un mecan=EDsmo para establecer <BR>unicidad de filas en una =
tabla, es=20
decir, no puede haber dos filas <BR>exactamente iguales. Y dicha clave =
primar=EDa=20
se puede componer de uno o m=E1s <BR>campos. Un ejemplo claro es el =
t=EDpico campo=20
'Codigo' que suele haber en <BR>muchas tablas.<BR><BR>A diferencia de =
xBase si=20
el campo 'Codigo' se define como tabla primaria el <BR>propio Motor SQL =
se=20
encarga de que sea imposible que existan dos filas <BR>(registros) con =
el mismo=20
valor en el campo c=F3digo. Y es precisamente esta <BR>cualidad de las =
claves=20
primarias la que nos permite en Xailer y otros <BR>entornos de =
desarrollo hacer=20
modificaci=F3n en las tablas con la seguridad de <BR>que SOLO afectar=E1 =
a la fila=20
que deseemos.<BR><BR>La definici=F3n de claves primarias en las tablas =
se hace por=20
DDL (Data <BR>Definition Language), es decir, es una instrucci=F3n SQL =
m=E1s, pero=20
lo m=E1s <BR>normal es que utilices el administrador del Motor SQL para =
hacer el=20
trabajo <BR>ya que puede variar algo la sintaxis entre distintos =
motores, por=20
ejemplo en <BR>FireBird / Interbase ser=EDa algo as=ED:<BR><BR>CREATE =
UNIQUE INDEX=20
ACCIONES_INDEX1 ON ACCIONES (CODIGO);<BR><BR>Si la table tiene clave =
primaria y=20
el cliente ODBC que estes usando sea <BR>capaz de retornar dicha =
informaci=F3n no=20
har=E1 falta que hagas nada, en caso <BR>contrario puedes tu si lo =
deseas indicar=20
la clave primaria de la tabla, pero <BR>much=EDsimo cuidado, pues como =
no sepas=20
muy bien lo que est=E1s haciendo es <BR>posible que en operaci=F3n de =
edici=F3n y=20
borrado tus operaciones afecten a m=E1s <BR>de un fila sin que te des=20
cuenta.<BR><BR>Yo siempre pongo el ejemplo de las lineas de factura, =
normalmente=20
cualquier <BR>Clippero utiliza el campo n=FAmero de factura en la tabla =
de lineas=20
de <BR>facturaci=F3n para conocer todas las lineas de una factura. Sin =
embargo es=20
<BR>posible que el usuario haya introducido dos lineas exactamente =
iguales, es=20
<BR>decir, en vez de cambiar la cantidad de un art=EDculo ha vuelto a =
introducir=20
<BR>el art=EDculo de nuevo. En SQL ello implicar=EDa que una =
modificaci=F3n sobre esa=20
<BR>linea afectar=EDa tambi=E9n a la nueva.<BR><BR>Si se intentase =
introducir una=20
clave primaria en el campo 'Factura' sobre la <BR>tabla de lineas de =
facturaci=F3n=20
el motor de SQL te dar=EDa un error ya que hay <BR>muchas lineas con el =
mismo=20
n=FAmero de factura lo cual no es posible. La <BR>soluci=F3n ha este =
problema es=20
facil, simplemente a=F1adele un nuevo campo de <BR>nombre 'linea' y haz =
que la=20
clave primar=EDa sea la conjunci=F3n de los dos <BR>campos: 'Factura' y=20
'Linea'.<BR><BR>Un saludo,<BR></FONT></EM></DIV>
<DIV>Despu=E9s de ver tu ejemplo compruebo que al driver ODBC de =
Firebird no le=20
gusta como nombre de tabla 'employeE' para obtener su primary Key, sin =
embargo=20
con 'EMPLOYEE' va perfectamente. Te recomiendo que utilices el propio =
IbExpert=20
para construir las consultas ya que las construcciones WHERE Tabla1, =
Tabla2=20
deben de sustituirse por operaciones de JOIN que aportan m=E1s =
funcionalidad y son=20
m=E1s claras. En tu caso podr=EDa ser algo as=ED:</DIV>
<DIV>Â</DIV>
<DIV>SELECT EMPLOYEE.*, DEPARTMENT.PHONE_NO<BR>FROM =
EMPLOYEE<BR>ÂÂ=20
LEFT OUTER JOIN DEPARTMENT ON (EMPLOYEE.DEPT_NO =3D =
DEPARTMENT.DEPT_NO)</DIV>
<DIV>Â</DIV>
<DIV>Â</DIV>
<DIV>Por cierto, el proceso de mostar el dialogo del Avi y el =
bucle que=20
tiene hacenÂinnecesariamente lento las consultas SQL, por lo menos =
en mi=20
m=E1quina.</DIV>
<DIV><BR>Un saludo, </DIV></BODY></HTML>
------=_NextPart_001_0090_01C52950.9CD03360--
------=_NextPart_000_008F_01C52950.9CD03360
Content-Type: image/jpeg;
name="Image1.jpg"
Content-Transfer-Encoding: base64
Content-ID: <008a01c52948$3b04c680$0e00000a@ozlan.local>
/9j/4AAQSkZJRgABAgEAYABgAAD/wAARCADQAnIDAREAAhEBAxEB/9sAhAAJ BgcIBwYJCAgICwoJ
Cw4YEA4NDQ4eFRYRGCMfJSUjHyIiJyw4MCcqNSoiIjFDMjU6PD9APyYvRUpF PUo4Pj89AQoLCw4M
Dh0QEB09KCIoKD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09
PT3/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMF BQQEAAABfQECAwAE
EQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkq NDU2Nzg5OkNERUZH
SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1
tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEA AwEBAQEBAQEBAQAA
AAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFR B2FxEyIygQgUQpGh
scEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlq
c3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrC w8TFxsfIycrS09TV
1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AM3xF4sufEmo SzSSObESf6Pbtwqq
M7SVyRuwTk89TjjAr7TBYSnhqaSXvW1f9dD57F1qlWT10KcU8aj/AI9YD/2z Fd1rnBzSJDexgf8A
Htb/APfsUuRd2F5DDfx/8+sH/fsU+Rd2P3g+3xf8+sH/AH7FPk82P3g+3xf8 +sH/AH7FHJ5sPeD7
fF/z6wf9+xRyebD3g+3xf8+sH/fsUcnmw94Pt8X/AD6wf9+xRyebD3g+3xf8 +sH/AH7FHJ5sPeD7
fF/z6wf9+xRyebD3g+3xf8+sH/fsUcnmw94Pt8X/AD6wf9+xRyebD3g+3xf8 +sH/AH7FHJ5sPeD7
fF/z6wf9+xRyebD3g+3xf8+sH/fsUcnmw94Pt8X/AD6wf9+xRyebD3g+3xf8 +sH/AH7FHJ5sPeD7
fF/z6wf9+xRyebD3g+3xf8+sH/fsUcnmw94Pt8X/AD6wf9+xRyebD3g+3xf8 +sH/AH7FHJ5sPeD7
fF/z6wf9+xRyebD3g+3xf8+sH/fsUcnmw94Pt8X/AD6wf9+xRyebD3g+3xf8 +sH/AH7FHJ5sPeD7
fF/z6wf9+xRyebD3g/tCL/n1t/8Av2KXL5sPeD+0Iv8An1t/+/Yo5fNh7wf2 hF/z62//AH7FHL5s
PeD+0Iv+fW3/AO/Yo5fNh7wf2hF/z62//fsUcvmw94P7Qi/59bf/AL9ijl82 HvB/aEX/AD62/wD3
7FHL5sPeD+0Iv+fW3/79ijl82HvB/aEX/Prb/wDfsUcvmw94P7Qi/wCfW3/7 9ijl82HvB/aEX/Pr
b/8AfsUcvmw94P7Qi/59bf8A79ijl82HvB/aEX/Prb/9+xRy+bD3g/tCL/n1 t/8Av2KOXzYe8H9o
Rf8APrb/APfsUcvmw94P7Qi/59bf/v2KOXzYe8H9oRf8+tv/AN+xRy+bD3g/ tCL/AJ9bf/v2KOXz
Ye8H9oRf8+tv/wB+xRy+bD3g/tCL/n1t/wDv2KOXzYe8H9oRf8+tv/37FHL5 sPeD+0Iv+fW3/wC/
Yo5fNh7wf2hF/wA+tv8A9+xRy+bD3hDqEf8Az62//fsUcq7sPeD+0I/+fW3/ AO/Yo5V3Ye8H9oR/
8+tv/wB+xRyruw94P7Qj/wCfW3/79ijlXdh7wf2hH/z62/8A37FHKu7D3g/t CP8A59bf/v2KOVd2
HvB/aEf/AD62/wD37FHKu7D3g/tCP/n1t/8Av2KOVd2HvB/aEf8Az62//fsU cq7sPeD+0I/+fW3/
AO/Yo5V3Ye8H9oR/8+tv/wB+xRyruw94P7Qj/wCfW3/79ijlXdh7wf2hH/z6 2/8A37FHKu7D3g/t
CP8A59bf/v2KOVd2HvB/aEf/AD62/wD37FHKu7D3g/tCP/n1t/8Av2KOVd2H vB/aEf8Az62//fsU
cq7sPeD+0I/+fW3/AO/Yo5V3Ye8H9oR/8+tv/wB+xRyruw94P7Qj/wCfW3/7 9ijlXdh7wf2hH/z6
2/8A37FHKu7D3g/tCP8A59bf/v2KOVd2HvB/aEf/AD62/wD37FHKu7D3g/tC P/n1t/8Av2KOVd2H
vGjo1rNrLyC3trSNIgN8skfyqTnA4BJJweAOxrjxeLo4OKlUb1OrDYSvip8t Mvv4ekU83Wkj6wTf
/G68z/WDB/3v6+Z6iyHHPt96In0Fu95pA/7Yzf8Axql/rDgv733f8Ef+r+P8 vvRm6gb7w+Uv7K6g
4YIZrMsu1vvBWDKpIO3OCCDj2rsw+NweaQcEr26P8znrYDF4Cac3a5QXxdZb R5sU3mY+faBjPfHP
SlKhro0dUZ6Gdo3lDyfPDGLI3hCA23vjPfFeo0+XTc8itbn12PTV8A2txq9i 9nczNolzbGdrhiN6
gY4ztwCcjqPX0rxXmk4UpKaXOna3T8/60On6jGU4uL91q5xz2DaleXJ0Gzvb qzjfEbeWXfb2Zto4
zgkDFenTr8tOLrtRb87fmck6P7xxpJtIk0HR/tmvJYahb3scSZNwIIGaWMY4 O0KT1Kjp3oxGI9nR
dSm1fpd6P8R0aXNU5ZJ+ZoSeHbEeE9a1lXu1ksr/AOzQxyKEJXeigupGQcP0 4xXIsdU9vTptK0o3
f47HT9Vj7Ock9mYVtpGp3cHn22nXU0P/AD0jgZl/MCvQlXpQfLKST9TjjTnJ XSbGWenXt8sjWdnP
cCIAuYYi+zPTOBx0P5VU6tOnbnklfuxRhKfwq5I2j6mtz9mOm3YuNnmeUYG3 bf72MZx71Pt6Tjzc
ytfuh+yne1ncpVsQd1pGh+ENW07Vr+E65HDpcPnSiRocuuGPy4B5wp646ivC r4zG4eUYzUfeem/+
Z6dLDYeqm4t6f12IdE0Twxq8GtX6DWIrDTLVZmEjRea5xIWAABGMIuORyTTr 4zGUOSMlG8n526eY
UsNh6t3Fuy/rsRXnhjTb7w7Lrfh25uZI7Y/6Tb3YUSIMZJyOOB/XnjFbU8bV hWVHExSb2a2Mp4aE
qbnRd7bnOwaPqlzbC5g027ltzkiVIGZTjryBivQlXoxlyykk/VHIqU5K6Tsa fh3wrda7pmp30TOq
2UZZEWEuZ32k7Fx34Hr94VzYrHQw04wfX8F3N6GGlWTa6GXb6TqV1LNFb6fd TSQNtlSOFmMZ54YA
cHg9fSuqVelBJykkntqYKnOTaSehveEfCkeqSam+qtc20WnRh5Yo4/3pyCcA EHsp4xzxXBjcc6EY
+ys+b7jpw2G9rJqeljI11dDV7f8AsR750aPdL9rCgo2eF+Xv69uRzXThpYiV /bpLtYzrRoxt7N3I
bnR9Ttbf7RcaddwwcfvJIGVfzIxWsa9KcuWMk36oydKcVdp2IXsrtLNLx7WZ bWRtqTGMhGPPAboT
wfyNWqkHJwTV106i5JKPNbQsf2Jq32r7L/Zd59o2eZ5X2dt+3ON2MZxnjNZ/ WKPLzc6tfe6K9lUv
y8rv6DJdJ1KGSGOXT7pJJ8+UrQsDJjrtGOfwqlXpSTaktN9ROnNNJp6iXul6 hYKrXlhc2yscKZoW
QE/iKIVqdR2hJP0YSpzh8SsLcaRqdtb/AGi4066hg4/eSQMq8+5GKUa9KcuW Mk36g6c4q7TsU62I
Lg0jUzafaxp10bbbu87yG2Y9c4xisfb0ubk5lftfUv2c7c1nYS00rUb2EzWl hc3EQbaXihZlDccZ
A68j86c61Km7Tkk/NhGnOSvFNkq6FrDFwuk3pMbbHxbv8rYBweODgj8xU/Wa Ct76180P2NT+V/cM
j0bVJbiW2j027eeLHmRLAxZM9MjGRTdeioqTkrPzQlSqN2UXcjXTr1r37Etn cG7/AOeAiPmdM/dx
npzVe1pqHPzK3e+guSXNy21HXelahZRCW7sLm3jLbQ8sLKC3pkjrwaUK1Ko7 Qkm/JjlTnFXkminW
pAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUABxQAcUWAOKLAHF FgDiiwBxRYA4osAc
UWAOKLAHFFgDiiwBxRYA4osAcUWAOKLAHFFgDiiwBxRYA4osAcUWAOKLAHFF gDiiwBxRYDrvA0pi
07UWBwftFv8A+gTV8pxK7Rper/Q+m4ejzVKi/u/qdmumQ6tpHm6dKxv4eZYm P3/p/SvlPZqpC8N0
fSOvKhWtVXuvZlaHR4bLSJdQ12SSLepWCBeHz2OPX2/OoVNQg51fkayxEqtZ UsOr23fQ4LxCc+GL
49/tlt/6BPXvcL615/4f1R5nEWip+rPN5P8AWN9TX00t2eBHZHU6ZGWiRVBZ jgADqa9dq254tZ3k
e1adYwW/huPwbdXpj1K+s5JdmR+7BP3fp1+uGr46vU9riHiYxvGLX9f15HtU Yezoqk3aTTMbwZo0
1ho+qX5tb6fUILkQiyt7poNzLt+8VIyMsc5yMA8GuzMq6qThTTXK1e7V9/8A hjnwNJwjKTvdO1jY
1Lz4vi9pTIHSGaxKswyBIQJSQfXGEOPpXJRtLLqifSS/Q6ammKg11TMO/jaT wF4zVFLN/b8rYAyc
C4jJP5A1tT/3nD/4F+pM/wCHV9f0R1WrulrdaLcafb65PaxoBDHpRj+zsD0E gJGRjueB2INcMFKX
Op8t+vNe/wAjduKUeW9vIwNC1fP/AAnusWFrJZGOBZoopkAZXWNySwBIzvBP WuzFUpxp0KdR31f3
afoYUJwlUqSh5ffqcb4ck8TXWqzS6Rd3U+om3KvLJKJH8vI7yZ74r28TQwdK jy1VaN/x+R5tKtXq
VLw1dvwMBYsKAOQBxzXoqNkcjld3Z23gldvg7xt/2Dz/AOi5a8HNlarR9X+h 6mXO8Z/L9R/gKCWb
wr4yhhjaWWWx2oiDczMUlAAA6mjN7Rq0W+7/AEDLndT+X6ljS7GTwz4C1+bV A1pcapEbe3ik4ZiU
YDA65+c59AuayxdSOLxVOFF35XuvX/gF4aDoUZTqK1zqPB2nf2VZaCLeG8uV u4GkmmN0whtwV3f6
vO0ksQBxnqc+vn4+r7WrU5rLldttXrbc6sLBQpxtrdGP4cXUAnxAtLXz47gP MbSNGKlXJlCsvoTh
Ofp7VvinF0sPOXbX5W/4JnQ0q1Yry/Ep+BdLmt9F1XVWg1G71JLryzaR3ckL SPkElyCCeXJO7PQ8
V0ZlOKnCjGyja97X37f8AywalJSqSvzXtY1fF7eI7Lxm19oNrJLGlhH5wCbl kO+TgjuQAOnI/Guf
A/VqmHdLEO3vafca4n2sKinSV9NSSaw0ttU8M6zeacmnX13csktuwABbY7Bi PXcF56/MM80vbVYw
q0IS5opaP7r/ACtf9A9nCThVkuV32/rzJtIGrp4j8Tya+z/2KUfHnE+SIwfl 25+XGzO7HfrWVRUV
h6TpfxL9N/6vsaRdSVacZfDY5qTTL/WfhT4ehsbV550vS8iJ1UHzRk+2WH55 6V3qrClmUpVHZcv6
I5nBywnLDXX9Tsl/5KvIf+oGv/o9q8pf7i/+vi/Jna/46/wv80cl8NdQv9VG t30l19o1t7XfZ/aJ
CwQtuJCgn5V3bMge1ejmGHhRpUuVWi9/w/4Jy4as6lWak9VsQeHo9eXxHpS+ JmvGsjeOy/bSSvnb
DtxnpyRgDjrjvXRXhhlh5vC25uXp2vr/AMH8TCnUrOrFVlpfr3Op1LUF0nU9 Ylu9N8SX1pLGfNVh
E9oE4GUBYY46jrjJI4yPJpUpVYQUHFO+mtpXO+c4wbcr2t20PJdBjiOrad9u CCDz4/PDn5du4bs+
2M19dWU/YS5fi5X99jwIOHtVfa/4Hsmr3cmmeJBdrZeIruMQECK08trQqASf lLDDe/U9BkcV8bSh
7Sk4+6nfduzPoZy5ZJ67dFocpYanJa/DbxJf6YHs/M1NhABhWijd41GMHghW 7Hg16Vei5YyjTrav
lV/xOSlOMaNSdPa7t9yI9G1G+s/hZrl7FdTfbHvQpnaRmk+cxITuJznBOD24 q8Xh6f1+nSt7ttvm
ycPWm8POo3rd/kieA6rcfDKF9FmuJNQkvCb6SGR2uGG5v4gd2f8AV/8AAfap qUqMMw5KqtC2l9tv
87/McKs5YXnhrL+v0Nu8Y/8ACdeEEuPKOpC0mN3sIyD5fHvjPmY+hrkg/wDZ q6h8F1b7/wDI2kv3
tNy+L/gHm3i/UL7UvEWpi6uppIobyWOKIyMY0CsUGFzgHA6/Wvfy3DU4UIzS 1a3PNxtabqODeiMX
Ya9PlOG4bDRyhcNho5QuGw0coXDYaOULhsNHKFw2GjlC4bDRyhcNho5QuGw0 coXDYaOULhsNHKFw
2GjlC4bDRyhcNho5QuGw0coXDYaOULhsNHKFw2GjlC4bDRyhcNh9KOULhsPp RyhcNh9KOULhsPpR
yhcNh9KOULhsPpRyhcNh9KOULhsPpRyhcNh9KOULhsPpRyhcNh9KOULhsPpR yhcNh9KOULhsPpRy
hcNh9KOULhsPpRyhcNh9KOULhsPpRyhcNh9KOULhsPpRyhcNh9KOULhsPpRy hcNh9KOULhsPpRyh
c6XwufK0jUD63Vv/AOgTV8hxTpCl6v8AQ+s4Y96rU/w/qd7oVtDo1oNcv5Su 5cQRK3L59f8AD8a+
VppUo+1me9iZyxE/q9NerE1mCLxfpwvrNyl9aoQ9sz8Y9v8AHv3qKqWKhzQ3 XQvDyll9T2dRe7J7
nm2s/P4avx1xeW3/AKBPXu8J615/4f1RxcTe7Gn6s86lT94/1NfVSjqz5yL0 R1Ol3Bt44ZFkKSLh
lZTggjuDXqz5Xozx6qlz3RqR6nMbv7Y19O11kfv3nZnHphiciueNCjGLhGKs +hnOpWlJSbd0SJqt
0hlZNTvFebHmuLt90mOm5s5P40vqtBxUHFWWw/b11JyT1Y19Wu2uEnbUrszR qVjkNy5aMEYO05+X
8KpYWgouKirPcPbV2023oRpfypDNCl9cLHOxaYC4b96Scktz82ST1p/V6Nku VabeQe2rXbvvuSRa
tdwQiCDU7uCIdEhuXRfyBFKphqFWXNOKbCnWr01aLdiIXsiwTwpeTxx3AImW Odl80c5DYPzDk9fW
nOhSmkpRWm3kEKtaDcovVhBevbMzW9zJAzKVLRSFCQeoyOaupThVXLNXREHU pvmjoyFXhVQqlQAM
ADtVqyVkS1Ju7JVvHS3mt47uaKGcbZUimZBIMEYbBGRgng+tZ1KNOrbnV7bF 06lWlfkdrj7bUp7R
XW0v7i1DkFvs87R7sZxnaRnqaVWhSrW9pFOw6dSrSd4Owy4u2upFkurqW5kU EB55mkYD6sSaKVCl
R+CKQVKtar8buTRavdwRxxQ6ldxRRklI47l1VT64BxUzw1CpLmlFNjhWrQjy xbSGxancRTyXEeoX
KXEgIeZbhhI2fVs57Dv2pvD0XD2biuXsHta3Pz31Eg1Ge2Ev2e/uYTM26Vo7 hlaQ5JyxByeSevrS
lhqMoqMoppbAq1dSck9WTDXNQD7xq98G27Qftb5A9BzxU/U8N/IvuK+sYj+Z lWe5+0Tefc3ElxNj
b5k0pkfHpliTjmtaVGnRVoJIipUq1fjdyW61S5vIvKutRup4eP3Uty7Jwcj5 Scdfas44WhGXNGCT
Kdeu48rk7BBqdxbwtDb39zBExyyQzsgY+4BGaupQo1XecU2TTqVqStB2F/ta 8+1Pdf2pe/aXQRmb
7XJv2A52hs5Ayc4HFZ/VMPyuPIrNl/WMRdS5tUQWtwtm0bW0zQvGMIyOQy8Y 4PWt3CEo8jV0Y3qK
XOtyW51Ge7IN3f3Nzg5AnuHkC/TcTis6WHo0XeEUjSpWrVFabuh8+r3lxGYp tUvJIiMGNrpyhHpt
zipWEw6lzKCuV9YxHLy8zsVfNi/vD866Tn5ZFsaxeiFYV1S8SFRtEaXTqmPT aDiuaWEw85c0oK5v
GvXhHlUnYgN232Q2gupltSwdoFmYRswIIJUHB+6OvpWkqNKU1NpXWzJjUqxi 4p6MDeObU2n2uYWp
cO0CzMI2YEEEqDg/dHX0olRpzmpyWq6ijUqwi4xejH22oz2e/wCyXs9sX4Yw TNGT+KkUVaNKsrVE
mFOdWk7wdhsd9LFdNdpeTLdN1uBM3mnjH3856cdaX1eioez5Vy9hurWc+dt3 IvNQszNIXd2LMzuW
ZmJySSeSSSa0hCNOKjHRIibnUlzS3DzYvUVRPLIPNi9RQHLIPNi9RQHLIPNi 9RQHLIPNi9RQHLIP
Ni9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQH LIPNi9RQHLIPNi9R
QHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIPNi9RQHLIQy xd2H50w5ZB5sP95f
zouHLIPNh/vL+dFw5ZB5sP8AeX86LhyyDzYf7y/nRcOWQebD/eX86LhyyDzY f7y/nRcOWQebD/eX
86LhyyDzYf7y/nRcOWQebD/eX86LhyyDzYf7y/nRcOWQebD/AHl/Oi4csg82 H+8v50XDlkHmw/3l
/Oi4csg82H+8v50XDlkHmw/3l/Oi4csg82H+8v50XDlkHmw/3l/Oi4csg82H +8v50XDlkHmw/wB5
fzouHLIPNh/vL+dFw5ZB5sP95fzouHLIPNh/vL+dFw5ZB5sP94fnRcOWRp6T fWq2l1ZyXUdsZZI5
UlkDFMoHGDtBIzv6gHpXz2fZdVx9KHst4v8AM9/I8fDAVZSqrSSsX2voGRI2 8Q6eyJnap+0EL9P3
VfKvh7MGrcq+9H1Kz/AptpP7hgu4E3eX4h09NylW2i4GQeo/1XSo/wBXMw6J fejT/WHAvdN/Iy9V
u7SPSprOK9ivJZ545S0KuEQIrgD51UknzD24x78fScPZRXwE5TrWV1Y8LO80 pY/kVJOyOClP71/9
416sn7zPPivdR7n8MtI0y88PSSXWnWs7ifAaWFWIGxOMke5rxc5xFaniEoSa XL0b7svBQhODclf3
jrv+Ee0T/oDWH/gMn+FeN9bxH/Px/ezt9jS/lX3B/wAI9on/AEBrD/wGT/Cj 63iP+fj+9h7Gn/Kv
uD/hHtE/6A1h/wCAyf4UfW8R/wA/H97D2NP+VfcH/CPaJ/0BrD/wGT/Cj63i P+fj+9h7Gl/KvuD/
AIR7RP8AoDWH/gMn+FH1vEf8/H97D2NL+VfcH/CPaJ/0BrD/AMBk/wAKPreI /wCfj+9h7Gl/KvuD
/hHtE/6A1h/4DJ/hR9bxH/Px/ew9jS/lX3B/wj2if9Aaw/8AAZP8KPreI/5+ P72HsaX8q+4P+Ee0
T/oDWH/gMn+FH1vEf8/H97D2NL+VfcH/AAj2if8AQGsP/AZP8KPreI/5+P72 HsaX8q+4P+Ee0T/o
DWH/AIDJ/hR9bxH/AD8f3sPY0v5V9wf8I9on/QGsP/AZP8KPreI/5+P72Hsa X8q+4P8AhHtE/wCg
NYf+Ayf4UfW8R/z8f3sPY0v5V9wf8I9on/QGsP8AwGT/AAo+t4j/AJ+P72Hs aX8q+4P+Ee0T/oDW
H/gMn+FH1vEf8/H97D2NL+VfcH/CPaJ/0BrD/wABk/wo+t4j/n4/vYexpfyr 7g/4R7RP+gNYf+Ay
f4UfW8R/z8f3sPY0v5V9wf8ACPaJ/wBAaw/8Bk/wo+t4j/n4/vYexpfyr7g/ 4R7RP+gNYf8AgMn+
FH1vEf8APx/ew9jS/lX3B/wj2if9Aaw/8Bk/wo+t4j/n4/vYexpfyr7g/wCE e0T/AKA1h/4DJ/hR
9bxH/Px/ew9jS/lX3B/wj2if9Aaw/wDAZP8ACj63iP8An4/vYexpfyr7g/4R 7RP+gNYf+Ayf4UfW
8R/z8f3sPY0v5V9wf8I9on/QGsP/AAGT/Cj63iP+fj+9h7Gl/KvuD/hHtE/6 A1h/4DJ/hR9bxH/P
x/ew9jS/lX3B/wAI9on/AEBrD/wGT/Cj63iP+fj+9h7Gl/KvuD/hHtD/AOgN Yf8AgKn+FH1vEf8A
Px/ew9jS/lX3B/wj2h/9Aaw/8BU/wo+t4j/n4/vYexpfyr7g/wCEe0P/AKA1 h/4Cp/hR9bxH/Px/
ew9jS/lX3B/wj2h/9Aaw/wDAVP8ACj63iP8An4/vYexpfyr7g/4R7Q/+gNYf +Aqf4UfW8R/z8f3s
PY0v5V9wf8I9of8A0BrD/wABU/wo+t4j/n4/vYexpfyr7g/4R7Q/+gNYf+Aq f4UfW8R/z8f3sPY0
v5V9wf8ACPaH/wBAaw/8BU/wo+t4j/n4/vYexpfyr7g/4R7Q/wDoDWH/AICp /hR9bxH/AD8f3sPY
0v5V9wf8I9of/QGsP/AVP8KPreI/5+P72HsaX8q+4P8AhHtD/wCgNYf+Aqf4 UfW8R/z8f3sPY0v5
V9wf8I9of/QGsP8AwFT/AAo+t4j/AJ+P72HsaX8q+4P+Ee0P/oDWH/gKn+FH 1vEf8/H97D2NL+Vf
cH/CPaH/ANAaw/8AAVP8KPreI/5+P72HsaX8q+4P+Ee0P/oDWH/gKn+FH1vE f8/H97D2NL+VfcH/
AAj2h/8AQGsP/AVP8KPreI/5+P72HsaX8q+4P+Ee0P8A6A1h/wCAqf4UfW8R /wA/H97D2NL+VfcH
/CPaH/0BrD/wFT/Cj63iP+fj+9h7Gl/KvuD/AIR7Q/8AoDWH/gKn+FH1vEf8 /H97D2NL+VfcH/CP
aH/0BrD/AMBU/wAKPreI/wCfj+9h7Gl/KvuD/hHtD/6A1h/4Cp/hR9bxH/Px /ew9jS/lX3B/wj2h
/wDQGsP/AAFT/Cj63iP+fj+9h7Gl/KvuD/hHtD/6A1h/4Cp/hR9bxH/Px/ew 9jS/lX3B/wAI9of/
AEBrD/wFT/Cj63iP+fj+9h7Gn/KvuD/hHtD/AOgNYf8AgKn+FH1vEf8APx/e w9jT/lX3B/wj2h/9
Aaw/8BU/wo+t4j/n4/vYexp/yr7g/wCEe0P/AKA1h/4Cp/hR9bxH/Px/ew9j T/lX3B/wj2h/9Aaw
/wDAVP8ACj63iP8An4/vYexp/wAq+4P+Ee0P/oDWH/gKn+FH1vEf8/H97D2N P+VfcH/CPaH/ANAa
w/8AAVP8KPreI/5+P72Hsaf8q+4P+Ee0P/oDWH/gKn+FH1vEf8/H97D2NP8A lX3B/wAI9of/AEBr
D/wFT/Cj63iP+fj+9h7Gn/KvuD/hHtD/AOgNYf8AgKn+FH1vEf8APx/ew9jT /lX3B/wj2h/9Aaw/
8BU/wo+t4j/n4/vYexp/yr7g/wCEe0P/AKA1h/4Cp/hR9bxH/Px/ew9jT/lX 3B/wj2h/9Aaw/wDA
VP8ACj63iP8An4/vYexp/wAq+4P+Ee0P/oDWH/gKn+FH1vEf8/H97D2NP+Vf cH/CPaH/ANAaw/8A
AVP8KPreI/5+P72Hsaf8q+4P+Ee0P/oDWH/gKn+FH1vEf8/H97D2NP8AlX3B /wAI9of/AEBrD/wF
T/Cj63iP+fj+9h7Gn/KvuD/hHtD/AOgNYf8AgKn+FH1vEf8APx/ew9jT/lX3 B/wj2h/9Aaw/8BU/
wo+t4j/n4/vYexp/yr7g/wCEe0P/AKA1h/4Cp/hR9bxH/Px/ew9jT/lX3B/w j2h/9Aaw/wDAVP8A
Cj63iP8An4/vYexp/wAq+4P+Ee0P/oDWH/gKn+FH1vEf8/H97D2NP+VfcH/C PaH/ANAaw/8AAVP8
KPreI/5+P72Hsaf8q+4P+Ee0P/oDWH/gKn+FH1vEf8/H97D2NP8AlX3B/wAI 9of/AEBrD/wFT/Cj
63iP+fj+9h7Gl/KvuD/hHtD/AOgNYf8AgKn+FH1vEf8APx/ew9jS/lX3B/wj 2h/9Aaw/8BU/wo+t
4j/n4/vYexpfyr7jO8R6Do8Xh7VJYtJsUkS0lZWW3QFSEOCDjrXThMViJYim nN25l1fczq0qapya
itn0Pm5yd7c96+pe5yrY+gfhR/yLcv8A18f+00rwM8/3lf4f1Zpgf4cv8TOz rwzuCgApXQwpiCgA
oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKA CgAoAKACgAoAKACg
AoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAK ACgAoAKACgAoAKAC
gAoAKACgAoAKAMzxR/yLWrf9ec3/AKAa6sH/ALzT/wAS/Mzrfw5ejPl1vvH6 19i9zhWx9A/Cf/kW
pf8Ar4/9ppXgZ7/vK/w/qzTAfw5f4mdpXhncFAFYSCVny2Fb5U5xmvz3MsbL EYpzg3aPw2/P5/5H
XGHLHUoeHb2d2vNOvZN93ZSY3nrLE3KP+WQfdTX3eFxEcXhoV49Vr5Nbr9V5 NHK1ytpmxW4goAKA
GTiVoZBA6JKVIRnUsqtjgkAjIz2yPqKAOZt9W1i1OtXep3dlLZaOzCZLaxdJ JVECS5UtKQD8+MEH
OOozw7IC5LeaxpphutSkspbWWaOFoLeF1eFpHCLh2YiQBmAPypkZbjG0mgGF 4o8W366TDeaXa3dr
bzRzyw3kghKTKLWaRCF3FhkqjfMo6YOOhaQG6/ie3hJW5sL23Z1DWyyooa6B dEG0bsqS0kYxJsI3
jOMNhWAhn1TWbvU7KytLdNKaaGeV/wC0IVnYiNogNoimwAfNPU5+XpRoBat9 Yu/IuY206W9vLO4F
tOtoUUMdiuHXzHXAKuuRkkEkfMBuJYCqniWa41rTrS10y4ltrmGczP8Auw0M kcqRsDlxwhLBsA5y
u3cM0WANQ8SzW9vIj6ZcWF0VDx/bPLZBH5iJJKfLdvlj8xWYErkdCOSCwDNP 8Q4iuJ5NY0rWIY9i
Y0xdrrI7BY0IMjg7ycAllAxzkElSwBqnim4tbRvK0e7W+S4tUe1lMRYRyy7A +RJt5w6j5shsEgLz
RYCzrWsXdvZH7Navb3TNaKHuot8amaYRlflYbmXkkBscryc0JAMl1m60ecWu sNFdSzRmS3ezhMe8
744/LKs7YJaWPDbsHcc7QuSWuAy/1+Y2xRLa40+9jurISQziNm8qW4VM5VmX DASDrkYzxwSWAmtv
EsdwIHTTL0QXak2Ux8rbdnYXUKN+VLIpI3hRxg4PFFgKeh+LLrUdMspG0K9l vZLWK4mjgaEKFdfl
cbpR8rFXwM7htO4DIyNAXH1JtamtrXSbx4YJrVbyS7jQb0jc/ugquCMvhzkg 4CEEAspBsBd0W+lv
IZ47lUW8tJmgnCAhdwAKsOuAyMj4ycbsEkg0mBoUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAU
AFABQBmeKP8AkWtW/wCvOb/0A11YP/eaf+JfmZ1v4cvRny633j9a+xe5wrY+ gfhP/wAi1L/18f8A
tNK8DPP95X+H9WaYD+HL/EztK8M7iC9lMcQVT88h2ivIzfFfV8M0t5af5m1K HNI8k+KGkXl5438O
NazMqFFSMgkeW6yjLD0Pzr+VcXD1alHA4hzV+VNvzTX/AAPxLqxbmjvddcab qNnricRIfIuv+uLH
7x/3WwfoWrk4bxfLUlhZbT1X+Jf5rT1sFaGnN2Olr685goAKACgDMXRYHXWY rk+fb6rIWljwVwph
SIrkHPITOeOvtmi4EI0nULiSKLUtSiurKGRJURLXy5HZGDIZH3EHBAY7VTJA 6LlS7gZF54Mu7zSr
bSpNZRbKzhkgtkS0+bY0EkIMhLfMwDg5XaD83HI2lwLt14evtSlW41LUrd7m 3UC1NvaNGisJY5cu
pkYsN0MfAK8bhnJBBcB8uk65Je2t/wD2tp4u4I5oc/2e+xkkMZ+752cgx9c9 +nGaLoCG/wDCf2yN
ZJJrS4unkaW4F7Z+fbyuyou4RbhtKqiqpycLuzuLFqLgMtvB7WWnW1pZ6m8L QrdQmZYQrCGeTe2w
IVCONqhWA2jB+TkAFwI9O8HSafqB1G1udPsroW7wKLHTEhjOXjYFl3Et9wgj d0b5dhyxLgT6j4Yu
taUnWL60uHSPZCsVmUj/ANZHIfMVpG3gtCgwCvG4dwQXsAWnhJLexuYVOn28 0skMqGx09beMNE4k
Qsu4s3zDn5hxwNpySXAu6ppOoahaNE2pRI/+iyJ/ouUWWKXzGbG7JDYUbd3G 3qcmi4FXUPDMusW8
n9sXdvc3IUJDstSkKKJEkw0Zdi4Zo03ZblVwNpJJL2AZZ+Ekt7SWIHT7d5Li 2mP2DT1t0IhlEgBG
4kk4IyWwOMAc7i4DPD/g230W8tZI000R2ilYnh01Y7lxtKjzJSx3HBySqqSf QZUjdwKreBf9RmTS
rv7Pbx2kP2/S/P2Qx52D/WD5/mbcwwG+XCrjl3A02tf7AvYLyOKWay+xx2k/ kwb3TyyTEyxxqODv
kDBVOMpgBQxC3Au6DaTwx3d1dJ5Vzf3BuJIsg+WNqoi8ZGQiJuwSN27Bxikw NOgAoAKACgAoAKAC
gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKA
CgAoAKACgAoAKACgAoAKACgAoAKAMzxR/wAi1q3/AF5zf+gGurB/7zT/AMS/ Mzrfw5ejPl1vvH61
9i9zhWx9A/Cf/kWpf+vj/wBppXgZ7/vK/wAP6s0wH8OX+JnaV4Z3GVJMJrh5 QflT5U+vc18Bm2K+
s13bZaI9OjT5Y2Oa8S6jolvrugrqWoR293DO0sMbIx3hlKckDCjcQcnH3TRg KeKlh66owbjKNn8m
pfPRdO4qnIpq71Ojljjurea1mQOkikFT0IIwR+IrzKU5U5KcHZp3XqayivkQ +Ert2s5dMuHL3OnM
Iix6yR4zG/4r19wa/TqNeOKoxxEftL7n1X3/AIWPKlFwk4vobtaEhQAUAFAB QAUAFABQAUAFABQA
UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFA BQAUAFABQAUAFABQ
AUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQBmeKP+Ra1b/rz
m/8AQDXVg/8Aeaf+JfmZ1v4cvRny633j9a+xe5wrY+gvhP8A8i1L/wBfH/tN K8DPP95X+H9WaYH+
HL/EzsnBZGUHBIxn0rwJx54uKdro707O5yF1Nq1lO1vHpFzcIv3ZYghVvzbN fL/6u1Za88fvf+R3
/W4LozF1HTZNT1S21O78L30l1bpsRvkwVyTgjdg4JJHcV6WEy/H4KnKnRqxS l6/hoZzrUpvmaZrf
2lrW7d/YN9nr91P/AIqvN/1bq/zx+9/5Gn1uG1mHh+HWZ/FzX82nSWVktn5L mZl3Stu3DgE9OfzN
fQ5fg/qOFdKUlJuV9Nlpb8TkrVFVndLodpXUZBQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQA
UAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBmeKP+Ra1b/r zm/9ANdWD/3mn/iX
5mdb+HL0Z8ut94/WvsXucK2PoL4T/wDItS/9fH/tNK8DPf8AeV/h/VmmA/hy /wATOzrwzuCgAoAK
ACgAoAKAK2qX0WmaZd6hOrtFawvM4QAsVVSTjPfAoAq2a64tyj3k2nvbvndD DE6tDxkYcsRJg4H3
UznPGNpNAMzTvEVxD4Z0vUb+xu7iJ9Oiubu9j8oJHlAzsV3BuOThVPtk8U7a gXW8SWsf2maW1u00
+380NfeWGizFu8wYUlxgo4yVAJXAJyuSwE0eryGyvJ5tJ1CCW2jMn2dkR3lG CQEKMysTgjbuz0yA
CCVYA8R6p/Y+mC9LxIi3EEcjzHCojzIjMTkYwrE59qFqBmXHihLzUFtPD11p +pyizmuWjimVyzI8
QVMhsLuDuMnocHkAgu3cAutfvLq+tINKWJLa5k+zrdXMDnEuySRhsyp+QRbS P70mMgxspLAMh1jW
LnVX0SOWyjvYGlMl21s7RuqJA2BF5gKk/aAM7z9w8fN8pZbgGnaxrGsXM1pa S2VrLZqRPJLbPKsz
CaaLKqJF2DMBbBLffAz8uSWSA3dEv/7V0aw1HyvK+128c/l7t2zcobGeM4z1 pPQC5QAUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQAU
AFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBmeKP+Ra1b/rz m/8AQDXVg/8Aeaf+
JfmZ1v4cvRny633j9a+xe5wrY+gvhP8A8i1L/wBfH/tNK8DPP95X+H9WaYH+ HL/Ezs68M7goAKAC
gAoAKACgCG9tIL+yuLO5TzLe4jaKVMkblYYIyORwaAKVnaavHcp9r1WKe1jz tVLTZJJxgeY24g9c
naqZIGMDKk0A5i7+HaXWlrp73lpIPsaW32ifT1lniKRhB5TM2ETKhtuCcs5D AkEVzBY2j4ckbW5d
S+2RQu28rNBaIlycqVCySch0XIIUp1SMknacq4BpPh6fTLLUI7a6tLS4uY9s X2GyEMELANiQRFmB
fLcnPIVBjjkuBqavYf2laRweb5ey4gn3bc58uVZMfjtxntmkAS2Hmaza6j5u PIt5oPL2/e8xo2zn
28vp7+1AGcdAljs4Ft7xEura/nvYZJISyBpWlyrKGBICzMOGHIB9qdwIY/D1 9DeHU4dStxqsjSGW
R7RmgKusSkLGJAwOII+S5/i45G0uAWvh6+02VrjTdSt0ubhSLo3Fo0iMxlkl yiiRSo3TScEtxtGc
gklwNrS7GLTNMtNPgZ2itYUhQuQWKqoAzjvgUgLNABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFAGZ4o/5FrVv+vOb/wBANdWD/wB5p/4l+ZnW/hy9 GfLrfeP1r7F7nCtj
6C+E/wDyLUv/AF8f+00rwM8/3lf4f1Zpgf4cv8TOzrwzuCgAoAKACgAoAKAI b24+yWVxc+TLP5Mb
SeVCu53wM7VHcnoBQBmXXiC12sbWTzUSS0UzxqJI28+QKFBDDnaVY+gdGw2c F2ALDxFDey2n+g3c
Ntff8ed1J5ey4+UuMBWLDKKzfMq9MHBwKLAUtO8RXEPhnS9Rv7G7uIn06K5u 72PygkeUDOxXcG45
OFU+2TxRbUAXxJd/bdUhm0+WCG01GC1jnKo6sHMIwQJM5Pmkg4wFIyCwKksA +Xxhaw2P9oTWF7HY
PC81tcERlblVjaT5QHLAlEZhvC9MHB4osBoWGspd3otZLK7tHkjaWA3CqvnR qVBYAElcb04cK3zd
ODhWAhv/ABFDZS3f+g3c1tY/8fl1H5ey3+UOchmDHCMrfKrdcDJyKdgKulX2 o6j4m1OOVb22tNPm
8lEAg8mX92jfN1k3HzNwxgbQucHcCdAKWneJZbvUXhm8RaFbst/LbixeI/aC qTMgGfOHzMFBHy9+
hosBa/tnU/7G/wCEk3Wn9k/Z/tf2TyW8/wAnbuz5m/bv2/Nt24z8u7+Oi3QC laeKrqW/aP8AtLSp
5RqL2v8AZcUZF0EE5j358w9FHmH5OgPQch2Afp3iWW71F4ZvEWhW7Lfy24sX iP2gqkzIBnzh8zBQ
R8vfoaVgJ9M1jWLyOOzMtl/aE012FmFs4ijit5RESU8wlmYlcDcoAY8/Lhiy ANQ1vWNI1PTbe+Fl
Lass0t5PFG6kRK0ShwpYhArS5bLMNiFsj7oLJgbOmX0t3e6tBIqBbO6WGMqD kqYYn598ufwxSA5+
HxVfXng865ZxW58jTGup5GVjG8wiLeUgzkgN95s8Y28tuKO2tgJ7LWru7S6F hr+hazdRQmSO0s02
O5BHBbzmwD93JGAWBOcYJYDW03U31O9ka2T/AIl0cYHmvGytJKSdygHBGwDD cH5mK8FGFICFvEUK
/aZzY3Y06183zr/935S+VuD/AC7vMOGVl4TkjjI5p2AgufFUNiv/ABMdL1Cy c7THGyRytKDIkZKi
J2zhpUyOpzwDzRYB58Sxo5t5dMvYtQLII7JvKMkgYOQQwcoBiKU8sD8h9VyW Ap6v4um026gZtGvX
s/sFxdXGFjWSMxMgYYZxkKC2cZDZUqWGaLAa39q3DWX2mLRdQlzJtSL90jsm MiTDuMDthsMO6ilY
DPu/Ftpai0meO48qZZFeJIN8iyLPFAV+VuSryEEKG3Yyp4AZ2AZqnim4tbRv K0e7W+S4tUe1lMRY
Ryy7A+RJt5w6j5shsEgLzRYDW1B7+XToJLKJ4blprcvG5QskZkTzQeSuQm/o T7c4pAcrNrPiqytH
gkbT21COz0/5Z4W/4+J5fKfeyPggFWPyqPvD05qyA2v7ZutRn0+HTGit/ttn NPm6hLtC8bwqUZVc
YI3urDPDD2IKsBmPrmuW2g3GqXV/pSIl4bQE2boseLoQGRiZuRtDNjjtzxy7 K4Fq08QSzBYLfW9H
1W6uplghazjISBijuWkAlckbY2wBtyRjIzuVWA3dNXU4/MTUZrSfoUlt4mi9 cgoWbpwc7uc4wMZK
ANSv/snlwwxfaL2fIggDY3YxlmPO1BkZbB6gAFiqkAwtK1jWNchshaS2VpK2 mW17O0ts8ys0wf5V
AkXaAYz1LZ3Dpjl2SAfp1/req3ekajBF5Wk3dvbzyx7kbZuinZxk4Y4Y2/I/ D+KjRAad/rBtr02d
tp13f3CRrLIluY18tWLBSTI6g5KP0z93nGRlWAz18ZWMsVxcW1pe3Flaqsk9 2karHHG0Syh/mYFh
sfJCgsMcryuXYC74n1S50jTorm1s3upHuoISileFeRVP3mXnBwOepGeMkCVw CXW3t5oVu9JvbaCR
o0+0O0LIruQFUhZC2dzBchSM85xzRYDP8K+JJL/S9F+3Wt2kt9bxhbuSNFSe by97AKDuH3XOSoU7
eCQVyNAQaN4tLeHrO8urW7uhDZwy6heRiMJCxiWRiVLBjhWDfIp64GTwBrUD odX+2/ZI/wCz/wDX
faIN3T/V+avmdePubvf05xSA46x8S6lEZLPVvEWhaXe2iwxyxXsQMjuYI3ds iZBje7DgY4qrAamm
+KpRHq76pEgNtNObRLdTuuIklaIIoY/NLvUAgcfvI+7YpWAyLHxdqbzG21TW fD+kXEMZ8wzxMVlc
XE8R2bpUOAIVPf73bpTsB0/hjV7rWIbuS6tPsjxSRKICDuj3W8UhVs9w0jDo Og4pNWApf2zqf9jf
8JJutP7J+z/a/snkt5/k7d2fM37d+35tu3Gfl3fx0W6AWbnVr6GafTxbodQe YC0OxtjwkjMpGeke
WDDcMlV+75qCiwHOWnjO6l8PNqf/AAkHh+e7GnPdf2dFERKHERfZ/rieCOfl 6A9OodtQOg8P6v8A
b714v+Ek0XU8RlvJsI9rryPmP71+OcdO459U0A/xZq8ukRacY72yslurryZL m9UtHGvlSP8A315J
QDr3oSuBhP4uuvtNvbtrOi2tu/n7dSmiJgutghI8seaAOZXU/M3MZ6cgOwGv a63fX9vY21sLeO9u
lnkW4eNmhMUUgTzFUMCQ+5GUbsbWzuOBuVgLVvdanLJeaW09oup28cUy3It2 MLo7MBmPfkH924xv
P8JzyVABzGl+M7q/h8y68QeH9Jfy4GEF1ESzb7eKQsMzLxukYDj+HqadgOji vNY1IzXWmyWUVrFN
JCsFxC7PM0blGy6sBGCykD5XwMNznaFoBDeT+IU8QQ6fBf6asVxDPOhewkZk VHjAU4mG44k68fd6
c8GlgLVr/bf/AAklx5//ACCf3nlfc/uW+zp833vtHX8f4aNLACSXc3i+4g+2 yx2lrZwSi3VU2yM7
TKSxKluNi4wR070dAMv/AISnUZfGH9jW+jym2jk2TSMY8gKuXcfvOn761I4z hn4yMAtpcDa165ur
S2E8V9p+n26czXN8pZV5AUY3IOSepbjAGDnISAyW1y+bSre/m1TR9KtmZoxc XaMyXLB2AZB5iBVZ
UDr8z5D+i5Z2ApJ4l1maR5LnZo8W2J1W50e5nVFaJHYvMrKihWZ1OcY2HOKd kBZtNc1WTVGhu7mK
ziF48Kxy6PcAMgkKp+/LiPLqFwcdWAAJ4pWAux+I/N1mJAsUejvZz3AvJHx5 nltEC47CPEh+Y/ex
kfLgsWALTxE7ahqIvYPsljBbwTQF1bzpPMeVRlMZBYoNqAFuRn5jtUsBSl8V XkMN4tzZeRc/2iLO
3jSN7gxg26zbpFjyWIBbKpxkAbsZeiwBceKZI7aztopvO1CfzTJKulXBEIQr kNbgmQEiSPAYgYbd
n7qsWAtapfXL6Tpmo2epuCLq2hmWKFVSbfPHG4ZXDMhGWG3IKnIOSKANDxR/ yLWrf9ec3/oBrpwf
+80/8S/Mzrfw5ejPl1vvH619i9zhWx9BfCf/AJFqX/r4/wDaaV4Ge/7yv8P6 s0wP8OX+JnZ14Z3B
QAUAFABQAUAFABQBz9r4WgtNI/s+CbYPtkNzv2k/LFJGY0wT2jijjz327jkk 5dwDTfD91aNpkE1/
FLY6Vj7JGluUk4jaJfMcuQ3yMc4VcnB4HBLgYt38O0utLXT3vLSQfY0tvtE+ nrLPEUjCDymZsImV
DbcE5ZyGBIIfMFjdu9Alnurpo7xEtrq6t7ySNoSziWJojw24AKVhAxgkEk5x 8tK4Gfc+ELq60ePR
5tUi+w2tu8FpstSJEzC8KmRi5D4RzkBVycHgcUXA6GWw8zWbXUfNx5FvNB5e 373mNG2c+3l9Pf2p
AZepeH7q7bU4Ib+KKx1XP2uN7cvJzGsTeW4cBfkUYyrYOTyOA7galhYfY7vU p/N3/bbgT7duNmIo
48e/+rzn39qQBpFh/ZtpJB5vmb7iefdtxjzJWkx+G7Ge+KAMv/hH7r7F/Y/2 +L+wvL8n7P8AZz53
k4x5fm78Yx8udm7b33fPTuBPFoPkWgENzsvY7i4nguRH93zZWkKMufmT5gCM jO0EbWClS4EenaVr
GnyvHDqdk1k11LOY3sXMm2SVpCu/zcZ+YgHb+FF0BDY+Hr6zt1kXUrc6lFNc PHOLRhHsmk8x0aPz
CSN2CCGBG1e24MXAZ4c8J/2NqTXvnWg3ed+4tLP7PEvmCAfKu5sf6jJ9S56Y 5G7gXfC+g/8ACPwX
kAufPimuPMhXy9vkxhEjSPqd21Y1G48nvzQ3cCl/wiXl+Hv7Jtr7yvN077Dc v5WVmxF5aybc8OMD
nPKjac4UqX1A1tPh1iOZjqF9ZXEW3AWCzeJg2RzkytxjPGPxpaASaRYf2baS Qeb5m+4nn3bcY8yV
pMfhuxnvigDLfw/dPbX2mG/i/si9+0eZH9nPnjzizNiTft4Zzj5OmBz1p3AZ c+Hr7UbmC51LUreS
W2ZDD9mtGiXaJopWDBpGySYVAIIxk8HjBcCbV/D7ahdXdws9uRcwwRNBdWon hYRtI3zqSNw/eAjB
UgoDkjIouBT1DwjLcaPHZW+opDKLW4tGd7cvGIpyCyogYbQpVQg3EKoxhuoL gaHiPQv7Z+zndaP5
O4eTfWv2mBs4+YpuX5xjAbPAZxjngTsBl2/glLe302CO/wDksZJHX/R1XcGu 4rjGFwBjytvAA5yA
MYouBqaloP267u7kXPlvNHaiMeXkI8EryqTz8wLMARxwDyM5BcDWgEqwxid0 eUKA7IpVWbHJAJOB
ntk/U0gMK/8AD91e6xcXjX8S28v2TbELc7l8ibzRlt+Dklx90Yyvocu4E8Wg +V4rk1tLnEUlu0bW
3l9ZGMYMm7P92GNduMfLnqTkvpYCOfQJW0STT4LxElN+b1JXhLKrfafPClQw yM/L1Hrx0ouBI+l6
ndRq19qFo11byCazlt7NoxE+1lO5WkbeCrFSOOCcEHBABSsNLu9Bvb/VPskV /cX/AJayRaZaJbcq
ZGMjeZLhiS+Cc54HBo3Au/ZbTxD/AMhjw1t8j/Vf2hHBL97rt2s+OgznHbrR tsBS0zwxdaJbWkej
31pA8dnFazGazLrJ5ZYh1VZF2ktI5OS2cj3JL3A3dLsYtM0y00+BnaK1hSFC 5BYqqgDOO+BSApX2
m339pvqGm3tvbyzQpDMLm2aZSqM5XbtdMHMjZznPHTBywKVt4TitfDuraLBd v5V9D5KSOgLRKLdI
BnBG44j3duuKL63A19YsP7SsTbiXynWSOaN9u4B43V1yOMjcoyMjIzyOtJAc 3L4Ja4vobu5urJ54
7qO7NwNPH2h3WQOUMrMSE4KqBgqoQbmCkM7gXdG8PX1nFpFve6lb3NtpKgW4 htGicsImiBdjIwI2
s3AA5wc4GCNgZkPw+t4Yoot2m3A8mGOaa60tZpspEkeY2ZsIMICAyuAxJOQc U+YLHbVIGEdK1i31
HULjT9Tsoor2ZZjHPYvKysI0j+8JV4wgPTvTugJLfw5aotsZ2857e8nukbYB nzJHk2HOcgMyt2+a
NG7Ci4Boeg/2Tf3119p837Vn5fL27czzy9cnP+vx/wABz3wBu4BDpep2ur3t 1bahaLaXlwk8sMlm
zOMRohAcSADIj67TjPegCD/hH7r7F/Y/2+L+wvL8n7P9nPneTjHl+bvxjHy5 2btvfd89FwNSWw8z
WbXUfNx5FvNB5e373mNG2c+3l9Pf2pAYUPhvWB4cOgTaxZPZfYGsgyae6ybf LKBs+cRkcE8c+3UO
6vcDTjOuWaST3clvqSquFt7K08mQtkc7pJiuAM8cfXsTQCAG61fUdPefSr3T 1sZmuA85hZZCY3j2
/JIxB/eZzjHy470bAXbzSorzU4bufZJElrPbPA6BlkWRoyc57YjxjHO725Vw Kz6NdJ5UttqGLu13
pbTXEZlxC+3dHJ8wL8qCGyrfKuS3zb3cATS9Ti827j1C0OqT7Elmks2MXlpu 2osYkBHLk5LMcse2
0KAUtM8OanoiywaTqtolo/lbVu7JpXGyGOLlllQHIjB+6OpovcC6dJ1C3kli 03UorWymkeV0e18y
RGdizmN9wAySWG5XwSeq4UFwLsth5ms2uo+bjyLeaDy9v3vMaNs59vL6e/tS AuUAYyR3cPi+4n+x
SyWl1ZwRC4Vk2xsjTMQwLBud64wD17U+gFLQvBWmaPrM2qJb2hmbd5PlWqxe TuZs4xx9zy06fwMe
sjZG7gbWpQahL5baffRWzrkMs9v5yODjnAZSCMcHdjk5B4IQGdb6RqthbpHp +q26lmkknFxZmRDI
8jSMyBXUqMuRgs3AXuCWdwIZvDd3/ZA0O31RBpDWq2jpNbb5hHsCHY6soBIG clWwxJ5GFBfqBau9
J1C8nWO41KJ9OW4S4Ef2XE2UcSKvmBtuAygfcztGM5+ai4EC+DtDj1aC9g0r T4Ujt5oHhSzQCTzN
nJwOyqy4xyHPvkuwC38HaHBqF5cLpWni3ureKBrYWaBfldmJPGDklOMf8s16 8YLsCGLwfa2M89zp
ItLG4N4t1BttB5aYg8nYyqVLDDSMMFcM+eeclwHx+Hr6G8Opw6lbjVZGkMsj 2jNAVdYlIWMSBgcQ
R8lz/FxyNpcBmoaZd22lWWm21tLePJqMd1PcIURIz9qWaQkM2QOX2gbjwAT3 IBp+KP8AkWtW/wCv
Ob/0A104P/eaf+JfmZ1v4cvRny633j9a+xe5wrY+gvhP/wAi1L/18f8AtNK8 DPf95X+H9WaYH+HL
/Ezs68M7goAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAK
ACgAoAKACgAoAKACgAoAKACgAoAKACgDM8Uf8i1q3/XnN/6Aa6sH/vNP/Evz M638OXoz5db7x+tf
Yvc4VsfQXwn/AORal/6+P/aaV4Ge/wC8r/D+rNMD/Dl/iZ2deGdwUAFABQAU AFABQAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQA UAFABQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQ AUAFABQAUAFABQBm
eKP+Ra1b/rzm/wDQDXVg/wDeaf8AiX5mdb+HL0Z8ut94/WvsXucK2PoL4T/8 i1L/ANfH/tNK8DPf
95X+H9WaYH+HL/Ezs68M7goAKACgAoAKACgDP8RX0umeH9T1CBUaW1tZZkDg lSyoSM47ZFC3Awrb
xVBbrJPceIdK1aJNimDSrcmYF5EQNgSuSAXGQBnkY54LsBu6Zqgvpp7eWzuL K6hVXaCcoW2MWCtl
GZcEo4xnPy8jkZVgKUPie3llOLC9W1W6a0e7dFEayiUxAY3bmBbADKpHzckY ba7AMtPFUN5p9rew
aXqBS82CzRkjRrksjOQoZxjaqsSW2g4+UtkZLAPHiWN3FvFpl7LqAZxJZL5Q kjChCSWLhCMSxHhi
fnHo2CwBc+JY7cTu+mXpgtFBvZh5W20OwOwYb8sVRgTsDDnAyeKLAVtX8RXG yMafY3fk/wBowWzX
37ryv+PhY5FwW39dyZ29eRxg0WAmTxMgaGBbO7vLqeS7WKO3hVciCby2yWfA 6jkkA47EhaLAMl8W
2j6ZdXlvHcRxrYS3trNLB8txGigsyoWVsAsvDbN2QVJHNFgLX/CRQ+fj7Dd/ YvtH2b7d+78rzN/l
7cbt/wDrPkztxnn7vNFgILDxVDfwWlxFpeoJDfR7rR5EjXz32F/LAL5Bwrcs Ap28MQVJLAVtD8WX
Wo6ZZSNoV7LeyWsVxNHA0IUK6/K43Sj5WKvgZ3DadwGRkaA3bTU4Lz7E9sks tveW5uIpxGQm35MA
k8gkPkDH8LelIDO8T3OsWMcVxp91ZJE00EBjntXkbdJKse7cJF4AcHGO3Xnh qwGZqGvX2n6u2m3v
iDQrBo7WObzbq2ZRMzvKDtUzjAARe55PbpRYDQtr/U9WaRNLvtPVLXZHLcvb NKtw7RpJujVZBtTa
6kEs2ckcbcsbAZMvi+WXUXt21bR9FWKEFhfqZDJKJpopAjeZHlQYuDjJDAkD pTsBdtPEt9JrljDd
2aWtlcWFvJKrhvNt7iYybVYnAC/uynQHeyDvwrAP0vXtT1LUNWjtba0lt4o4 ZbDzJGi81GeRGZnA
YYJiLIVHKlfXgsBoaTq0t14a0rVJ7d5JbyG3d0t0J2tJtBIBPCgtk88AE84o tqBi6V4rluNcjspr
/TZmnv7m0FlCCtxAsZlw7necgiIcbV++DnjBLAaEWuXT+EtI1YxxfaL37F5i 4O0edJGrYGc8Bzjn
060W1AZZz+IX8QTafPf6a0VvDBO5SwkVnV3kBUZmO04j68/e6ccmlgCzn8Qv 4gm0+e/01oreGCdy
lhIrOrvICozMdpxH15+9045NLAM/tnU/7G/4STdaf2T9n+1/ZPJbz/J27s+Z v279vzbduM/Lu/jo
t0Aqx+Kr5dK8Rz3EVutzYrdzWICsEliid0+bJyWDR/NjAAdOhaiwGnf3msWN 1DNJJZPbTXSQR2aQ
uZmVmxuEm7BIXMhGzgKwzgb6NADS7zWNThtNVgksl0+6VJUtXhcSiJgCCZA2 N2Du27MZ+XP8dGgE
M2t3x+Ho1+EW6Xv9mLelXjZo93lhyuNwODyBzx79CW1sBMtzrF9cXFtZXVlA 1gyw3Es1q8gllMau
diiRdqgOvVmJJI425Y0Ahtddvrq91HS44bf+0reZEwpZ47dDDG5dzwWG53Cg BS+3HADMpYDQ8RXc
9np8Utu+x2vLWInAPyvPGjDn1ViPxpIDMsvExku7y1hs9Q1G5SR32QwxxrHG JZIcBmcDrCTy25t2
QAMqjsBM3i2zaCS8trW7utOhjWWe8jCBIVKLJkqzBzhGVvlU9ccnIBYC7d6w bO9WG4067S1aRIhe
5jMW5yFUYD7+WYL93qc9OaVgLtvcedLcx+TLH5Egj3SLgSfKrblPcfNjPqpH agDIv7zWLG6hmkks
ntprpII7NIXMzKzY3CTdgkLmQjZwFYZwN9PQCnoXitNRcXlzcpZ2E8JlhjuL GaEhQN2TO5EbnYGY
qo4GcFgpYjQGhpGr3V/rN9bS2n2e2it4JrfeCJXDtKCXU/dz5YIXqAecElVL AbNIAoAKACgAoAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAzPFH/I tat/15zf+gGurB/7
zT/xL8zOt/Dl6M+XW+8frX2L3OFbH0F8J/8AkWpf+vj/ANppXgZ7/vK/w/qz TA/w5f4mdnXhncFA
BQAUAFABQAUAU9bsP7V0a/07zfK+128kHmbd2zcpXOOM4z0oWgGdPpWsX0aw 6hqdk8SzQzAQWLxt
ujlSTqZW4IQjp3z2wXdAaMVh5es3Wo+bnz7eGDy9v3fLaRs59/M6e3vSA57S NH1O6t5Ibu5ih08a
rPcrB9kZZjtu2lQ+YXxgkKfucqcD+9TuBoJoEsGi6LZ294i3WkLGIZpISyMy xGIlkDA4Ks3AYYOO
TjBLgQx+Hr6G8Opw6lbjVZGkMsj2jNAVdYlIWMSBgcQR8lz/ABccjaXAq33g tL6+mu5/7Kmlu9jX
Ms+lrLIGCKh8pmYhBhQQGD4JJO4HFFwLU3hu7cC2TVEj09b9b4RC2zIz+eJm VnLYKlt2MKpHy5Jw
QxcC1p2g/Yb+C6+07/K+2fL5eM/aJ1l65/h2498546UXApS+EvM0a1077djy NGm0vzPK+95ixr5m
M9vL6e/Xii4DIfBtvDq5u1TTTGbprrzH01Wut5cyEecWxjccD5MheAQRuouB oWeg/ZrDw9a/ad39
j7fm8vHnbYHi6Z+X7+e/THvRcClp/hzU9K2f2fqtoNlvFaL59kz/ALmLd5YO JV+f523N0PGFXByX
uBrabprabDp9pb3T/YrK1+z+U6gtIQECMW4wQFYYAwd3sKQEmr2H9pWkcHm+ XsuIJ923OfLlWTH4
7cZ7ZoAIrDy9ZutR83Pn28MHl7fu+W0jZz7+Z09vegCrc6bfRXk9zpN7b2xu mD3CXNs0ys4UKGXD
oVO1VBGSPlGADkswILTwxaW8t3vd5orqGNHD8P5iyyymXcuMMXlLDaF2kZXH GC4AfDzXBvjfXzzt
dWsVt5qRiORDG8rJIDyA48xTkAAMmQBkAFwJ/wCyJba6ubnTJre1aS1gtoY3 ty0cSxNIfuqy5BEm
AARjHfpRcBmjaTqGm6BZ6YdSiZ7TyY0mjtduYk25UqWbllVhuBGN2QOKG9QK sPh6+ANrNqVu+m/b
2vRGloyzbvPM4Xf5hGA+Afk5HoeQXAmt9AljS3sXvEfR7Ro2t7YQkSDyyDGr SbvmVSARhQTtXczf
NuLgaMVh5es3Wo+bnz7eGDy9v3fLaRs59/M6e3vSAIrDy9ZutR83Pn28MHl7 fu+W0jZz7+Z09veg
DL/4R+6+xf2P9vi/sLy/J+z/AGc+d5OMeX5u/GMfLnZu2993z07gQ6v4S/tH w3caUl95M0lxcTx3
PlbvL855C425wfkldM575GDjBfUCa10XU7fWZdRN/p8rSyEGSTT2M4hLZEQk 83AAAA4XGRuIJJJL
gT2Wk6hYfZ7O21KKPSrfasUP2XMyxr0TzC2CONudm7b33fPRcDPj8N6wPC8n h+TWLJrY2H2KORdP
cOq7Qm4/viCduew5IPQYJdXuBoNpepwSyT2GoWkM1zte7E1m0iSSBVXegEil MhQCCzD5RjB3FgCO
Pw80Ul1cpfOb+SYTRXTRjcp8qONlcDAdW8oFgNo5GNpVWBcDR1ew/tK0jg83 y9lxBPu25z5cqyY/
HbjPbNICloeg/wBk399dfafN+1Z+Xy9u3M88vXJz/r8f8Bz3wG3cDCh+H1vD FFFu024HkwxzTXWl
rNNlIkjzGzNhBhAQGVwGJJyDinzBYs3fgpLrVFvGntMpeJdrM1irXRKyB9jT E5KYBUABSAFGSAQy
uB09vHOkty0tx5qSSBok2BfKXao257/MGbJ/vY7UgMW10XU7fWZdRN/p8rSy EGSTT2M4hLZEQk83
AAAA4XGRuIJJJdwGWfhmVItPsr27t7rS9OXZbwfZSHZfKaICVi5Vxsds4Vcn B4HBLgWtL8M6ZpOs
3Oo2FnaW3nW8cAjgt1j27WdmOR/e3Lkf7A68YL3A2aQBQAUAFABQAUAFABQA UAFABQAUAFABQAUA
FABQAUAFABQAUAFABQAUAFABQAUAFABQBmeKP+Ra1b/rzm/9ANdWD/3mn/iX 5mdb+HL0Z8ut94/W
vsXucK2PoL4T/wDItS/9fH/tNK8DPf8AeV/h/VmmA/hy/wATOzrwzuCgAoAK ACgAoAKACgAoAKAC
gAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAo AKACgAoAKACgAoAK
AMzxR/yLWrf9ec3/AKAa6sH/ALzT/wAS/Mzrfw5ejPl1vvH619i9zhWx9BfC f/kWpf8Ar4/9ppXg
Z7/vK/w/qzTAfw5f4mdnXhncFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFAB
QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAZnij/AJFrVv8A rzm/9ANdWD/3mn/i
X5mdb+HL0Z8ut94/WvsXucK2PoL4T/8AItS/9fH/ALTSvAz3/eV/h/VmmA/h y/xM7OvDO4KACgAo
AKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKAC gAoAKAMrWtXbTnhh
ihWWeVWZQ7lRgEDsCSSWUAAEksK1p0+dNt2SIlJxaSV2ys2p66u7OjwfLnOJ Lg9N3/TDn7p+vH94
Z09lT/m/D/gkc9T+X8f+ADanrq7s6PB8uc4kuD03f9MOfun68f3hk9lT/m/D /ghz1P5fx/4ANqeu
ruzo8Hy5ziS4PTd/0w5+6frx/eGT2VP+b8P+CHPU/l/H/gA2p66u7OjwfLnO JLg9N3/TDn7p+vH9
4ZPZU/5vw/4Ic9T+X8f+AI2p68u7OjwfLnOJLg9N3/TDn7p+vH94ZPZU/wCb 8P8Aghz1P5fx/wCA
Danry7s6PB8uc4kuD03f9MOfun68f3hk9jT/AJvw/wCCHPU/l/H/AIANqevL uzo8Hy5ziS4PTd/0
w5+6frx/eGT2NP8Am/D/AIIc9T+X8f8AgA2p68u7OjwfLnOJLg9N3/TDn7p+ vH94ZPY0/wCb8P8A
ghz1P5fx/wCADanry7s6PB8uc4kuD03f9MOfun68f3hk9jT/AJvw/wCCHPU/ l/H/AIAPqmuxhi+k
QBVzkiS4PTdn/lhz90/p/eGT2NP+b8P+CHPP+X8f+Aaul3o1CxS58sxkllZC QSrKxVhkdcEEVjOD
hJxZpGXMrlqoKCgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKA
CgAoAKACgDM8Uf8AItat/wBec3/oBrqwf+80/wDEvzM638OXoz5db7x+tfYv c4VsfQXwn/5FqX/r
4/8AaaV4Ge/7yv8AD+rNMD/Dl/iZ2deGdwUAFABQAUAFABQAUAFABQAUAFAB QAUAFABQAUAFABQA
UAFABQAUAFABQAUAFABQAUAFABQAUAc3rz+X4n0UhtuUYZ3Y6z2/uP5/geh6 qH8Ofy/Uxn/Ej8/0
Ox3H1rM0DcfWgCjLq9tFq8Glu/8ApE8bSLyMDHRTznLAOQMciNz/AAmgA/tr TP7T/sv+0rT+0P8A
n189fN+7u+5nPTnp05oAZZeINHv0d7PV7G5WNkRzDco4VnOEBweCx4HqelAF W88X6Fa6Yupf2raT
WZuY7bzYbhGUOzAYJzjgHcechQTQBag8QaPcXkdlBq9jLdyqHSBLlGdlK7gQ oOSCvzfTmgCey1Sx
v3dLO+t7lo1R3EMquVVxlCcHgMOR6jpQBa3H1oAo65ltF1Bcbs20gxtzn5T2 2tn8j9D0px1aQbGT
4TOdGz63V1/6Pkp4n+K/l+RnQ+D7/wAzXrnNgoAKACgAoAKACgAoAKACgAoA KACgAoAKACgAoAKA
CgAoAKACgAoAKACgAoAKACgAoAKACgAoAzfE/wDyLWrf9ec3/oBrqwf+80/8 S/Mzrfw5ejPlxvvH
619i9zhWx9A/Cf8A5FqX/r4/9ppXgZ7/ALyv8P6s0wH8OX+JnaV4Z3BQAUAF ABQAUAFABQAUAFAB
QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBzXiBtvijR OcZRx1x/y2g9x/ns
eh6qP8Kfy/r+vxMaivUj8/0OuzWRoGaAONv9G12ee+1SJrdZhdrcQWrRbpys J2pGk/mAIsihjgr8
vnyA5ycgD5bHUn0PWPDo06XN79u8u+8yP7OPOaR1z83mcbwp+TrnqOaAMTX7 C9ntlvNTtNWu0ikt
4BBqLWf70SXduSirENpz5YBLsAOODklWBt3tjqWqTX2o/wBnS2pP2DZbTyR+ bJ9nuGmbG1mX5gwC
5Ycg5wOaQFXUbbxNqdzb+ZDfRxi/t53hMlqLdYVnRwBgNIZAoBYbgu4PtJG1 WAOh8H6e2keFdI0+
S3S3mgtI1ljTGBJtG/pwSWySe5JNAGxmgCnrPzaRfLjdm3cYxnPyntg/yP0N Nb/1/wAH8gMnwgc6
Gp/6ebn/ANHyVeK/iv5fkZ0P4f3/AJmzXMbBQAUAFABQAUAFABQAUAFABQAU AFABQAUAFABQAUAF
ABQAUAFABQAUAFABQAUAFABQAUAFABQBmeKP+Ra1b/rzm/8AQDXVg/8Aeaf+ JfmZ1v4cvRny633j
9a+xe5wrY+gvhP8A8i1L/wBfH/tNK8DPf95X+H9WaYH+HL/Ezs68M7goAKAC gAoAKACgAoAKACgA
oAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoA5/wATWGoS 3thqGnQrcSWu4GLz
AhILI2QSQP4MYyOvfpXVh5winGbsmY1YybUoq9iAar4w4zoMZ6ZxJF7Z/wCW 3+9+Y9OduTDfz/gL
nqfy/igGq+MOM6DGemcSRe2f+W3+9+Y9OTkw38/4Bz1P5fxQDVfGHGdBjPTO JIvbP/Lb/e/MenJy
Yb+f8A56n8v4oBqvjDjOgxnpnEkXtn/lt/vfmPTk5MN/P+Ac9T+X8URyX/iy dFSfw7DKoZXwzQkb
lKkEZl6ggkehx6cnJhv5/wAA56n8v5Eg1TxjxnQYz0ziSL2z/wAtv978x6cn Jhv5/wAA56n8oDVP
GPGdBjPTOJIvbP8Ay2/3vzHpycmG/n/AOep/KA1TxjxnQYz0ziSL2z/y2/3v zHpycmG/n/AOep/K
A1TxjxnQYz0ziSL2z/y2/wB78x6cnJhv5/wDnqfykV1eeLru1ltpdCQJMhRy Hh6EAHrKR/e6g9R1
xyKGGX2/wDnqfy/ibfh6xm07SIbe42ibdJI4VtwUu7PjPfG7H4Vy15qpUckX Si4QszRrE0CgAoAK
ACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgAoAKACgA oAKACgDM8Uf8i1q3
/XnN/wCgGurB/wC80/8AEvzM638OXoz5db7x+tfYvc4VsfQXwn/5FqX/AK+P /aaV4Ge/7yv8P6s0
wP8ADl/iZ2deGdwUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAF ABQAUAFABQAUAFAB
QAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQAUA FABQAUAFABQAUAFA
BQAUAFABQAUAFABQAUAFABQAUAFABQAUAFABQBmeKP8AkWtW/wCvOb/0A11Y P/eaf+JfmZ1v4cvR
ny633j9a+xe5wrY9X8D/ABA0XQdGa1uxctK0u/8AdoCANqjuR6GvOzLAzxdZ ThJWtbW/d+QsPU9j
Fxae50H/AAtvw3/zzvf+/S//ABVed/Y1b+eP4/5HT9aX8r/D/MP+Ft+G/wDn nff9+l/+Ko/sat/P
H8f8g+tL+V/h/mH/AAtzw3/zyvv+/S//ABVP+xq388fx/wAg+tL+V/h/mH/C 3PDf/PK+/wC/S/8A
xVH9jVv54/j/AJB9aX8r/D/MP+FueG/+eV9/36X/AOKo/sat/PH8f8g+tL+V /h/mH/C3PDf/ADyv
v+/S/wDxVH9jVv54/j/kH1pfyv8AD/MP+FueG/8Anlff9+l/+Ko/sat/PH8f 8g+tL+V/h/mH/C3P
Df8Azyvv+/S//FUf2NW/nj+P+QfWl/K/w/zD/hbnhv8A55X3/fpf/iqP7Grf zx/H/IPrS/lf4f5h
/wALc8N/88r7/v0v/wAVR/Y1b+eP4/5B9aX8r/D/ADD/AIW54b/55X3/AH6X /wCKo/sat/PH8f8A
IPrS/lf4f5h/wtzw3/zyvv8Av0v/AMVR/Y1b+eP4/wCQfWl/K/w/zD/hbnhv /nlff9+l/wDiqP7G
rfzx/H/IPrS/lf4f5h/wtzw3/wA8r7/v0v8A8VR/Y1b+eP4/5B9aX8r/AA/z D/hbnhv/AJ5X3/fp
f/iqP7Grfzx/H/IPrS/lf4f5h/wtzw3/AM8r7/v0v/xVH9jVv54/j/kH1pfy v8P8w/4W54b/AOeV
9/36X/4qj+xq388fx/yD60v5X+H+Yf8AC3PDf/PK+/79L/8AFUf2NW/nj+P+ QfWl/K/w/wAw/wCF
ueG/+eV9/wB+l/8AiqP7Grfzx/H/ACD60v5X+H+Yf8Lc8N/88r7/AL9L/wDF Uf2NW/nj+P8AkH1p
fyv8P8w/4W54b/55X3/fpf8A4qj+xq388fx/yD60v5X+H+Yf8Lc8N/8APK+/ 79L/APFUf2NW/nj+
P+QfWl/K/wAP8w/4W54b/wCeV9/36X/4qj+xq388fx/yD60v5X+H+Yf8Lc8N /wDPK+/79L/8VR/Y
1b+eP4/5B9aX8r/D/MP+FueG/wDnlff9+l/+Ko/sat/PH8f8g+tL+V/h/mH/ AAtzw3/zyvv+/S//
ABVH9jVv54/j/kH1pfyv8P8AMP8Ahbnhv/nlff8Afpf/AIqj+xq388fx/wAg +tL+V/h/mH/C3PDf
/PK+/wC/S/8AxVH9jVv54/j/AJB9aX8r/D/MP+FueG/+eV9/36X/AOKo/sat /PH8f8g+tL+V/h/m
H/C3PDf/ADyvv+/S/wDxVH9jVv54/j/kH1pfyv8AD/MP+FueG/8Anlff9+l/ +Ko/sat/PH8f8g+t
L+V/h/mH/C3PDf8Azyvv+/S//FUf2NW/nj+P+QfWl/K/w/zD/hbnhv8A55X3 /fpf/iqP7Grfzx/H
/IPrS/lf4f5h/wALc8N/88r7/v0v/wAVR/Y1b+eP4/5B9aX8r/D/ADD/AIW5 4b/55X3/AH6X/wCK
o/sat/PH8f8AIPrS/lf4f5h/wtzw3/zyvv8Av0v/AMVR/Y1b+eP4/wCQfWl/ K/w/zD/hbnhv/nlf
f9+l/wDiqP7Grfzx/H/IPrS/lf4f5h/wtzw3/wA8r7/v0v8A8VR/Y1b+eP4/ 5B9aX8r/AA/zD/hb
nhv/AJ5X3/fpf/iqP7Grfzx/H/IPrS/lf4f5h/wtzw3/AM8r7/v0v/xVH9jV v54/j/kH1pfyv8P8
w/4W54b/AOeV9/36X/4qj+xq388fx/yD60v5X+H+Yf8AC3PDf/PK+/79L/8A FUf2NW/nj+P+QfWl
/K/w/wAw/wCFueG/+eV9/wB+l/8AiqP7Grfzx/H/ACD60v5X+H+Yf8Lc8N/8 8r7/AL9L/wDFUf2N
W/nj+P8AkH1pfyv8P8w/4W54b/55X3/fpf8A4qj+xq388fx/yD60v5X+H+Yf 8Lc8N/8APK+/79L/
APFUf2NW/nj+P+QfWl/K/wAP8w/4W54b/wCeV9/36X/4qj+xq388fx/yD60v 5X+H+Yf8Lc8N/wDP
K+/79L/8VR/Y1b+eP4/5B9aX8r/D/MP+FueG/wDnlff9+l/+Ko/sat/PH8f8 g+tL+V/h/mH/AAtz
w3/zyvv+/S//ABVH9jVv54/j/kH1pfyv8P8AMP8Ahbnhv/nlff8Afpf/AIqj +xq388fx/wAg+tL+
V/h/mH/C3PDf/PK+/wC/S/8AxVH9jVv54/j/AJB9aX8r/D/MP+FueG/+eV9/ 36X/AOKo/sat/PH8
f8g+tL+V/h/mH/C3PDf/ADyvv+/S/wDxVH9jVv54/j/kH1pfyv8AD/MP+Fue G/8Anlff9+l/+Ko/
sat/PH8f8g+tL+V/h/mH/C3PDf8Azyvv+/S//FUf2NW/nj+P+QfWl/K/w/zD /hbnhv8A55X3/fpf
/iqP7Grfzx/H/IPrS/lf4f5h/wALc8N/88r7/v0v/wAVR/Y1b+eP4/5B9aX8 r/D/ADD/AIW54b/5
5X3/AH6X/wCKo/sat/PH8f8AIPrS/lf4f5h/wtzw3/zyvv8Av0v/AMVR/Y1b +eP4/wCQfWl/K/w/
zD/hbnhv/nlff9+l/wDiqP7Grfzx/H/IPrS/lf4f5h/wtzw3/wA8r7/v0v8A 8VR/Y1b+eP4/5B9a
X8r/AA/zD/hbnhv/AJ5X3/fpf/iqP7Grfzx/H/IPrS/lf4f5h/wtzw3/AM8r 7/v0v/xVH9jVv54/
j/kH1pfyv8P8w/4W54b/AOeV9/36X/4qj+xq388fx/yD60v5X+H+Yf8AC3PD f/PK+/79L/8AFUf2
NW/nj+P+QfWl/K/w/wAw/wCFueG/+eV9/wB+l/8AiqP7Grfzx/H/ACD60v5X +H+Yf8Lc8N/88r7/
AL9L/wDFUf2NW/nj+P8AkH1pfyv8P8w/4W54b/55X3/fpf8A4qj+xq388fx/ yD60v5X+H+Yf8Lc8
N/8APK+/79L/APFUf2NW/nj+P+QfWl/K/wAP8w/4W54b/wCeV9/36X/4qj+x q388fx/yD60v5X+H
+Yf8Lc8N/wDPK+/79L/8VR/Y1b+eP4/5B9aX8r/D/MP+FueG/wDnlff9+l/+ Ko/sat/PH8f8g+tL
+V/h/mH/AAtzw3/zyvv+/S//ABVH9jVv54/j/kH1pfyv8P8AMP8Ahbnhv/nl ff8Afpf/AIqj+xq3
88fx/wAg+tL+V/h/mH/C3PDf/PK+/wC/S/8AxVH9jVv54/j/AJB9aX8r/D/M p618UvD99o99aRR3
gknt5I1LRqBllIGfm962oZVVpVo1HONlJPr0foRPEKcXFReq8v8AM8Ub7x+t e29zJbH/2Q==
------=_NextPart_000_008F_01C52950.9CD03360--
Attached files
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.
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.
Re: ODBC y borrado de datos ( parte II) - 2 files [1/1]
- ignacio
- Site Admin
- Mensajes: 9472
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: ODBC y borrado de datos ( parte II) - 2 files [1/1]
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Re: ODBC y borrado de datos ( parte II) - 2 files [1/1]
Ignacio,
> A mi no me falla. Sólo consigo que falle cuando suprimo pero es porque se esta violando una constraint y entonces es completamente normal que falle.
Sí, eso es porque los registros que ya existen están sujetos a una
serie de reglas internas de la DB que impide que se borren.
Para apreciar lo que te decía es necesario añadir nuevos registros.
Por favor, prueba con el ejemplo que te envío, que añade al principio
del todo tres registros vacíos que se pueden borrar
Hay varias cosas que podemos observar.
El browse de arriba, con el SELECT desde código, muestra los registros
desde el primero.
El browse de abajo, con el select desde diseño, muestra el browse a
partir de la segunda línea.
En el browse de abajo, subes a la línea 1 y la borras (con el
dbNavigatos inferior), en lugar de quedarse en la nueva línea 1, salta a
la línea 2 y hay que subir con el cursor para ver la primera.
En el browse de arriba, primero vamos a actualizar, para que desaparezca
el registro borrado, luego intentas borrar cualquiera de los dos
primeros registros (con el botón de la toolbar superior) y te dará el
error que te comentaba
>
> >>Me tienes que contar con más detalle lo del SetPrimaryFields(), que por
> >>cierto a mí con ese nombre no me funciona, sino que tengo que poner
> >>SetPrimaryKeys()
>
> Ese nombre se lo pusistes tu en tu mensaje del 6 de marzo de 2005 a las 1:08, Asunto: SetPrimaryFields, y precisamente en mi contestación te explique en que consistian las PrimaryKeys.
Vaya, así se forjan las leyendas urbanas
> Por cierto, el proceso de mostar el dialogo del Avi y el bucle que tiene hacen innecesariamente lento las consultas SQL, por lo menos en mi máquina.
Sí, es que con 40 registros que tengo es tan rápido que si no lo
ralentizaba un poco no veía cómo quedaba el avi
--
Attached files odbcEjemplo2.zip (20.1 KB)Â
> A mi no me falla. Sólo consigo que falle cuando suprimo pero es porque se esta violando una constraint y entonces es completamente normal que falle.
Sí, eso es porque los registros que ya existen están sujetos a una
serie de reglas internas de la DB que impide que se borren.
Para apreciar lo que te decía es necesario añadir nuevos registros.
Por favor, prueba con el ejemplo que te envío, que añade al principio
del todo tres registros vacíos que se pueden borrar
Hay varias cosas que podemos observar.
El browse de arriba, con el SELECT desde código, muestra los registros
desde el primero.
El browse de abajo, con el select desde diseño, muestra el browse a
partir de la segunda línea.
En el browse de abajo, subes a la línea 1 y la borras (con el
dbNavigatos inferior), en lugar de quedarse en la nueva línea 1, salta a
la línea 2 y hay que subir con el cursor para ver la primera.
En el browse de arriba, primero vamos a actualizar, para que desaparezca
el registro borrado, luego intentas borrar cualquiera de los dos
primeros registros (con el botón de la toolbar superior) y te dará el
error que te comentaba
>
> >>Me tienes que contar con más detalle lo del SetPrimaryFields(), que por
> >>cierto a mí con ese nombre no me funciona, sino que tengo que poner
> >>SetPrimaryKeys()
>
> Ese nombre se lo pusistes tu en tu mensaje del 6 de marzo de 2005 a las 1:08, Asunto: SetPrimaryFields, y precisamente en mi contestación te explique en que consistian las PrimaryKeys.
Vaya, así se forjan las leyendas urbanas

> Por cierto, el proceso de mostar el dialogo del Avi y el bucle que tiene hacen innecesariamente lento las consultas SQL, por lo menos en mi máquina.
Sí, es que con 40 registros que tengo es tan rápido que si no lo
ralentizaba un poco no veía cómo quedaba el avi

--
Attached files odbcEjemplo2.zip (20.1 KB)Â
- ignacio
- Site Admin
- Mensajes: 9472
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: ODBC y borrado de datos ( parte II) - 2 files [1/1]
Fredy,
>>Sí, eso es porque los registros que ya existen están sujetos a una
>>serie de reglas internas de la DB que impide que se borren.
>>Para apreciar lo que te decía es necesario añadir nuevos registros.
Efectivamente así es. La información de error es clara como te comente. He vuelto a descargar tu ejemplo, he creado tres registros nuevos en la primera tabla, a continuación intento borrar uno de los recien creados y funciona perfectamente. Lo siento. Te pido por favor que los ejemplos sean más sencillos porque si no es tremendamente dificil para mi el reconstruirlos y probarlos y además como puedes ver no consigo reproducir tus problemas. Gracias de antemano.
>>En el browse de abajo, subes a la línea 1 y la borras (con el
>>dbNavigatos inferior), en lugar de quedarse en la nueva línea 1, salta a
>>la línea 2 y hay que subir con el cursor para ver la primera.
Modificado, aunque posiblemente mucha gente piense que lo lógico es saltar hacia delante y no hacia atras.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje news:[email=MPG.1ca1209a56756f739896e1@news.ozs.com...]MPG.1ca1209a56756f739896e1@news.ozs.com...[/email]
Ignacio,
> A mi no me falla. Sólo consigo que falle cuando suprimo pero es porque se esta violando una constraint y entonces es completamente normal que falle.
Sí, eso es porque los registros que ya existen están sujetos a una
serie de reglas internas de la DB que impide que se borren.
Para apreciar lo que te decía es necesario añadir nuevos registros.
Por favor, prueba con el ejemplo que te envío, que añade al principio
del todo tres registros vacíos que se pueden borrar
Hay varias cosas que podemos observar.
El browse de arriba, con el SELECT desde código, muestra los registros
desde el primero.
El browse de abajo, con el select desde diseño, muestra el browse a
partir de la segunda línea.
En el browse de abajo, subes a la línea 1 y la borras (con el
dbNavigatos inferior), en lugar de quedarse en la nueva línea 1, salta a
la línea 2 y hay que subir con el cursor para ver la primera.
En el browse de arriba, primero vamos a actualizar, para que desaparezca
el registro borrado, luego intentas borrar cualquiera de los dos
primeros registros (con el botón de la toolbar superior) y te dará el
error que te comentaba
>
> >>Me tienes que contar con más detalle lo del SetPrimaryFields(), que por
> >>cierto a mí con ese nombre no me funciona, sino que tengo que poner
> >>SetPrimaryKeys()
>
> Ese nombre se lo pusistes tu en tu mensaje del 6 de marzo de 2005 a las 1:08, Asunto: SetPrimaryFields, y precisamente en mi contestación te explique en que consistian las PrimaryKeys.
Vaya, así se forjan las leyendas urbanas
> Por cierto, el proceso de mostar el dialogo del Avi y el bucle que tiene hacen innecesariamente lento las consultas SQL, por lo menos en mi máquina.
Sí, es que con 40 registros que tengo es tan rápido que si no lo
ralentizaba un poco no veía cómo quedaba el avi
--
>>Sí, eso es porque los registros que ya existen están sujetos a una
>>serie de reglas internas de la DB que impide que se borren.
>>Para apreciar lo que te decía es necesario añadir nuevos registros.
Efectivamente así es. La información de error es clara como te comente. He vuelto a descargar tu ejemplo, he creado tres registros nuevos en la primera tabla, a continuación intento borrar uno de los recien creados y funciona perfectamente. Lo siento. Te pido por favor que los ejemplos sean más sencillos porque si no es tremendamente dificil para mi el reconstruirlos y probarlos y además como puedes ver no consigo reproducir tus problemas. Gracias de antemano.
>>En el browse de abajo, subes a la línea 1 y la borras (con el
>>dbNavigatos inferior), en lugar de quedarse en la nueva línea 1, salta a
>>la línea 2 y hay que subir con el cursor para ver la primera.
Modificado, aunque posiblemente mucha gente piense que lo lógico es saltar hacia delante y no hacia atras.
Un saludo,
"Fredy" <fredy@airtel.net> escribió en el mensaje news:[email=MPG.1ca1209a56756f739896e1@news.ozs.com...]MPG.1ca1209a56756f739896e1@news.ozs.com...[/email]
Ignacio,
> A mi no me falla. Sólo consigo que falle cuando suprimo pero es porque se esta violando una constraint y entonces es completamente normal que falle.
Sí, eso es porque los registros que ya existen están sujetos a una
serie de reglas internas de la DB que impide que se borren.
Para apreciar lo que te decía es necesario añadir nuevos registros.
Por favor, prueba con el ejemplo que te envío, que añade al principio
del todo tres registros vacíos que se pueden borrar
Hay varias cosas que podemos observar.
El browse de arriba, con el SELECT desde código, muestra los registros
desde el primero.
El browse de abajo, con el select desde diseño, muestra el browse a
partir de la segunda línea.
En el browse de abajo, subes a la línea 1 y la borras (con el
dbNavigatos inferior), en lugar de quedarse en la nueva línea 1, salta a
la línea 2 y hay que subir con el cursor para ver la primera.
En el browse de arriba, primero vamos a actualizar, para que desaparezca
el registro borrado, luego intentas borrar cualquiera de los dos
primeros registros (con el botón de la toolbar superior) y te dará el
error que te comentaba
>
> >>Me tienes que contar con más detalle lo del SetPrimaryFields(), que por
> >>cierto a mí con ese nombre no me funciona, sino que tengo que poner
> >>SetPrimaryKeys()
>
> Ese nombre se lo pusistes tu en tu mensaje del 6 de marzo de 2005 a las 1:08, Asunto: SetPrimaryFields, y precisamente en mi contestación te explique en que consistian las PrimaryKeys.
Vaya, así se forjan las leyendas urbanas

> Por cierto, el proceso de mostar el dialogo del Avi y el bucle que tiene hacen innecesariamente lento las consultas SQL, por lo menos en mi máquina.
Sí, es que con 40 registros que tengo es tan rápido que si no lo
ralentizaba un poco no veía cómo quedaba el avi

--
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Re: ODBC y borrado de datos ( parte II) - 2 files [1/1]
> Efectivamente así es. La información de error es clara como te
> comente. He vuelto a descargar tu ejemplo, he creado tres registros
> nuevos en la primera tabla, a continuación intento borrar uno de los
> recien creados y funciona perfectamente.
Ya está!. El problema lo tenía en que estaba compilando con los obj que me
mandaste el otro día por email.
Los incorporé al proyecto y ahí seguían. Hacéis las cosas tan cómodas de
utilizar que luego se olvida uno de ellas
. Procuraré estar más atento
a esas cosicas.
> Te pido por favor
> que los ejemplos sean más sencillos
Vale, prometido. Es que me animo a probar cosas y ya se sabe....
> Modificado, aunque posiblemente mucha gente piense que lo lógico es
> saltar hacia delante y no hacia atras.
Bueno, yo creo que lo correcto es, si estábamos en el registro "1", despues
de borrar seguir estando en el "nuevo registro 1"
Otra cosa,
Para pasar un registro a un array, he estado mirando el dataset:GetRecord(),
pero me pasa la estructura de la dbf y los datos. ¿Hay alguna función que
sólo pase la estructura?
De momento la estoy sacando con:
oRecord := ::oOdbcDataSet2:GetRecord()
FOR n := 1 TO Len( ORecord[2] )
LogDebug(oRecord[2,n,2] )
NEXT
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0511-0, 15/03/2005
Comprobado en: 16/03/2005 19:02:57
avast! tiene los derechos reservados (c) 1988-2004 ALWIL Software.
http://www.avast.com
> comente. He vuelto a descargar tu ejemplo, he creado tres registros
> nuevos en la primera tabla, a continuación intento borrar uno de los
> recien creados y funciona perfectamente.
Ya está!. El problema lo tenía en que estaba compilando con los obj que me
mandaste el otro día por email.
Los incorporé al proyecto y ahí seguían. Hacéis las cosas tan cómodas de
utilizar que luego se olvida uno de ellas

a esas cosicas.
> Te pido por favor
> que los ejemplos sean más sencillos
Vale, prometido. Es que me animo a probar cosas y ya se sabe....
> Modificado, aunque posiblemente mucha gente piense que lo lógico es
> saltar hacia delante y no hacia atras.
Bueno, yo creo que lo correcto es, si estábamos en el registro "1", despues
de borrar seguir estando en el "nuevo registro 1"
Otra cosa,
Para pasar un registro a un array, he estado mirando el dataset:GetRecord(),
pero me pasa la estructura de la dbf y los datos. ¿Hay alguna función que
sólo pase la estructura?
De momento la estoy sacando con:
oRecord := ::oOdbcDataSet2:GetRecord()
FOR n := 1 TO Len( ORecord[2] )
LogDebug(oRecord[2,n,2] )
NEXT
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0511-0, 15/03/2005
Comprobado en: 16/03/2005 19:02:57
avast! tiene los derechos reservados (c) 1988-2004 ALWIL Software.
http://www.avast.com
Re: ODBC y borrado de datos ( parte II) - 2 files [1/1]
Fredy,
> Otra cosa,
> Para pasar un registro a un array, he estado mirando el
> dataset:GetRecord(),
> pero me pasa la estructura de la dbf y los datos. ¿Hay alguna función
> que
> sólo pase la estructura?
Dos formas:
aStruct := oDS:Struct() // Ya está documentado
aStruct := ( oDs:Alias() )->( DbStruct() )
Un saludo
Ignacio Ortiz de Zúñiga
http://www.xailer.com
> Otra cosa,
> Para pasar un registro a un array, he estado mirando el
> dataset:GetRecord(),
> pero me pasa la estructura de la dbf y los datos. ¿Hay alguna función
> que
> sólo pase la estructura?
> De momento la estoy sacando con:
> oRecord := ::oOdbcDataSet2:GetRecord()
> FOR n := 1 TO Len( ORecord[2] )
> LogDebug(oRecord[2,n,2] )
> NEXT
> ---
> avast! Antivirus: Saliente mensaje limpio.
> Base de datos de Virus (VPS): 0511-0, 15/03/2005
> Comprobado en: 16/03/2005 19:02:57
> avast! tiene los derechos reservados (c) 1988-2004 ALWIL Software.
> http://www.avast.com
> Otra cosa,
> Para pasar un registro a un array, he estado mirando el
> dataset:GetRecord(),
> pero me pasa la estructura de la dbf y los datos. ¿Hay alguna función
> que
> sólo pase la estructura?
Dos formas:
aStruct := oDS:Struct() // Ya está documentado
aStruct := ( oDs:Alias() )->( DbStruct() )
Un saludo
Ignacio Ortiz de Zúñiga
http://www.xailer.com
> Otra cosa,
> Para pasar un registro a un array, he estado mirando el
> dataset:GetRecord(),
> pero me pasa la estructura de la dbf y los datos. ¿Hay alguna función
> que
> sólo pase la estructura?
> De momento la estoy sacando con:
> oRecord := ::oOdbcDataSet2:GetRecord()
> FOR n := 1 TO Len( ORecord[2] )
> LogDebug(oRecord[2,n,2] )
> NEXT
> ---
> avast! Antivirus: Saliente mensaje limpio.
> Base de datos de Virus (VPS): 0511-0, 15/03/2005
> Comprobado en: 16/03/2005 19:02:57
> avast! tiene los derechos reservados (c) 1988-2004 ALWIL Software.
> http://www.avast.com