Actualizar en Ejecucion DataSet despues de Insertar sin Cerrar la Aplicacion
-
Friday, April 08, 2011 9:13 PM
Hola Buenas Tardes
Quisiera saber si me pueden ayudar
- Tengo una Bases de Datos de Partes de Almacen en SQL SERVER 2005
- Tengo una Aplicacion en Microsoft Visual Basic 2005
- Tengo un DataAdapter declarado en un modulo como publico llamado DAPARTES
- Tengo un DataSet declarado en el modulo antes mencionado como publico llamado DSPARTES
- Quisiera Actualizar el DSPARTES despues de Insertar (o realizasr cualquier otra operacion Editar, Borrar).
Ya que este DSPARTES lo muestro en un DATAGRIDVIEW y unos TEXTBOX (para ir recorriendo y mostrando fila a fila a detalle)
Existe algun comando para actualizar dicho DataSet sin cerrar la aplicacion. Porque al reiniciar la aplicacion el DSPARTES, esta actualizado hasta el ultimo momento.
Para explicarme mejor Ingreso, Edito y Borro sin problemas, pero al mostrar los cambios al usuario, es lo que no puedo hacer.
Gracias por el apoyo !!!
All Replies
-
Friday, April 08, 2011 9:43 PMModerator
Existe algun comando para actualizar dicho DataSet sin cerrar la aplicacion.
solo deberias volver a realziar un Fill() del dataset para que recargue o actualice los datos
con eso es mas que suficiente
ojo esto y ademas volver a asignar el dataset al DataSource del DataGridView par aque muestree los datos
en resumen debes realziar los mismas linea que usas cuandoc argas por primera vez el grid, con eso se actualiza
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marked As Answer by Eduardo PorteschellerMicrosoft Community Contributor, Moderator Monday, April 11, 2011 6:05 PM
-
Friday, April 08, 2011 10:26 PM
Asi es como anteriormente lo tenia y cuiando voy ejectandolo paso a paso, en el DataGridView si me lo muestra actualizado, al momento de recorrerlo manualmente en los textbox no tengo el ultimo cambio realizado.
Y reviso logicamente el contenido del DataSet y no contiene el ultimo cambio despues de llenarlo. Intente con un codigo del DataAdapter.Update(DataSet) y tampoco lo actuliza.
Como veras a continuacion Intento incluso con Try Catch pero como no es error, prosigue, pero simplemente no me lo muestra en los textbox
Private Sub ButtonGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonGuardar.Click CadenaSQL = String.Concat(Fuente, ";", BD, ";", UserBD, ";", _ Password) Select Case intOptionOperacion Case 1 'AGREGAR CamposVacios() If (boolFaltaCampo = False) Then Revision_Part_Repetida() Dim conexion As New SqlClient.SqlConnection(CadenaSQL) Console.WriteLine("Realizando conexion...") conexion.Open() Try Dim CmdAddPartes As SqlCommand = New SqlCommand("sp_AddPartes", conexion) CmdAddPartes.CommandType = CommandType.StoredProcedure CmdAddPartes.Parameters.AddWithValue("@IDPARTE", (UCase(TextBox2.Text))) CmdAddPartes.Parameters.AddWithValue("@DESCRIPCION", (UCase(TextBox3.Text))) CmdAddPartes.Parameters.AddWithValue("@FECHA_CAPTURA", Convert.ToDateTime(DateTimeFechaCapParts.Text)) CmdAddPartes.Parameters.AddWithValue("@CANTMAX", TextBox4.Text) CmdAddPartes.Parameters.AddWithValue("@CANTMIN", TextBox5.Text) CmdAddPartes.Parameters.AddWithValue("@INVENT_INICIAL", TextBox6.Text) CmdAddPartes.Parameters.AddWithValue("@ULTIMO_COSTO", TextBox7.Text) CmdAddPartes.Parameters.AddWithValue("@COSTO_ANT_ULT", TextBox8.Text) CmdAddPartes.Parameters.AddWithValue("@CANT_EXIST", TextBox9.Text) Dim strVigencia As String = ComboBox1.Text strVigencia = UCase(strVigencia) If (strVigencia = "SI") Then CmdAddPartes.Parameters.AddWithValue("@VIGENCIA", "1") Else If (strVigencia = "NO") Then CmdAddPartes.Parameters.AddWithValue("@VIGENCIA", "0") End If End If CmdAddPartes.Parameters.AddWithValue("@PATHFOTO", strPATHFOTO) If (boolIDPartDuplicado = False) Then CmdAddPartes.ExecuteNonQuery() Dim DAPartesGrid As New SqlDataAdapter("SELECT FOLIO, IDPARTE, DESCRIPCION FROM PARTES", conexion) Dim DSPartesGrid As New DataSet("PARTES") Dim DSPartes As New DataSet("PARTES") Dim DAPartes As New SqlClient.SqlDataAdapter("SELECT * FROM PARTES", conexion) <strong> Try DAPartes.Fill(DSPartes, "PARTES") 'Prueba DAPartes.Update(DSPartes.Tables(0)) Catch ex As Exception MsgBox("Error al actualizar el Dataset") End Try </strong> Console.WriteLine("Conexion realizada con exito") MsgBox("Se agrego correctamente la Parte al Catalogo a la Base de Datos de la Empresa.", MsgBoxStyle.OkOnly, "Listo") DataGridViewParts.Enabled = True DAPartesGrid.Fill(DSPartesGrid, "PARTES") DataGridViewParts.DataSource = DSPartes.Tables(0) DataGridViewParts.Update() ptcBoxParts.Image = Nothing DAPartes.Dispose() Bloquea() Else MsgBox("Ya existe un Número de Parte identico. Por favor intenta otro diferente o modifica el existente!!!", MsgBoxStyle.Exclamation, "Número de parte repetido") End If Catch Ex As Exception MessageBox.Show(Ex.Message, "Error: Modulo Guardar una nueva Parte!!!", MessageBoxButtons.OK, MessageBoxIcon.Warning) Finally conexion.Close() conexion.Dispose() Bloquea() DAPartes.Dispose() End Try Else Bloquea() MsgBox("Lo siento, pero hay uno o mas campos vacios. Por favor completalos correctamente.", MsgBoxStyle.Exclamation + MsgBoxStyle.OkOnly, "Solo puedes ingresar Partes con datos completos !!") End If End Select End Sub
Pero gracias de todas formas por la ayuda !!!
-
Saturday, April 09, 2011 12:31 AMModerator
hola
no entendi, porque es que realzias dos SELECT contra la tabla Partes ?
y declaras
Dim DSPartesGrid As New DataSet("PARTES")
Dim DSPartes As New DataSet("PARTES")
por ahi debas quitar del codigo als partes que no deberias ir
lo que veo es que cargas un dataset por una sola tabla, porque no suas un datatable ?
o sea
Dim dtPartes As New DataTable
DAPartesGrid.Fill(dtPartes)
DataGridViewParts.DataSource = dtPartes
veo ademas que haces
DAPartes.Fill(DSPartes, "PARTES") 'Prueba
DAPartes.Update(DSPartes.Tables(0))
cual seria el objetivo del Update() sino has realziado cambio alguno en el DataSet, imagino al actualziacion la has realziado en el stored procedure
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marked As Answer by Eduardo PorteschellerMicrosoft Community Contributor, Moderator Monday, April 11, 2011 6:06 PM
-
Saturday, April 09, 2011 9:34 PM
Bueno la razon de tener dos DataSet es porque originalmente tenia DSPARTESGRID para alimentarmentarme el DataGridView solo con los campos de IDPART y Descripcion. Y el DSPARTES me alimenta los cuadros de texto para mostrar a detalle cada registro.
De la misma forma tengo eventos sobre el DataGridview que al presionar sobre cualquier fila del mismo toma el indice y lo manda a mostrar a detalle en las cajas de texto y viceversa cuando voy recorriendo manualmente en las cajas de texto fila a fila, tambien va recorriendo automaticamente en el DataGridview.
Pero como tenia tenia dudas acerca de que, despues de Insertar no se estuviera actualizando el Dataset DSPARTES, alimente el Datagridview solo para ver logicamente que contenia en ejecucion el DSPARTES
Y mi sorpresa me confundio a un mas en el DataGridView se muestra actualizado, pero al momento de recorrer el DSPARTES con las cajas de texto, NO SE ENCONTRABAN LOS ULTIMOS CAMBIOS, asi fueran nuevos registros, modificaciones o borrar registros, PERO TODO ESTO SOLO EN EJECUCION.
Porque al cerrar y reiniciar el formulario el DSPARTES se encontraba actualizado tanto en las cajas de texto como en el DatagridView..
Estoy muy confundido....
-
Saturday, April 09, 2011 11:16 PM
Para esto debe crear un TableAdapterManager, te pongo un fragmento de codigo para que lo adapte a tu codigo
Public Partial Class ActualizarDataSet Inherits Form Private manager As ColegioDataSetTableAdapters.TableAdapterManager 'Declaracion a nivel de la clase Public Sub New() InitializeComponent() End Sub 'Le trabajo en el lugar que quiero que realizo la actualizacion del DataSet Private Sub asistenciaBindingNavigatorSaveItem_Click(sender As Object, e As EventArgs) ' Lo Configuro manager = New ColegioDataSetTableAdapters.TableAdapterManager() manager.AsistenciaTableAdapter = Me.asistenciaTableAdapter Me.Validate() Me.asistenciaBindingSource.EndEdit() ' Invoco el metodo UpdateAll del manager Me.manager.UpdateAll(Me.colegioDataSet) End Sub Private Sub ActualizarDataSet_Load(sender As Object, e As EventArgs) ' TODO: esta línea de código carga datos en la tabla 'colegioDataSet.Asistencia' Puede moverla o quitarla según sea necesario. Me.asistenciaTableAdapter.Fill(Me.colegioDataSet.Asistencia) End Sub End ClassAngel R. Jimenez G.
Software Development
Santo Domingo
Republica Dominicana
- Marked As Answer by Eduardo PorteschellerMicrosoft Community Contributor, Moderator Monday, April 11, 2011 6:05 PM

