Visual Basic.NET - Como se puede controlar si existe una nueva inserción MySql con dataset.HasChanges()

   
Vista:

Como se puede controlar si existe una nueva inserción MySql con dataset.HasChanges()

Publicado por Alejandro (2 intervenciones) el 08/01/2015 12:48:12
Hola y gracias de antemano, llevo varios años beneficiándome de este foro sin necesidad de preguntar pues todas mis dudas ya se habían planteado antes, pero en esta ocasión no encuentro este caso.

A la hora de guardar los datos de la BBDD compruebo si existen cambios en el DataSet que en este caso contiene dos tablas, ahora necesito comprobar si se realiza una inserción en una de las tablas, este es el código que utilizo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
If ds.HasChanges() Then
         Dim posicion As Integer = bs_albaran.Position
         Dim cmd As MySqlCommandBuilder
 
         cmd = New MySqlCommandBuilder(da_albaran)
         da_albaran.InsertCommand = cmd.GetInsertCommand()
         da_albaran.UpdateCommand = cmd.GetUpdateCommand()
         da_albaran.DeleteCommand = cmd.GetDeleteCommand()
         da_albaran.Update(ds, "Albaran")
 
         cmd = New MySqlCommandBuilder(da_lineas)
         da_lineas.InsertCommand = cmd.GetInsertCommand()
         da_lineas.UpdateCommand = cmd.GetUpdateCommand()
         da_lineas.DeleteCommand = cmd.GetDeleteCommand()
         da_lineas.Update(ds, "Lineas")
 
         ds.AcceptChanges()
         bs_albaran.Position = posicion
         Return True
Else
         Return False
End If


Quiero detectar si el usuario realiza una inserción en la tabla "Lineas", utilizo Visual Studio Ultimate 2012, si veis que el codigo es mejorable se aceptan sugerencias gracias.

Es la primera vez que publico, si no es el sitio o falta algun dato disculpen las molestias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Como se puede controlar si existe una nueva inserción MySql con dataset.HasChanges()

Publicado por Alejandro (2 intervenciones) el 15/01/2015 13:45:01
Vale me respondo yo solo, por si alguien se plantea la misma duda. Para saber las modificaciones realizadas en una tabla dentro de un DataSet, metemos en un DataTable las filas modificadas utilizando DataSet.Tables("Nombre tabla").GetChanges ya solo nos queda recorrer el DataTable e ir comprobando si en cada fila se ha insertado, eliminado o modificado.

Tenemos dos tablas 'Albaran' y 'Lineas' que son las lineas del albaran, con este codigo busco las modificaciones realizadas en lineas y posteriormente guardo todos los cambios:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
If ds.HasChanges() Then
       Dim tabla As DataTable = Datos.DS.Tables("Lineas").GetChanges
       If tabla.Rows.Count > 0 Then
            For Each row As DataRow In tabla.Rows
                 If row.RowState = DataRowState.Added Then
                       'Sentencia elegida
                 End If
                 If row.RowState = DataRowState.Deleted Then
                       'Sentencia elegida
                 End If
                 If row.RowState = DataRowState.Modified Then
                       'Sentencia elegida
                 End If
            Next
        End If
 
	Dim posicion As Integer = bs_albaran.Position
	Dim cmd As MySqlCommandBuilder
 
	cmd = New MySqlCommandBuilder(da_albaran)
	da_albaran.InsertCommand = cmd.GetInsertCommand()
	da_albaran.UpdateCommand = cmd.GetUpdateCommand()
	da_albaran.DeleteCommand = cmd.GetDeleteCommand()
	da_albaran.Update(ds, "Albaran")
 
	cmd = New MySqlCommandBuilder(da_lineas)
	da_lineas.InsertCommand = cmd.GetInsertCommand()
	da_lineas.UpdateCommand = cmd.GetUpdateCommand()
	da_lineas.DeleteCommand = cmd.GetDeleteCommand()
	da_lineas.Update(ds, "Lineas")
 
	ds.AcceptChanges()
	bs_albaran.Position = posicion
	Return True
Else
	Return False
End If
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar