Los foros del Guille

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Los moderadores, MVP y administradores podrán seguir editando, respondiendo o creando nuevos mensajes

Con idea de que puedan ayudar a responder e ir cerrando mensajes ;-)

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 41314 - Nuevo registro en un DatagridView
IDAsuntoFechaNick 
41314 Nuevo registro en un DatagridView14/05/08 04:23evegalle   
Al ingresar un nuevo registro en un Datagrid o en un Datagridview este se mantiene durante la ejecución de la aplicación, mas no se guarda en la base de datos. Utilizo 2 capas (Presentación y Datos)

Código en la clase Form:
Imports System.Data
Imports System.Data.SqlClient
Imports Datos.clsData
Public Class frmBeneficiarios
Private iPos As Integer
Private iEdit As Boolean
'Establecer el nombre de la tabla en el formulario de mantenimiento
Dim sTabla As String = "a_Beneficiarios"
Dim sCampoBusca As String = "ben_id"
Public ds As DataSet
'Instanciar la clase de acceso a datos
Private cAcceso As New Datos.clsData

Private Sub frmClientes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
cAcceso = New Datos.clsData
ds = cAcceso.crearDSBenefeciarios
Me.iPos = 0
' cargar columnas del registro
Me.CargarDatos()
End Sub

Private Sub CargarDatos()
Me.grdBenef.DataSource = Me.ds
Me.grdBenef.DataMember = "a_Beneficiarios"
End Sub

CAPA DE DATOS - Clase clsData

Imports System.Data
Imports System.Data.SqlClient
Public Class clsData
Protected Const scn As String = "persist security info=false;integrated security=sspi; database=ASocial;server=(local);connect timeout=30 "
Private daBeneficiarios As SqlDataAdapter

Dim cn As New SqlConnection(scn)
Public dsdatos As New DataSet
Public Event datasetcreado(ByVal vcreado As Boolean)

Public Function crearDSBenefeciarios() As DataSet
daBeneficiarios = New SqlDataAdapter("sp_Beneficiarios", cn)
daBeneficiarios.SelectCommand.CommandType = CommandType.StoredProcedure

Dim cmdInsercionB As New SqlCommand("INSERT INTO [ASocial].[dbo].[a_Beneficiarios] " & _
"([prgSoc_id], [ben_apPat], [ben_apMat], [ben_nom], [ben_sex], [ben_fecNac], " & _
"[ben_tipdoc], [ben_numdoc], [ben_dir], [ben_dirRef], [ben_ubigeo], [ben_orgSoc], " & _
"[user_id], [user_fechahora], [user_editado], [user_obs]) " & _
"VALUES(@prgSoc_id, @ben_apPat, @ben_apMat, @ben_nom, @ben_sex, @ben_fecNac, @ben_tipdoc, " & _
"@ben_numdoc, @ben_dir, @ben_dirRef, @ben_ubigeo, @ben_orgSoc, @user_id, " & _
"@user_fechahora, @user_editado, @user_obs)", cn)
daBeneficiarios.InsertCommand = cmdInsercionB
With daBeneficiarios.InsertCommand.Parameters
.Add(New SqlParameter("@prgSoc_id", SqlDbType.Int))
.Add(New SqlParameter("@ben_apPat", SqlDbType.NVarChar))
.Add(New SqlParameter("@ben_apMat", SqlDbType.NVarChar))
.Add(New SqlParameter("@ben_nom", SqlDbType.NVarChar))
.Add(New SqlParameter("@ben_sex", SqlDbType.Bit))
.Add(New SqlParameter("@ben_fecNac", SqlDbType.DateTime))
.Add(New SqlParameter("@ben_tipdoc", SqlDbType.Char))
.Add(New SqlParameter("@ben_numdoc", SqlDbType.Char))
.Add(New SqlParameter("@ben_dir", SqlDbType.NVarChar))
.Add(New SqlParameter("@ben_dirRef", SqlDbType.NVarChar))
.Add(New SqlParameter("@ben_ubigeo", SqlDbType.Char))
.Add(New SqlParameter("@ben_orgSoc", SqlDbType.NVarChar))
.Add(New SqlParameter("@user_id", SqlDbType.Char))
.Add(New SqlParameter("@user_fechahora", SqlDbType.DateTime))
.Add(New SqlParameter("@user_editado", SqlDbType.Int))
.Add(New SqlParameter("@user_obs", SqlDbType.NVarChar))
End With

'E
IDAsuntoFechaNick 
41322 Re: Nuevo registro en un DatagridView (Resp: 41314)14/05/08 11:37ogerman   
¿ Asignastes las propiedades InsertCommand, UpdateCommand y DeleteCommand ademas del SelectCommand del SqlDataAdapter ?

Pregunto por las dudas porque en tu código no alcanza a salir.

Saludos
Germán


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41323 Re: Nuevo registro en un DatagridView (Resp: 41314)14/05/08 11:41ogerman   
Perdón, si sale el InsertCommand, lo que no salen son los otros, y del InsertCommand no sale que la propiedad CommandType sea StoredProcedure

Saludos
Germán


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41354 Re: Nuevo registro en un DatagridView (Resp: 41323)15/05/08 01:17evegalle   
Bueno, gracias Germán por la prontitud. Por razones de espacio no he puesto todo. En otro formulario, donde no empleo datagrid sino otros controles como textos, checks, etc, todo funciona muy bien, te agrego la función que implementé para ese caso en concreto:

