Fredy,
Yo creo que lo correcto, sin dudarlo, es que Harbour generase un run-time
error de la misma forma que se genera cuando no se hace un Reclock al grabar
un campo. (¿recuerdas? 'Lock required')
Sigo pensando que si se lo posteas en el foro de xharbour.org te lo
arreglaran de inmediato.
Un saludo,
"Fredy" <
fredy@airtel.net> escribió en el mensaje
news:[email=
MPG.1d1a44bbb3516503989712@news.ozs.com...]
MPG.1d1a44bbb3516503989712@news.ozs.com...[/email]
Hola!
He seguido dándole vueltas al tema de los índices únicos, y parece que
es algún error mío, ya que ahora casi me funcionan.
El problema es que realmente funcionan, pero de forma tan automática que
por programa no me entero de nada.
La tabla que utilizo tiene entre otros, los campos
nCodigo: es de tipo AutoInc y no está indexado
Explotacion: tipo carácter 10, está indexado como unique.
tengo ya los datos
nCodigo Explotacion
--------- ------------
1 345-HU-456
2 224-HU-200
Si inserto un registro con Explotación=224-hu-200, como ya existe esa
clave no me lo inserta, pero no me dice nada. Si después inserto el 100-
Z-100, la tabla se queda
nCodigo Explotacion
--------- ------------
1 345-HU-456
2 224-HU-200
4 100-Z-100
Como se ve, ha saltado el incremental con el registro duplicado y no lo
tengo en la tabla. Perfecto.
El problema: Que el usuario a insertado un dato que ya existía, y por lo
tanto realmente no lo ha insertado, pero yo no le puedo avisar desde
programa.
En el datasource tengo lDisplayErrors a .t., al igual que en el dataset.
Si hago un logdebug( ::odbf:update()) me devuelve .t.
Yo creo que lo correcto sería que update devolviera .f., ya que el
registro realmente no se ha insertado ¿no?
Voy a ver si puedo separar ese módulo de la aplicación y os mando el
ejemplo.
Un saludico,
Fredy
In article <42a9a258$
1@ozsrvnegro.ozlan.local>,
InvalidAccount@ozs.com
says...
> Fredy,
>
> Intenta hacer un pequeño ejemplo en modo consola. Si consigues que falle
> publicala en el foro de xharbour.org seguro que lo resolverán rápido.
>
> Un saludo,
>
> "Ignacio Ortiz de Zúñiga" <
InvalidAccount@ozs.com> escribió en el mensaje
> news:42a9a038$[email=
1@ozsrvnegro.ozlan.local...]
1@ozsrvnegro.ozlan.local...[/email]
> > Fredy,
> >
> > Cambia 'Xailer' por 'Xharbour' pues obviamente Xailer no hace nada con
> > los
> > RDDs.
> >
> > Saludos,
> >
> > "Fredy" <
fredy@airtel.net> escribió en el mensaje
> > news:[email=
MPG.1d13b206eac2b072989711@news.ozs.com...]
MPG.1d13b206eac2b072989711@news.ozs.com...[/email]
> > Hola!
> >
> > Sí, lo que dices es correcto para las dbf, pero con las tablas .adt de
> > advantage la cosa cambia, y mucho. Con las .adt sí que son índices de
> > clave única, ya que lo que hacen es no permitirte introducir un dato si
> > el índice coincide con otro ya existente. Como ves, la diferencia es
> > brutal, ya que este tipo de índices unique sí son muy interesantes. Las
> > malas noticias son que no me funcionan en Xailer.

> >
> > Nos vemos en Murcia el 18.
> > Un saludico,
> > Fredy
> >
> >
> > -----------------------------------
> > Os dejo lo que pone la documentación de advantage, ya que esta
> > característica de los índices en ads no es muy conocida
> >
> > Unique Indexes
> >
> > The unique property of index orders is very different depending on the
> > Advantage table type being used. For information on unique indexes, see
> > ADI Unique Indexes or Xbase Unique Indexes.
> >
> >
> > Xbase Unique Indexes.
> > ----------------------
> > An Xbase index order created with the "unique" property will only
> > include records that are referenced by unique values. If two records
> > result in the identical key value, then only one of the records will be
> > referenced by the index. The second is simply never added to the index,
> > and no error is reported. If the record (of the two with identical key