Visual Basic - Buscar un registro en un Dataset, modificarlo y guardarlo en la base SQL Server

Life is soft - evento anual de software empresarial
 
Vista:

Buscar un registro en un Dataset, modificarlo y guardarlo en la base SQL Server

Publicado por Pedro (1 intervención) el 06/10/2014 11:55:42
Buenos días,

Estoy empezando a programar en Visual Net, hasta ahora lo hacía en Access, y me surge la siguiente duda:

Necesito buscar en un Dataset el registro de una tabla que cumpla un requisito (buscar por numero de factura) y una vez lo encuentre comprobar si el importe es mayor de cero y si lo es modificarlo a 100 y después guardar el registro en el Dataset (sin saber la clave de la tabla) y propagarlo a la tabla original de SQL Server, en Access sería algo así:
__________________________________________________________________________________________
Private Sub BusqFra(strFra As String)
Dim cn As New ADODB.Connection, rs As New ADODB.Recordset

rs.Open "SELECT * FROM tblRepartos WHERE NumFra='" & strFra & "';", cn, adOpenKeyset, adLockOptimistic, adCmdText

If rs.RecordCount > 0 Then
If rs!Importe > 0 Then
rs!Importe = 100
rs.Update
End If
End If
End Sub
___________________________________________________________________________________________

Lo hago de esta manera en Ado Net:

Imports System.Data.SqlClient

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
BusqFra("N456")
End Sub

Private Sub BusqFra(ByVal NumFra As String)
Dim oConexion As New SqlConnection()
oConexion.ConnectionString = "Data Source=Yo\SQLEXPRESS;Initial Catalog=Clientes;Integrated Security=True"

Dim oDS = New DataSet()
Dim oDA As New SqlDataAdapter("SELECT * FROM tblRepartos", oConexion)
oDA.Fill(oDS, "Repartos")

Dim oCB As SqlCommandBuilder = New SqlCommandBuilder(oDA)

Dim oDR() As DataRow
oDR = oDS.Tables("Repartos").Select("NumFra = '" & NumFra & "'")

For Each Rep As DataRow In oDR
If Rep("Importe") > 0 Then
Rep("Importe") = 100
End If
Next

oDA.Update(oDS, "Repartos")
End Sub
End Class

______________________________________________________________________________________

Y me da este error:

"La generación SQL dinámica para UpdateCommand no es compatible con SelectCommand, que no devuelve ninguna información sobre columnas clave."

Me podeis hechar una mano.

Gracias,

Pedro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-1
Responder