Actualizar un dataset no tipificado a su tabla fuente....

19/08/2004 - 20:15 por Alvaro Regalado | Informe spam
Hola a todos...

Tengo una clase q lee y graba 1 DataSet de una Tabla llamada "Stock" de
MSDE.
Ahora bien ... para leer el DataSet lo lee bien y lo carga a un Datagrid en
donde la persona le agrega filas... Eso tambien lo hace bien.

Cuando quiero grabar el DataSet no me da error pero no me graba nada...

Ideas??????????? Gracias !!!!

Ahi les va el codigo


Public Function Leer_DataSet_Stock(ByVal LeerVacio As Boolean, ByVal
StrSelect As String, Optional ByVal StrWhere As String = "") As DataSet
Try
Dim cmd As New SqlCommand
Dim adp As New SqlDataAdapter
AbrirBaseDatos()
With cmd
.Connection = Conexion
.CommandType = CommandType.Text
If LeerVacio = False Then
If StrWhere = "" Then
.CommandText = "SELECT " & StrSelect & " FROM Stock"
Else
.CommandText = "SELECT " & StrSelect & " FROM Stock
WHERE " & StrWhere
End If
Else
.CommandText = "SELECT * FROM Stock WHERE Producto = -1"
Lee el DataSet Vacio
End If
End With
adp.SelectCommand = cmd
adp.TableMappings.Add("Table", "Stock")
adp.Fill(DataSet)
Return DataSet
Catch err As Exception
Dim msg As String
msg = "Error al Leer DataSet Stock"
EventLog.WriteEntry(msg, err.Message, EventLogEntryType.Error)
Throw New Exception(msg, err)
Finally
CerrarBaseDatos()
End Try

End Function

Public Sub Grabar_DataSet_Stock(ByVal dts As DataSet)
Try
Dim cmd As New SqlCommand
Dim adp As New SqlDataAdapter
AbrirBaseDatos()
With cmd
.Connection = Conexion
.CommandType = CommandType.Text
.Parameters.Add(New SqlParameter("@Producto",
SqlDbType.BigInt, 8, "Producto"))
.Parameters.Add(New SqlParameter("@Fecha",
SqlDbType.DateTime, 8, "Fecha"))
.Parameters.Add(New SqlParameter("@Precio_Costo",
SqlDbType.Money, 8, "Precio_Costo"))
.Parameters.Add(New SqlParameter("@Proveedor",
SqlDbType.BigInt, 8, "Proveedor"))
.Parameters.Add(New SqlParameter("@Garantia", SqlDbType.Int,
4, "Garantia"))
.Parameters.Add(New SqlParameter("@Serie",
SqlDbType.VarChar, 20, "Serie"))
.Parameters.Add(New SqlParameter("@Estado",
SqlDbType.TinyInt, 1, "Estado"))
.Parameters.Add(New SqlParameter("@Numero_Compra",
SqlDbType.BigInt, 8, "Numero_Compra"))
.Parameters.Add(New SqlParameter("@Numero_Venta",
SqlDbType.BigInt, 8, "Numero_Venta"))
.Parameters.Add(New SqlParameter("@Numero_Otro",
SqlDbType.BigInt, 8, "Numero_Otro"))
.CommandText = "INSERT INTO Stock
(Producto,Fecha,Precio_Costo,Proveedor,Garantia,Serie,Estado,Numero_Compra,N
umero_Venta,Numero_Otro)" & _

"VALUES(@Producto,@Fecha,@Precio_Costo,@Proveedor,@Garantia,@Serie,@Estado,@
Numero_Compra,@Numero_Venta,@Numero_Otro)"
adp.InsertCommand = cmd
.CommandText = "SELECT * FROM Stock"
adp.SelectCommand = cmd
.CommandText = "DELETE * FROM Stock WHERE Producto @Producto AND Serie = @Serie"
adp.DeleteCommand = cmd
.CommandText = "UPDATE Stock SET Producto=@Producto,
Fecha=@Fecha, Precio_Costo=@Precio_Costo, Proveedor=@Proveedor,
Garantia=@Garantia, Serie=@Serie, Estado=@Estado,
Numero_Compra=@Numero_Compra" & _
", Numero_Venta=@Numero_Venta, Numero_Otro @Numero_Otro WHERE Producto=@Producto AND Serie = @Serie"
adp.UpdateCommand = cmd
End With
adp.TableMappings.Add("Table", "Stock") Aca lo probé de las dos
maneras
adp.Update(dts, "Stock") Aca lo probé de las dos maneras
dts.AcceptChanges()
Catch err As Exception
Dim msg As String
msg = "Error al Grabar DataSet Stock"
EventLog.WriteEntry(msg, err.Message, EventLogEntryType.Error)
Throw New Exception(msg, err)
Finally
CerrarBaseDatos()
End Try
End Sub
 

Leer las respuestas

#1 DJ_MIAO
20/08/2004 - 05:11 | Informe spam
El 90 % de las veses que no mesale algo creo otra
solucion como prueba para si ver mas claro y limpio lo
que pasa.
Tu lo que tienes hay es un cagaero de codigo y visto aki
peor porque todo queda enredado.