Public Function InsertaUsuario(ByVal a1 As String, ByVal a2 As String, ByVal a3 As String, ByVal a4 As String, ByVal a5 As String, ByVal a6 As String, ByVal a7 As String) As Integer
With daUsuario.InsertCommand
.Parameters("@ApPat").Value = a1
.Parameters("@ApMat").Value = a2
.Parameters("@Nom").Value = a3
.Parameters("@Carg").Value = a4
.Parameters("@Pass").Value = a5
.Parameters("@Create").Value = a6
.Parameters("@LastAcc").Value = a7
End With
cn.Open()
Return daUsuario.InsertCommand.ExecuteNonQuery()
cn.Close()
End Function

Ahora, mi problema concreto es que al ingresar un nuevo registro en un datagrid o en un datagridview, no se "actualiza" en la tabla de la base de datos, puede uno digitar varios registros, pero al cerrar el formulario éstos se volatilizan ya que al reabrirlo ya no están.

Alien .Net


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41355 Re: Nuevo registro en un DatagridView (Resp: 41354)15/05/08 01:19evegalle   
PD. Extraño VB 6 triste

Alien .Net


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41356 Re: Nuevo registro en un DatagridView (Resp: 41354)15/05/08 01:54ogerman   
A ver:
Te digo lo que yo se a ver si te ayuda.
Para llenar la grilla utilizas la propiedad datasource proveniente de un dataset que llenastes con el metodo fill de un dataadapter. Este dataadapter tiene cuatro comandos: select que es el que utiliza para obtener los datos y los comandos para insert, update y delete. Tienes que inicializar esos comandos correctamente para que la grilla te haga todo de manera "automática". Para confirmar los datos en la base tienes que invocar al metodo update del objeto dataset que utilizas en la propiedad datasource de la grilla.

Saludos
Germán


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41358 Re: Nuevo registro en un DatagridView (Resp: 41356)15/05/08 02:48evegalle   
Ok. Gracias. Te cuento que prepare otro form maestro detalle e implementé un origen de datos en el Explorador de Servidores, conexion, verifique la relación en el dataset, ok. Luego dragdrop a la parte "Maestro" (cuadros de texto, básicamente) y luego a la parte "Detalle" (Datagridview), Luego, para que funcione la "relación" modifico la propiedad DataSource de la grilla para generar un "BindingSource". Ejecuto y trabaja bien.
Agrego un nuevo registro a la parte detalle (en el datagridview), incluso pulso el botón "Guardar", pero ocurre igual, pierdo datos al reiniciar el formulario. El código? bueno, el diseñador lo escribió así:
------------------------------------------------------------------------------------------------
Public Class frmBenef
Private Sub A_ProgSocialBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles A_ProgSocialBindingNavigatorSaveItem.Click
Me.Validate()
Me.A_ProgSocialBindingSource.EndEdit()
'NATURALMENTE, GERMAN, TE REFIERES A ESTA LINEA, pero nada, no actualiza. Qué me falta?
Me.A_ProgSocialTableAdapter.Update(Me.ASocialDS.a_ProgSocial)
End Sub

Private Sub frmBenef_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'TODO: esta línea de código carga datos en la tabla 'ASocialDS.a_Beneficiarios'
Me.A_BeneficiariosTableAdapter.Fill(Me.ASocialDS.a_Beneficiarios)
'TODO: esta línea de código carga datos en la tabla 'ASocialDS.a_ProgSocial'
Me.A_ProgSocialTableAdapter.Fill(Me.ASocialDS.a_ProgSocial)
End Sub
End Class
---------------------------------------------------------------------------------------------

NATURALMENTE, GERMAN, TE REFIERES A ESTA LINEA:
Me.A_ProgSocialTableAdapter.Update(Me.ASocialDS.a_ProgSocial)
pero nada, no actualiza. Qué me falta?

Bueno, tengo un par de ideas, veré que hago y te comento el resultado. Ok? Gracias por tu ayuda. Te cuento, he buscado en los libros que tengo y nada, creo que voy a realizar un "estudio" profundo del datagridview y/o datagrid, opino que es un control un tanto "misterioso", pero que en realidad es solo de agarrarle el truco, entiendo claro que este mi caso o problema, no es responsabilidad de la grilla, pero... rie
Ojalá y sigas en línea, jeje. Saludos desde Arequipa, Perú.


Alien .Net


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41359 Re: Nuevo registro en un DatagridView (Resp: 41358)15/05/08 02:51evegalle   
OOOOPPPPPSSS
Lo siento, no advertí este mensaje,
20/Oct/2006
Repetimos: ya que de vez en cuando es bueno que sepas que cosas te facilitarán las respuestas:
-No repitas mensajes,
-Intenta escribir un asunto adecuado a tu duda,
-No personalices (no indiques el nombre de quien quieres que responda),
-Explica bien tu duda, ten en cuenta que el que lee no puede leer tu mente y necesita saber todo lo que tu sabes para poder ayudarte.
Gracias.

mil disculpas...

Alien .Net


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2026  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 09/06/2026 14:51:27 GMT