Quantcast
Viewing latest article 5
Browse Latest Browse All 10

Error en colsulta update.

No, UPDATE en SQL Server CE es muy "restrictivo" respecto a la sintaxis permitida, de hecho la expresión que puedes asignar a la columna que deseas modificar te exige sea un valor simple, un valor escalar.

¿Qué hacer?, según recuerdo ya habías tenido el mismo inconveniente meses atrás y la forma como lo resolviste es la misma que te propondré ahora (salvo exista otra forma): recupera las filas a afectar, itera y actualiza uno a uno, es "horrible" el método, lo sé,  pero imagino analizaste desde un inicio las restricciones de SQL Server CE antes de tomarla como solución.

- Consulta de selección:

SELECT
    c1.Cód_GC,
    SUM(c2.SaldoUnificado)
FROM
    ImportacionDatos c1
    INNER JOIN ImportacionDatos c2 ON (LEFT(c2.Cód_GC, 3) = c1.Cód_GC)
GROUP BY c1.Cód_GC


Prueba desde tu editor de consultas de SQL Server CE si la consulta retorna los valores a afectar, de ser así ejecuta la misma desde tu aplicación, itera y actualiza.

- Código de aplicación

Dim ConsultaSQL = "SELECT..." 'La consulta que escribí líneas arriba
Dim da As New SqlCeDataAdapter(ConsultaSQL, cnn)
Dim dt As New DataTable
'Rellenar una instancia de la clase DataTable con las filas
'que recupera la consulta de selección
da.Fill(dt)

'Definir la consulta sql de actualización
Dim SQLActualizacion = "UPDATE ImportacionDatos SET SaldoUnificado = @SaldoUnificado 
							WHERE Cód_GC = @Cod"

'Iterar por la colección de filas
For Each Fila As DataRow In dt.Rows
	Dim Comando As New SqlCeCommand(SQLActualizacion, cnn)

	Comando.Parameters.AddWithValue("@SaldoUnificado", Fila(1))
	Comando.Parameters.AddWithValue("@Cod", Fila(0))

	Comando.ExecuteNonQuery()
Next

Sobre el ejemplo, si tienes la manera de guardar las operaciones como una única transacción agrégalas al ejemplo.


Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.



Viewing latest article 5
Browse Latest Browse All 10


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>