Visual Basic.NET - No se me actualiza tabla SQL desde un dataset.

 
Vista:
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Ignacio (43 intervenciones) el 30/03/2020 04:21:04
Tengo el siguiente procedimiento y no se me actualiza la tabla sql con los datos del dataset. Que me falta?

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
Private Sub Viejas()
 
    Dim Configuracion_conexion As String = "Data Source='" + Session("servidor") +
                                           "';Initial Catalog='solicitudes';Persist Security Info=True;User ID='solicitud';password='xxxxx'"
    'tomo el año de hoy
    Dim anoActual As Integer= Year(Today)
    Dim ano_solicitud As Integer=0
    Dim cadena As String = "Select datos.id, datos.fecha_en_la_que_se_necesita, datos.ejecutada, datos.cancelada  from datos"
    Dim Conexion1 As New SqlConnection(Configuracion_conexion)
    Dim adaptador1 As New SqlDataAdapter(cadena, Conexion1)
    Dim midataset1  As New DataSet()
    midataset1.Clear()
    adaptador1.Fill(midataset1, "datos")
   dim tr as Integer =midataset1.Tables("datos").Rows.Count
    If tr >= 1 Then
        'recorrro dataset buscando solicitudes cumplidas y del año anterior para borrarlas
             For i=1 to tr-1
                ano_solicitud = Year(CDate(midataset1.Tables("datos").Rows(i).item("Fecha_en_la_que_se_necesita")))
                If (ano_solicitud < anoActual And midataset1.Tables("datos").Rows(i).item("Ejecutada").trim = "Si")  _
                or (ano_solicitud < anoActual and midataset1.Tables("datos").Rows(i).item("Cancelada").trim = "Si") Then
                      midataset1.Tables("datos").Rows.RemoveAt(i)
                      tr  =midataset1.Tables("datos").Rows.Count -1
                      i=i-1
                End If
                If i = tr then Exit For
        Next
 
       (EN ESTE PUNTO PUEDO VERIFICAR QUE HAY FILAS QUE SE ME HAN BORRADO DEL DATASET PORQUE HA CUMPLIDO LA CONDICION)
 
       Dim cb As New SqlCommandBuilder(adaptador1)
        adaptador1.Update(midataset1, "datos")
        midataset1.AcceptChanges()
    End If
    Conexion1.Close()
End Sub
(AL FINAL REVISO LA TABLA SQL Y APARECEN LAS FILAS QUE EN EL DATASET SE BORRARON)
NO ME TOMA LOS CAMBIOS

Que estoy haciendo mal?
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Phil Rob (1554 intervenciones) el 30/03/2020 17:41:10
Hola,

Tu codigo con el CommandBuilder parecerme complexo ...

Quizá que es ti que elimina los registros en la cicla con ...midataset1.Tables("datos").Rows.RemoveAt(i) ... ?

Para el caso donde este puede te servir, adjunto un ejemplo de aplicación con CommandBuilder.
La DB es Access y los condigo están OleDB ..., no este es importante, con SQLServer, remplazamos OleDB por SQL en los nombres de las herramientas. La DB Access es en la carpeta. No olvida de cambiar el nombre de la DB en el código porque no será el misma carpeta en tu ordenador.

