Visual Basic.NET - NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

 
Vista:
Imágen de perfil de CARLOS EDGARDO
Val: 19
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por CARLOS EDGARDO (6 intervenciones) el 10/05/2020 01:41:32
hola, me estoy iniciando en visual basic y trato de agregar un registro a una tabla de una base de datos en sqlserver. La aplicación tiene un formulario principal que llama a otro formulario el cual cargo tres datos numéricos PESOMIN, PESOMAX y TARIFA. El ID_TARIFA lo asigno directamente. En el evento click del boton1 realizo el procedimiento para añadir el registro con los datos cargados. No de me da ningún error. Voy al formulario principal y vuelvo a ingresar al formulario tarifa y el registro se muestra en el datagridview pero cuando salgo de la aplicación y voy a la base de dato la tabla tarifa no tiene el registro añadido.
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
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
    Dim conexion As SqlConnection
    conexion = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=H:\PROGRAMACION\VISUAL BASIC\APPBASCULA\BIN\DEBUG\DATABASE1.MDF;Integrated Security=True")
 
    Dim var_idtarifa As Integer
    Dim var_pesominimo As Integer
    Dim var_pesomaximo As Integer
    Dim var_tarifa As Integer
 
    var_idtarifa += 5
    var_pesominimo = CInt(TextBox1.Text)
    var_pesomaximo = CInt(TextBox2.Text)
    var_tarifa = CInt(TextBox3.Text)
 
    Dim sqll As String = "Insert into Tarifas (ID_TARIFA,PESOMIN,PESOMAX,TARIFA) values(" & var_idtarifa & ", " & var_pesominimo & ", " & var_pesomaximo & ", " & var_tarifa & ")"
    Dim comando As New SqlCommand(sqll, conexion)
 
    Try
        conexion.Open()
        comando.ExecuteNonQuery()
        conexion.Close()
    Catch ex As Exception
        MsgBox(Err.Number & " / " & Err.Description)
    End Try
End Sub
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: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por Phil Rob (728 intervenciones) el 10/05/2020 08:42:18
Hola,

Quizá que el campo ID_TARIFA es en el tipo Numeric Auto Increment. En este caso, no tienes que lo poner en el INSERT.

Si no es la fuente del problema, envias tu fichero DB y testaré.


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 CARLOS EDGARDO
Val: 19
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por CARLOS EDGARDO (6 intervenciones) el 10/05/2020 16:58:23
hola, modifique el código sacando ID_TARIFA, y tambien modifique la base de datos especificando que ID_TARIFA es de autocompletado. (antes no lo era). Igual me sigue haciendo lo mismo, los registros en memoria se agregan cuando cierro la aplicacion no se guardan definitivamente en la TABLA TARIFAS.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
    Dim conexion As SqlConnection
    conexion = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=H:\PROGRAMACION\VISUAL BASIC\APPBASCULA\BIN\DEBUG\DATABASE1.MDF;Integrated Security=True")
 
    Dim var_pesominimo As Integer
    Dim var_pesomaximo As Integer
    Dim var_tarifa As Integer
 
    var_pesominimo = CInt(TextBox1.Text)
    var_pesomaximo = CInt(TextBox2.Text)
    var_tarifa = CInt(TextBox3.Text)
 
    Dim sqll As String = "Insert into Tarifas (PESOMIN,PESOMAX,TARIFA) values(" & var_pesominimo & ", " & var_pesomaximo & ", " & var_tarifa & ")"
    Dim comando As New SqlCommand(sqll, conexion)
 
    Try
        conexion.Open()
        comando.ExecuteNonQuery()
        conexion.Close()
    Catch ex As Exception
        MsgBox(Err.Number & " / " & Err.Description)
    End Try
End Sub
imagen01
imagen02
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: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por Phil Rob (728 intervenciones) el 10/05/2020 18:01:23
Hola,

Tu ultimo código debería funcionar.

