Duda conceptual

01/01/2006 - 17:20 por Cid | Informe spam
Tengo una tabla en sql server articulos con un campo clave IdArt si hago
este campo identidad y autoincrementable el tableadapter generado no me da
las acciones delete y update ?¿
El caso es que opte por marcarlo int y clave en sql server pero luego en la
tabla arratrada al dataset le pongo a IdArt la opcion AutoIncrement a true y
todo parace ir bien, genera delete y update etc.
Mi pregunta es, ¿Esta manera de trabajar es correcta o puede dar problemas?

Preguntas similare

Leer las respuestas

#1 Julio Casal
02/01/2006 - 06:11 | Informe spam
Qué tal Cid. Pues solo te recomendaría no confundas el autoincremento del
tipo identity en SQL Server con el autoincremento en los Datasets. Son dos
cosas diferentes. Cuando le marcas identity a una columna de SQL Server
aquello no tiene ningún efecto sobre el dataset hacia el cual arrastres la
tabla. Es decir, los autoincrementos en el dataset se darán a medida que
agregues registros al dataset, ya sea desde la base o desde tu pantalla, pero
ese autoincremento es completamente independiente de la BD.

Yo al menos no suelo usar el autoincremento en los datasets pues, como te
digo, SQL Server nunca lo toma en cuenta, lo cual está muy bien por cierto,
por temas de concurrencia. Yo lo que hago en estos casos es actualizar el
dataset en la BD mediante el método Fill del DataAdapter y luego extraigo el
identity como parámetro de salida del procedimiento almacenado que realiza la
actualización. Una vez extraido el valor (simplemente lo tomo del
SQLParameter correspondiente en el command de Inserción o Actualización) lo
coloco en la fila correspondiente del dataset ó lo retorno desde mi función
de acutalización en mi componente de negocio para que la pantalla lo tome.

Espero haber podido ayudarte.

Saludos,
Julio Casal
.Net Application Developer
http://spaces.msn.com/members/PolluxSpace


"Cid" wrote:

Tengo una tabla en sql server articulos con un campo clave IdArt si hago
este campo identidad y autoincrementable el tableadapter generado no me da
las acciones delete y update ?¿
El caso es que opte por marcarlo int y clave en sql server pero luego en la
tabla arratrada al dataset le pongo a IdArt la opcion AutoIncrement a true y
todo parace ir bien, genera delete y update etc.
Mi pregunta es, ¿Esta manera de trabajar es correcta o puede dar problemas?



Respuesta Responder a este mensaje
#2 Eduardo Alvarado Meza
02/01/2006 - 06:55 | Informe spam
Lo que te dijo Julio es perfecto... y funciona.

Yo no utilizo esa propiedad en los campos, en mi componente de negocio, hay
una propiedad que se hace true cuando mi llave va a llevar autoincremento, y
al crear un registro llama a un metodo que se sobreescribe en form heredado
con una funcion SQL que calcula el siguiente numero, si al pasar el tiempo
ese numero ya no es valido porque otra persona ya lo ocupo, el comp. de
negocio, lee e identifica el error, advierte y refresca el numero y le da
oportunidad al usuario de ver el nuevo numero y guardarlo de nuevo.

Sucede que a veces el susario necesita ver el numero, antes de guardarlo,
por ejemplo cuando ingresa facturas manuales al sistema, y necesita saber
que numero va ingresando e incluso a veces saltearse una que no la tiene a
mano y no puede esperar para ingresar las otras. Obviamente es posible
sugerir el id en ese caso, lo que seria solo un readonly = false.

Espero te sirva la idea para un futuro. Suerte



"Cid" escribió en el mensaje
news:
Tengo una tabla en sql server articulos con un campo clave IdArt si hago
este campo identidad y autoincrementable el tableadapter generado no me da
las acciones delete y update ?¿
El caso es que opte por marcarlo int y clave en sql server pero luego en
la tabla arratrada al dataset le pongo a IdArt la opcion AutoIncrement a
true y todo parace ir bien, genera delete y update etc.
Mi pregunta es, ¿Esta manera de trabajar es correcta o puede dar
problemas?

Respuesta Responder a este mensaje
#3 Cid
02/01/2006 - 12:09 | Informe spam
Gracias por vuestras respuestas pero mi pregunta es mas concreta, ¿Habra con
este metodo que uso problemas de identidad? Es decir ¿podria ser que varios
usuarios intenten a la hora de grabar dar el mismo valor al campo clave y
casque el prg? o por el contario no es posible y el autooincremento del
dataset ya contempla este caso. Gracias.

"Cid" escribió en el mensaje
news:
Tengo una tabla en sql server articulos con un campo clave IdArt si hago
este campo identidad y autoincrementable el tableadapter generado no me da
las acciones delete y update ?¿
El caso es que opte por marcarlo int y clave en sql server pero luego en
la tabla arratrada al dataset le pongo a IdArt la opcion AutoIncrement a
true y todo parace ir bien, genera delete y update etc.
Mi pregunta es, ¿Esta manera de trabajar es correcta o puede dar
problemas?

Respuesta Responder a este mensaje
#4 Julio Casal
02/01/2006 - 13:30 | Informe spam
Hola Cid. Debo insistir en que el autoincremento del dataset no tiene nada
que ver con el autoincremento de las columnas identity de tu base de datos
SQL Server. Por lo tanto, el dataset no te ayudará de manera alguna a
resolver los problemas de concurrencia a los que te estás refiriendo. La
forma común de evitar esos problemas es a través de las columnas identity de
tus tablas, mas no mediante el dataset. Siempre deberías esperar a que el
usuario mande a guardar sus cambios para ahí permitir que SQL Server te
entrege el nuevo identity y tú se lo muestras al usuario. De esa forma es muy
poco probable que haya un problema de concurrencia, pues cada usuario
recibirá un identity diferente.

Saludos,
Julio Casal
.Net Application Developer
http://spaces.msn.com/members/PolluxSpace


"Cid" wrote:

Gracias por vuestras respuestas pero mi pregunta es mas concreta, ¿Habra con
este metodo que uso problemas de identidad? Es decir ¿podria ser que varios
usuarios intenten a la hora de grabar dar el mismo valor al campo clave y
casque el prg? o por el contario no es posible y el autooincremento del
dataset ya contempla este caso. Gracias.

"Cid" escribió en el mensaje
news:
> Tengo una tabla en sql server articulos con un campo clave IdArt si hago
> este campo identidad y autoincrementable el tableadapter generado no me da
> las acciones delete y update ?¿
> El caso es que opte por marcarlo int y clave en sql server pero luego en
> la tabla arratrada al dataset le pongo a IdArt la opcion AutoIncrement a
> true y todo parace ir bien, genera delete y update etc.
> Mi pregunta es, ¿Esta manera de trabajar es correcta o puede dar
> problemas?
>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida