Foros del Web » Programación para mayores de 30 ;) » .NET »

Informativo

Estas en el tema de Informativo en el foro de .NET en Foros del Web. Hola a todos. Os comento que ya he solucionado el problema que tenía y es que no podía actualizar una tabla que estaba vinculada a ...
  #1 (permalink)  
Antiguo 10/06/2004, 09:10
 
Fecha de Ingreso: abril-2002
Mensajes: 14
Antigüedad: 22 años
Puntos: 0
Sonrisa Informativo

Hola a todos.
Os comento que ya he solucionado el problema que tenía y es que no podía actualizar una tabla que estaba vinculada a otra generando el comando automáticamente utilizando la clase OleDbCommandBuilder.
Os paso lo que he encontrado en la ayuda:
Limitaciones de la lógica de generación automática de comandos
La generación automática de comandos tiene las siguientes limitaciones.
Sólo tablas no relacionadas

La lógica de generación automática de comandos crea instrucciones INSERT, UPDATE o DELETE para tablas independientes sin tener en cuenta las relaciones que éstas puedan tener con otras tablas en el origen de datos. Por eso se puede producir un error al llamar a Update para realizar cambios en una columna que participa en una restricción de clave externa en la base de datos. Para evitar esa excepción, no use CommandBuilder al actualizar las columnas que participan en una restricción de clave externa. En este caso debe especificar de forma explícita las instrucciones que se van a utilizar para llevar a cabo la operación.
Nombres de tabla y columnaLa lógica de generación automática de comandos ocasiona un error cuando los nombres de las tablas o columnas incluyen algún carácter especial, como espacios, puntos, signos de exclamación y otros caracteres no alfanuméricos, aún en el caso de que se incluyan entre corchetes. Se pueden utilizar nombres completos de tabla, como catalog.schema.table.

Por lo tanto os tendreis que crear vuestras propios comandos (insertCommand, DeleteCommand y updateCommand).

Os paso los ejemplos que he encontrado y que me han servido para solucionar el problema:
SqlClient
Dim catDA As SqlDataAdapter = New SqlDataAdapter("SELECT CategoryID, CategoryName FROM Categories", nwindConn)

catDA.UpdateCommand = New SqlCommand("UPDATE Categories SET CategoryName = @CategoryName " & _
"WHERE CategoryID = @CategoryID", nwindConn)

catDA.UpdateCommand.Parameters.Add("@CategoryName" , SqlDbType.NVarChar, 15, "CategoryName")

Dim workParm As SqlParameter = catDA.UpdateCommand.Parameters.Add("@CategoryID", SqlDbType.Int)
workParm.SourceColumn = "CategoryID"
workParm.SourceVersion = DataRowVersion.Original

Dim catDS As DataSet = New DataSet
catDA.Fill(catDS, "Categories")

Dim cRow As DataRow = catDS.Tables("Categories").Rows(0)
cRow("CategoryName") = "New Category"

catDA.Update(catDS)
OleDbDim catDA As OleDbDataAdapter = New OleDbDataAdapter("SELECT CategoryID, CategoryName FROM Categories", nwindConn)

catDA.UpdateCommand = New OleDbCommand("UPDATE Categories SET CategoryName = ? " & _
"WHERE CategoryID = ?" , nwindConn)

catDA.UpdateCommand.Parameters.Add("@CategoryName" , OleDbType.VarChar, 15, "CategoryName")

Dim workParm As OleDbParameter = catDA.UpdateCommand.Parameters.Add("@CategoryID", OleDbType.Integer)
workParm.SourceColumn = "CategoryID"
workParm.SourceVersion = DataRowVersion.Original

Dim catDS As DataSet = New DataSet
catDA.Fill(catDS, "Categories")

Dim cRow As DataRow = catDS.Tables("Categories").Rows(0)
cRow("CategoryName") = "New Category"

catDA.Update(catDS)

Espero que os ayude. Hasta la próxima.
  #2 (permalink)  
Antiguo 11/06/2004, 05:46
Avatar de GeRuNdIo  
Fecha de Ingreso: marzo-2004
Ubicación: Sanlúcar de Barrameda, Cádiz
Mensajes: 232
Antigüedad: 20 años, 1 mes
Puntos: 2
Muy interesante natinieves, lo tendré en cuenta.
Saludos
__________________
Una buena forma de sacar las castañas del fuego sin quemarse: LEE FOROSDELWEB..... :si:
------
F.P.R. MCAD .NET
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:44.