Este es mi prueba :
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
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'Dim conexion As SqlConnection
    'conexion = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=H:\PROGRAMACION\VISUAL BASIC\APPBASCULA\BIN\DEBUG\DATABASE1.MDF;Integrated Security=True")
 
    ParametreConnexion()   ' Escribo la cadena de connexion y abro la DB (no es el misma ruta en mi PC)
 
    Dim var_idtarifa As Integer   ' El identificador de la tabla no puede ser escrito en el comando INSERT
    Dim var_pesominimo As Integer
    Dim var_pesomaximo As Integer
    Dim var_tarifa As Integer
 
    var_idtarifa = CInt(TextBox1.Text)
    var_pesominimo = CInt(TextBox2.Text)
    var_pesomaximo = CInt(TextBox3.Text)
    var_tarifa = CInt(TextBox4.Text)
 
    '  Dim sqll As String = "Insert into Tarifas (ID_TARIFA,PESOMIN,PESOMAX,TARIFA) values(" & var_idtarifa & ", " & var_pesominimo & ", " & var_pesomaximo & ", " & var_tarifa & ")"
    Dim sqll As String = "Insert into Tarifas (PESOMIN,PESOMAX,TARIFA) values(" & var_pesominimo & ", " & var_pesomaximo & ", " & var_tarifa & ")"
    Dim comando As New SqlCommand(sqll, MiConexion)
 
    Try
        MiConexion.Open()
        comando.ExecuteNonQuery()
        MiConexion.Close()
    Catch ex As Exception
        MsgBox(Err.Number & " / " & Err.Description)
    End Try
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 CARLOS EDGARDO
Val: 19
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por CARLOS EDGARDO (6 intervenciones) el 11/05/2020 18:50:58
Hola, probe el codigo de ud. pero me sigue fucionando mal. El registro nunca se graba en la base de datos. No entiendo cual es el error.
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: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por Phil Rob (728 intervenciones) el 11/05/2020 19:17:14
No comprendo. Este funciona en mi PC.
Mires la vidéo : https://www.dropbox.com/s/2oqv0yty66nt9ev/INSERT_SQL.mp4?dl=0

Envias me tu proyecto o la parte que trata este comando SQL.

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 CARLOS EDGARDO
Val: 19
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por CARLOS EDGARDO (6 intervenciones) el 13/05/2020 19:34:59
Te envió mi aplicación. En el formulario principal elija opción TARIFAS, dentro del formulario tarifas cargar los tres valores peso minino, peso máximo, importe tarifa luego click en botón guardar. Botón volver y vuelve al formulario principal, si vuelve a entrar a tarifas el registro se va visualizar en el DataGridView, pero no se guarda definitivamente en la Base de dato. Espero su observación, muchas gracias.
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: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por Phil Rob (728 intervenciones) el 14/05/2020 10:42:37
Hola,

Pensaría haber respondido ayer pero me fallo.

Los problemas vienen de la DB integrada (los ficheros xcs, xss, xsd). No puedo te ayudar porque no trabajo de esta manera.

Mire la video : https://www.dropbox.com/s/24qzp2kdfid04qn/Tarifas2.mp4?dl=0