Espero que esta te ayudara ...
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
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Ignacio (43 intervenciones) el 31/03/2020 02:58:51
Gracias por haber contestado, tome tu codigo y le hice los cambios pertinentes, pero aun no me actualiza la tabla SQL, lo que pretendo es despues de haber eliminado en el dataset las row que no me interesean que me actualice esa tabla, es decir vertir el dataset en la tabla, ahora el sub me quedo asi:
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
38
39
40
41
42
43
44
45
Private Sub Viejas()
        Dim MiConexion As New sqlConnection
        MiConexion.ConnectionString = "Data Source='" + Session("servidor")+
                                      "';Initial Catalog='solicitudes';Persist Security Info=True;User ID='solicitud';password='gases09*'"
        'tomo el año de hoy
        Dim anoActual As Integer= Year(Today)
        Dim ano_solicitud As Integer=0
        'variables para cargar tabla y conexion
        Dim UnaTabla As New DataTable
        dim  midatos as new DataSet
        Dim BS As New BindingSource
        Dim UnComando As New sqlCommand
        Dim MiCommandBuilder As New sqlCommandBuilder
        Dim Consulta As String = "Select *  from datos"
        dim MiAdapter = New sqlDataAdapter(Consulta, MiConexion)
 
        MiAdapter.Fill(UnaTabla)
        MiAdapter.Dispose()
        UnaTabla.TableName = "datos"
 
        MiDatos.Tables.Add(UnaTabla)
        BS.DataSource = UnaTabla
 
        dim tr as Integer =MiDatos.Tables("datos").Rows.Count()
 
        If tr >= 1 Then
            'recorrro dataset buscando solicitudes cumplidas y del año anterior para borrarlas
                 For i=0 to tr-1
                    ano_solicitud = Year(CDate(MiDatos.Tables("datos").Rows(i).item("Fecha_en_la_que_se_necesita")))
                    If (ano_solicitud < anoActual And MiDatos.Tables("datos").Rows(i).item("Ejecutada").trim = "Si")  _
                    or (ano_solicitud < anoActual and MiDatos.Tables("datos").Rows(i).item("Cancelada").trim = "Si") Then
                          MiDatos.Tables("datos").Rows.RemoveAt(I)
                          tr  =MiDatos.Tables("datos").Rows.Count()-1
                          i=i-1
                    End If
                    If i = tr then Exit For
            Next
(hasta aqui todo bien, reviso la cantidad de row que tiene Midatos y elimino las filas, pero...cuando hago el update me deja todo igual, es decir no me actualiza la tabla con los datos del dataset
            MiCommandBuilder.DataAdapter = MiAdapter
             MiAdapter.Update(MiDatos.Tables("datos"))
           MiDatos.AcceptChanges()
            MiAdapter.Dispose()
        End If
        MiConexion.Close()
End Sub
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Phil Rob (1554 intervenciones) el 31/03/2020 11:38:53
Hola,

Por favor, dice me si comprendo bien tu frase : “ … lo que pretendo es despues de haber eliminado en el dataset las row que no me interesean que me actualice esa tabla …”
¿Este significa que los registros eliminados del DataSet no deben ser eliminados de la tabla EN la base de datos?

En este caso, debes llamar el CommandBuilder más tiempos:
Datos agregados en DataSet ===> UpDate
Datos Cambiados en DataSet ===> UpDate
Datos eliminados en DataSet ==NO=> UpDate ==> pero : DataSet.AcceptChange.

Si tengo un poco tiempo en la tarde, haré un proyecto para testar con tu código en un DB SqlServer …

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
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Ignacio (43 intervenciones) el 31/03/2020 14:33:04
No, amigo, todo lo contrario.. respondiendo a la pregunta que me hiciste...
¿Este significa que los registros eliminados del DataSet no deben ser eliminados de la tabla EN la base de datos?

los registros eliminados del dataset TIENEN QUE SER eliminados de la tabla en la base de datos. y ese precisamente es el problema que no me volca el dataset en la tabla
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Phil Rob (1554 intervenciones) el 31/03/2020 22:33:19
Gracia para tu repuesta.
He copiado tu código en mi proyecto de probas y voy testar ... (mañana).
Buena noche
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
Imágen de perfil de Phil Rob
Val: 3.353
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Phil Rob (1554 intervenciones) el 31/03/2020 23:42:18
Hola,

He hecho más rápido que he dicho …

He trabajado con mi DB. Tienes que cambiar la ConnectionString y el nombre de la tabla en mi procedimiento ParametreConnexion() para testar mi proyecto con tu DB.

Deberías tener los mismos resultados que mostrados en la video : https://www.dropbox.com/s/yba9ppvt6s6ffap/Ignacio.mp4?dl=0

Adjunto mi proyecto.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Ignacio
Val: 84
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

No se me actualiza tabla SQL desde un dataset.

Publicado por Ignacio (43 intervenciones) el 01/04/2020 14:49:50
Perfecto, amigo, con tus codigo y algun retoque que hice, me funciono, gracias, usted es muy amable.
Salud y cuidado con el COVID-19, no salgas de casa.
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