Pregunta

Soy incapaz de recuperar el último ID insertado desde mi db SQL Server 2000 utilizando un conjunto de datos con tipo en asp.NET

He creado una tableadapter y marcado la "Actualizar tabla de datos" y "Generar INSERT, UPDATE y DELETE". Esto genera automáticamente el relleno y métodos GetData, y la inserción, actualización, seleccionar y eliminar declaraciones.

He intentado todas las soluciones posibles en este hilo

http://forums.asp.net/t/990365.aspx

pero todavía estoy unsuccesfull, siempre devuelve 1 (= número de filas afectadas). No quiero crear un método de inserción independiente como el InsertCommand generada automáticamente se adapta perfectamente a mis necesidades.

Como se sugiere en el hilo anterior, me han tratado de actualizar la sintaxis InsertCommand SQL para añadir SCOPY_IDENTITY SELECT () o algo similar, he intentado añadir un parámetro de tipo ReturnValue, pero lo único que consigue es el número de filas afectadas .

¿Alguien tiene una opinión diferente sobre esto? ¡Gracias por adelantado! Stijn

¿Fue útil?

Solución

he encontrado con éxito una manera de conseguir la identificación gradual después Insertar con mi adaptador de la tabla.

Mi enfoque es un poco diferente, estoy usando un procedimiento tienda para hacer la inserción, por lo que mi comando de inserción tiene todos los valores, pero el ID, que hizo que el SP devuelve el ID simplemente llamando a:  SET @ ID = SCOPE_IDENTITY () y entonces  COMMIT TRAN y la última línea será  RETORNO @ID

A continuación, busqué mis parámetros del adaptador de mesa para InsertCommand y establecer el @RETURNVALUE a la columna de la identificación gradual de la mesa, por lo que cuando se ejecuta automáticamente pone el valor de retorno en el campo id.

Espero que esto ayuda

Otros consejos

decidí renunciar, no puedo darse el lujo de perder más tiempo en esto. Yo uso la sentencia Insert después de lo cual hago una consulta de selección MAX (id) a hget el ID de inserción

Si alguien debe tener una solución, voy a estar feliz de leer aquí

Gracias Stijn

  

Es necesario contar mesa adaptador de la tabla para actualizar la   los datos de la tabla después de la operación de actualización / inserción.   Se trata de cómo se puede hacer eso.

  1. Abra las propiedades de TableAdapter -> Consulta de selección por defecto -> Opciones Advnaced . y marque la opción de Actualizar la tabla de datos . Guardar el adaptador de ahora. Ahora bien, cuando se llama a la actualización en la mesa-adaptador, el los datos de la tabla se actualizarán [actualizan] después de la actualización / operación de inserción y reflejará los últimos valores de la tabla de base de datos. Si la clave primaria de Coloumn-o cualquiera se pone en auto-incremento, la tabla de datos tendrá los últimos valor posterior actualización reciente.

  2. Ahora puede llamar a la actualización como TableAdapterObj.Update (ds.dataTable);

  3. Leer últimos valores de los coloumns DataTable (ds.dataTable) y asignar valores respectivos en la tabla secundaria antes de la actualización / inserción . Esto funciona exactamente de la manera deseada.

texto alternativo http://ruchitsurati.net/files/tds1.png

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top