Este es el código que he utilizado para la video :
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Imports System.Data.SqlClient
Public Class formTarif
 
    Dim BS As New BindingSource
 
    Private Sub CargarDGV()
        Dim UnaTabla As New DataTable
        Dim Consulta As String
        Dim MiConexion As SqlConnection
        Dim MiAdapter As SqlDataAdapter
        ' conexion = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=H:\PROGRAMACION\VISUAL BASIC\APPBASCULA\BIN\DEBUG\DATABASE1.MDF;Integrated Security=True")
        MiConexion = New SqlConnection("Data Source=SCX_2018\SQLEXPRESS01;Initial Catalog=D:\TMP\TESTDBCOMMANDBUILDERSQLSERVIGNACIO\DATABASE1.MDF;Integrated Security=True")
 
        Consulta = "SELECT * FROM Tarifas "
 
        MiAdapter = New SqlDataAdapter(Consulta, MiConexion)
 
        MiAdapter.Fill(UnaTabla)
 
        UnaTabla.TableName = "Tarifas"
 
        BS.DataSource = UnaTabla
 
        TarifasBindingNavigator.BindingSource = BS
        Me.TarifasDataGridView.DataSource = BS
 
    End Sub
 
    Private Sub formTarif_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'TODO: esta línea de código carga datos en la tabla 'Database1DataSet.Tarifas'
        ''     Me.TarifasTableAdapter.Fill(Me.Database1DataSet.Tarifas)
        formBascula.Enabled = False
 
        CargarDGV()
 
    End Sub
 
    Private Sub btnTarifasVolver_Click(sender As Object, e As EventArgs) Handles btnTarifasVolver.Click
        formBascula.Enabled = True
        Me.Close()
    End Sub
 
    Private Sub btnGuardar_Click(sender As Object, e As EventArgs) Handles btnGuardar.Click
 
        Dim conexion As SqlConnection
        ' conexion = New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;Initial Catalog=H:\PROGRAMACION\VISUAL BASIC\APPBASCULA\BIN\DEBUG\DATABASE1.MDF;Integrated Security=True")
        conexion = New SqlConnection("Data Source=SCX_2018\SQLEXPRESS01;Initial Catalog=D:\TMP\TESTDBCOMMANDBUILDERSQLSERVIGNACIO\DATABASE1.MDF;Integrated Security=True")
 
        Dim var_pesominimo As Integer
        Dim var_pesomaximo As Integer
        Dim var_tarifa As Integer
 
        var_pesominimo = CInt(TextBox1.Text)
        var_pesomaximo = CInt(TextBox2.Text)
        var_tarifa = CInt(TextBox3.Text)
 
        Dim comando As New SqlCommand("Insert into Tarifas (PESOMIN,PESOMAX,TARIFA) values(" & var_pesominimo & ", " & var_pesomaximo & ", " & var_tarifa & ")", conexion)
 
        Try
            conexion.Open()
            comando.ExecuteNonQuery()
            conexion.Close()
        Catch ex As Exception
            MsgBox(Err.Number & " / " & Err.Description)
        End Try
 
        CargarDGV()
 
    End Sub
 
End Class

Pienso que debes suprimir y empezar la instalación de la DB integrada o (mejor para mi) trabajar con un DB no integrada, como en mi ejemplo.
Veo un problema en estos códigos que para una parte, utilizan la conexión integrada en los parámetros del proyecto, y para otra parte utilizan conexión programada en el código.
No soy informado bien del sistema DB integrada, pero me parece difícil de trabajar bien con dos sistemas diferentes.

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 CARLOS EDGARDO
Val: 19
Ha disminuido su posición en 3 puestos en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por CARLOS EDGARDO (6 intervenciones) el 15/05/2020 18:33:36
Hola, encontre la solucion gracias a su ultimo comentario sobre bases de datos integradas. El problema esta en que las bases integradas de sqlserver en Visual Studio generan copias de la base cada vez que la aplicacion se ejecuta dentro del Visual Studio, por eso es que no logro ver que los registros se guarden. Pero si la aplicacion se ejecuta fuera de visual studio, estas copias no se generan y lo registro si quedan guardados en la tabla. Esto da la pauta que el codigo estaba bien (como uds lo menciono). Ademas para que esto no suceda ejecutando la aplicacion desde visual studio, hay que asignar en la tabla su propiedad Copy to Output Directory = Do not copy. Desde ya muchas gracias por su ayuda. Saludos
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 Phil Rob
Val: 2.796
Oro
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

NO ME GUARDA EL REGISTRO EN LA TABLA SQLSERVER

Publicado por Phil Rob (728 intervenciones) el 15/05/2020 21:30:45
Gracias para el "Feedback".

Hasta la próxima.

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