Crea otra solucion que haga ese mismo proseso sin tanto
parametro sin tanta mierda . Poco a poco vas complicando
la cosa hasta que salga lo que necesitas.Asi puede que
tratando de areglar algo jodas el resto.




Miao...

Hola a todos...

Tengo una clase q lee y graba 1 DataSet de una Tabla


llamada "Stock" de
MSDE.
Ahora bien ... para leer el DataSet lo lee bien y lo


carga a un Datagrid en
donde la persona le agrega filas... Eso tambien lo hace


bien.

Cuando quiero grabar el DataSet no me da error pero no


me graba nada...

Ideas??????????? Gracias !!!!

Ahi les va el codigo


Public Function Leer_DataSet_Stock(ByVal LeerVacio As


Boolean, ByVal
StrSelect As String, Optional ByVal StrWhere As String


= "") As DataSet
Try
Dim cmd As New SqlCommand
Dim adp As New SqlDataAdapter
AbrirBaseDatos()
With cmd
.Connection = Conexion
.CommandType = CommandType.Text
If LeerVacio = False Then
If StrWhere = "" Then
.CommandText = "SELECT " &


StrSelect & " FROM Stock"
Else
.CommandText = "SELECT " &


StrSelect & " FROM Stock
WHERE " & StrWhere
End If
Else
.CommandText = "SELECT * FROM Stock


WHERE Producto = -1"
Lee el DataSet Vacio
End If
End With
adp.SelectCommand = cmd
adp.TableMappings.Add("Table", "Stock")
adp.Fill(DataSet)
Return DataSet
Catch err As Exception
Dim msg As String
msg = "Error al Leer DataSet Stock"
EventLog.WriteEntry(msg, err.Message,


EventLogEntryType.Error)
Throw New Exception(msg, err)
Finally
CerrarBaseDatos()
End Try

End Function

Public Sub Grabar_DataSet_Stock(ByVal dts As DataSet)
Try
Dim cmd As New SqlCommand
Dim adp As New SqlDataAdapter
AbrirBaseDatos()
With cmd
.Connection = Conexion
.CommandType = CommandType.Text
.Parameters.Add(New SqlParameter


("@Producto",
SqlDbType.BigInt, 8, "Producto"))
.Parameters.Add(New SqlParameter


("@Fecha",
SqlDbType.DateTime, 8, "Fecha"))
.Parameters.Add(New SqlParameter


("@Precio_Costo",
SqlDbType.Money, 8, "Precio_Costo"))
.Parameters.Add(New SqlParameter


("@Proveedor",
SqlDbType.BigInt, 8, "Proveedor"))
.Parameters.Add(New SqlParameter


("@Garantia", SqlDbType.Int,
4, "Garantia"))
.Parameters.Add(New SqlParameter


("@Serie",
SqlDbType.VarChar, 20, "Serie"))
.Parameters.Add(New SqlParameter


("@Estado",
SqlDbType.TinyInt, 1, "Estado"))
.Parameters.Add(New SqlParameter


("@Numero_Compra",
SqlDbType.BigInt, 8, "Numero_Compra"))
.Parameters.Add(New SqlParameter


("@Numero_Venta",
SqlDbType.BigInt, 8, "Numero_Venta"))
.Parameters.Add(New SqlParameter


("@Numero_Otro",
SqlDbType.BigInt, 8, "Numero_Otro"))
.CommandText = "INSERT INTO Stock



(Producto,Fecha,Precio_Costo,Proveedor,Garantia,Serie,Esta
do,Numero_Compra,N
umero_Venta,Numero_Otro)" & _

"VALUES


(@Producto,@Fecha,@Precio_Costo,@Proveedor,@Garantia,@Seri
e,@Estado,@
Numero_Compra,@Numero_Venta,@Numero_Otro)"
adp.InsertCommand = cmd
.CommandText = "SELECT * FROM Stock"
adp.SelectCommand = cmd
.CommandText = "DELETE * FROM Stock


WHERE Producto >@Producto AND Serie = @Serie"
adp.DeleteCommand = cmd
.CommandText = "UPDATE Stock SET


Producto=@Producto,
Fecha=@Fecha, Precio_Costo=@Precio_Costo,


Proveedor=@Proveedor,
Garantia=@Garantia, Serie=@Serie, Estado=@Estado,
Numero_Compra=@Numero_Compra" & _
", Numero_Venta=@Numero_Venta,


Numero_Otro >@Numero_Otro WHERE Producto=@Producto AND Serie = @Serie"
adp.UpdateCommand = cmd
End With
adp.TableMappings.Add("Table", "Stock") Aca


lo probé de las dos
maneras
adp.Update(dts, "Stock") Aca lo probé de


las dos maneras
dts.AcceptChanges()
Catch err As Exception
Dim msg As String
msg = "Error al Grabar DataSet Stock"
EventLog.WriteEntry(msg, err.Message,


EventLogEntryType.Error)
Throw New Exception(msg, err)
Finally
CerrarBaseDatos()
End Try
End Sub


.

Preguntas similares