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.

SetPrimaryFields

Foro público de Xailer en español
Responder
Fredy
Mensajes: 199
Registrado: Mié Mar 29, 2006 1:28 am

SetPrimaryFields

Mensaje por Fredy »

Ignacio,
¿Puedes explicar con más detalle el SetPrimaryFields?
¿Cuándo se tiene que usar?
¿Si la tabla tiene ya clave primaria es necesario indicarlo?
Un saludico,
Fredy
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

SetPrimaryFields

Mensaje por jfgimenez »

Fredy,
> ¿Puedes explicar con más detalle el SetPrimaryFields?
>
> ¿Cuándo se tiene que usar?
>
> ¿Si la tabla tiene ya clave primaria es necesario indicarlo?
Yo no soy el experto en ODBC, sino Ignacio. De todos modos, por lo que
recuerdo sobre esto, sólo tienes que asignarlo cuando el driver ODBC o la BD
no entreguen esta información; p.ej. Access.
Eso teniendo en cuenta que sí tengas definida una clave primaria, porque si
no la tienes definida, entonces tendrás que ponerlo siempre.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9442
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

SetPrimaryFields

Mensaje por ignacio »

Fredy,
Una PrimaryFields o Clave primaría es tan sólo un mecanísmo para establecer
unicidad de filas en una tabla, es decir, no puede haber dos filas
exactamente iguales. Y dicha clave primaría se puede componer de uno o más
campos. Un ejemplo claro es el típico campo 'Codigo' que suele haber en
muchas tablas.
A diferencia de xBase si el campo 'Codigo' se define como tabla primaria el
propio Motor SQL se encarga de que sea imposible que existan dos filas
(registros) con el mismo valor en el campo código. Y es precisamente esta
cualidad de las claves primarias la que nos permite en Xailer y otros
entornos de desarrollo hacer modificación en las tablas con la seguridad de
que SOLO afectará a la fila que deseemos.
La definición de claves primarias en las tablas se hace por DDL (Data
Definition Language), es decir, es una instrucción SQL más, pero lo más
normal es que utilices el administrador del Motor SQL para hacer el trabajo
ya que puede variar algo la sintaxis entre distintos motores, por ejemplo en
FireBird / Interbase sería algo así:
CREATE UNIQUE INDEX ACCIONES_INDEX1 ON ACCIONES (CODIGO);
Si la table tiene clave primaria y el cliente ODBC que estes usando sea
capaz de retornar dicha información no hará falta que hagas nada, en caso
contrario puedes tu si lo deseas indicar la clave primaria de la tabla, pero
muchísimo cuidado, pues como no sepas muy bien lo que estás haciendo es
posible que en operación de edición y borrado tus operaciones afecten a más
de un fila sin que te des cuenta.
Yo siempre pongo el ejemplo de las lineas de factura, normalmente cualquier
Clippero utiliza el campo número de factura en la tabla de lineas de
facturación para conocer todas las lineas de una factura. Sin embargo es
posible que el usuario haya introducido dos lineas exactamente iguales, es
decir, en vez de cambiar la cantidad de un artículo ha vuelto a introducir
el artículo de nuevo. En SQL ello implicaría que una modificación sobre esa
linea afectaría también a la nueva.
Si se intentase introducir una clave primaria en el campo 'Factura' sobre la
tabla de lineas de facturación el motor de SQL te daría un error ya que hay
muchas lineas con el mismo número de factura lo cual no es posible. La
solución ha este problema es facil, simplemente añadele un nuevo campo de
nombre 'linea' y haz que la clave primaría sea la conjunción de los dos
campos: 'Factura' y 'Linea'.
Un saludo,
Pero además suele resultar que precisamente esos campos que ofrecen la
unicidad
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:422a5091$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Fredy,
>
>> ¿Puedes explicar con más detalle el SetPrimaryFields?
>>
>> ¿Cuándo se tiene que usar?
>>
>> ¿Si la tabla tiene ya clave primaria es necesario indicarlo?
>
> Yo no soy el experto en ODBC, sino Ignacio. De todos modos, por lo que
> recuerdo sobre esto, sólo tienes que asignarlo cuando el driver ODBC o la
> BD no entreguen esta información; p.ej. Access.
>
> Eso teniendo en cuenta que sí tengas definida una clave primaria, porque
> si no la tienes definida, entonces tendrás que ponerlo siempre.
>
>
> --
> Un saludo,
>
> José F. Giménez
>
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder