Visual Basic.NET - problemas con sql

 
Vista:
sin imagen de perfil

problemas con sql

Publicado por Jonatan Daniel Pionsi (5 intervenciones) el 06/07/2017 12:48:11
hola como estan tengo este codigo el cual. realiza un insert en 3 tablas diferentes (novedades_clientes; libro_diario; auditoria).. esto andaba por alguna razon ahora no y me estoy volviendo loco. el problema creo que esta que no pasa por el segundo try.. o sea el primer insert lo realiza y se sale. si yo saco el pedazo de codigo del segundo insert referido al "libro_diario" me anda perfecto. lo que me hace pensar que tengo un error en el segundo insert pero no encuentro la solucion. si alguien me ayuda se lo agradeceria saludos! y graciasssssssssss


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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
If (Me.txtentrega.Text <> "") Then
    aux = (txtentrega.Text) * -1
    debe1 = Val(txtentrega.Text)
 
    Dim codcliente As Integer
    Dim fechanove As DateTime
 
    codcliente = txtcodigo.Text
    fechanove = Now.Date
 
    cmd2.CommandType = CommandType.Text
    cmd2.Connection = conn
 
    sql = "insert into novedades_clientes (codcliente, fechanovedad, impnovedad) "
    sql += "values (" & codcliente & ",'" & fechanove & "','" & aux & "')"
 
    cmd2.CommandText = sql
 
    Try
 
        cmd2.ExecuteNonQuery()
        MsgBox("Se actualizo correctamente la cuenta corriente del Cliente", MsgBoxStyle.Information, "Exito")
 
        Dim fec As DateTime
        Dim detalle As String = ""
 
        detalle = "EntregaDeDinero"
        detalle = detalle.ToUpper
        fec = Now.Date
 
        cmd7.CommandType = CommandType.Text
        cmd7.Connection = conn
 
        cmd7.CommandText = "insert into libro_diario (fecha, concepto, detalle, debe, haber) values ('" & fec & "'," & codconcepto22 & ",'" & detalle & "','" & debe1 & "','" & 0 & "')"
 
        MsgBox(cmd7.CommandText)
 
        Try
 
            cmd7.ExecuteNonQuery()
            MsgBox("Se ha generado automaticamente un nuevo Registro de Ingresos/Egresos", MsgBoxStyle.Information, "Exito.!")
 
            Dim fecha As DateTime
            Dim accion As String = ""
            Dim formulario As String = ""
 
            fecha = DateAndTime.Now
            accion = "Dinero a Cuenta"
            formulario = "Entrega a Cuenta Cliente"
 
            cmdaud.CommandType = CommandType.Text
            cmdaud.Connection = conn
 
            'GUARDO LOS CAMBIOS EN LA TABLA AUDITORIA.
            cmdaud.CommandText = "insert into auditoria (aud_codusu, aud_usuario, aud_accion, aud_formulario, aud_fecha)"
            cmdaud.CommandText += "values (" & codigo & ",'" & usuario & "','" & accion & "','" & formulario & "','" & fecha & "')"
 
            Try
                cmdaud.ExecuteNonQuery()
                MsgBox("hech")
            Catch ex As Exception
                errorauditoria()
            End Try
        Catch
            MsgBox("errorlibro")
        End Try
 
            lblayuda4.Visible = False
            lblayuda.Visible = False
            Button3.Visible = True
            btnreiniciar.Visible = False
            btnconfirmar.Visible = False
            Button1.Visible = True
 
            lblcodigo.Visible = False
            lblNombre.Visible = False
            lbldomicilio.Visible = False
            lblsaldo.Visible = False
            lblentrega.Visible = False
 
            txtcodigo.Visible = False
            txtnombre.Visible = False
            txtapellido.Visible = False
            txtdomicilio.Visible = False
            txtnumero.Visible = False
            txtsaldo.Visible = False
            txtentrega.Visible = False
 
            txtcodigo.Text = ""
            txtnombre.Text = ""
            txtdomicilio.Text = ""
            txtsaldo.Text = ""
            txtentrega.Text = ""
            aux = ""
 
            cmbcliente.Enabled = True
            cmbcliente.Select()
        Catch
        End Try
ElseIf (Me.txtentrega.Text = "") Then
        MsgBox("El campo Entrega debe contener algun dato válido.!", MsgBoxStyle.Exclamation, "Atención")
        txtentrega.Focus()
End If
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 melqui
Val: 643
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problemas con sql

Publicado por melqui (242 intervenciones) el 06/07/2017 16:07:50
amigo quieres una opinion?

ese metodo que tu usas realmente te va votar al manicomio, mas pq tu no separas a las tres tablas e unes en una sola atraves de una instruccion de tipo public. y tambien use tu conexion en un metodo separado asi llamas ese metodos para todos los procedimientos.

vea este ejemplo de conectar en modulo

ahora vamos ver


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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
public sub registrar_tabla_novedades_clientes
 
using conectar_banco as sqlconnection='aqui coloca la variavel de conexion
try
 
conectar_banco.open
 
If (Me.txtentrega.Text <> "") Then
aux = (txtentrega.Text) * -1
debe1 = Val(txtentrega.Text)
 
Dim codcliente As Integer
Dim fechanove As DateTime
 
codcliente = txtcodigo.Text
fechanove = Now.Date
 
dim sql as string="INSERT INTO tabla1(columna1,columna2,columna3...etc) VALUES (@columna1,@columna2,@columna3...etc)"
dim cmd as  new sqlcommand(sql,conectarbanco)
cmd.Parameters.Add(New SQLParameter("@columna1",SQLDBType.NVarChar).value=texbox1.text
cmd.Parameters.Add(New SQLParameter("@columna2",SQLDBType.NVarChar).value=texbox2.text
cmd.Parameters.Add(New SQLParameter("@columna3",SQLDBType.NVarChar).value=texbox3.text
cmd.ExecuteNonQuery
MsgBox("Se actualizo correctamente la cuenta corriente del Cliente", MsgBoxStyle.Information, "Exito")
call registrar_tabla_libro_diario
call  registrar_tabla_libro_auditoria
 end if
Catch ex As Exception
MsgBox(ex.message)
finally
conectar_banco.close
End class
 
 
 
 
public sub registrar_tabla_libro_diario
 
using conectar_banco as sqlconnection='aqui coloca la variavel de conexion
try
 
conectar_banco.open
 
If (Me.txtentrega.Text <> "") Then
aux = (txtentrega.Text) * -1
debe1 = Val(txtentrega.Text)
 
Dim codcliente As Integer
Dim fechanove As DateTime
 
codcliente = txtcodigo.Text
fechanove = Now.Date
 
dim sql as string="INSERT INTO tabla2(columna1,columna2,columna3...etc) VALUES (@columna1,@columna2,@columna3...etc)"
dim cmd as  new sqlcommand(sql,conectarbanco)
cmd.Parameters.Add(New SQLParameter("@columna1",SQLDBType.NVarChar).value=texbox1.text
cmd.Parameters.Add(New SQLParameter("@columna2",SQLDBType.NVarChar).value=texbox2.text
cmd.Parameters.Add(New SQLParameter("@columna3",SQLDBType.NVarChar).value=texbox3.text
cmd.ExecuteNonQuery
MsgBox("Se actualizo correctamente la cuenta corriente del Cliente", MsgBoxStyle.Information, "Exito")
 end if
Catch ex As Exception
MsgBox(ex.message)
finally
conectar_banco.close
End class
 
 
 
public sub registrar_tabla_libro_auditoria
 
using conectar_banco as sqlconnection='aqui coloca la variavel de conexion
try
 
conectar_banco.open
 
If (Me.txtentrega.Text <> "") Then
aux = (txtentrega.Text) * -1
debe1 = Val(txtentrega.Text)
 
Dim codcliente As Integer
Dim fechanove As DateTime
 
codcliente = txtcodigo.Text
fechanove = Now.Date
 
dim sql as string="INSERT INTO auditoria(columna1,columna2,columna3...etc) VALUES (@columna1,@columna2,@columna3...etc)"
dim cmd as  new sqlcommand(sql,conectarbanco)
cmd.Parameters.Add(New SQLParameter("@columna1",SQLDBType.NVarChar).value=texbox1.text
cmd.Parameters.Add(New SQLParameter("@columna2",SQLDBType.NVarChar).value=texbox2.text
cmd.Parameters.Add(New SQLParameter("@columna3",SQLDBType.NVarChar).value=texbox3.text
cmd.ExecuteNonQuery
MsgBox("Se ha generado automaticamente un nuevo Registro de Ingresos/Egresos", MsgBoxStyle.Information, "Exito.!")
 end if
Catch ex As Exception
MsgBox(ex.message)
finally
conectar_banco.close
End class


dentro del boton solamente llame el instruccion de registrar_tabla_novedades_clientes

1
2
3
public sub botonregistrar_click
call registrar_tabla_novedades_clientes
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 Wilfredo Patricio Castillo
Val: 1.239
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problemas con sql

Publicado por Wilfredo Patricio Castillo (720 intervenciones) el 06/07/2017 22:22:22
Ambas alternativas tienen problemas.

Que pasa si en una de ellas falla?, cómo quedamos con los datos?, inconsistenes, huérfanos?.

Hay que mejorar eso.

Saludos cordiales,
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 Diego
Val: 605
Bronce
Ha mantenido su posición en Visual Basic.NET (en relación al último mes)
Gráfica de Visual Basic.NET

problemas con sql

Publicado por Diego (190 intervenciones) el 08/07/2017 23:08:13
Hola utiliza dentro del bloque Catch de cada Try un msgbox con la descripcion del error. Asi, no tienes que repensar el problema. Asi...

1
2
3
Catch
Msgbox(err.description)
End Try

Ya que tienes Try, úsalos.
Saludos y +Bytes.
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
sin imagen de perfil

problemas con sql

Publicado por Jonatan Daniel Pionsi (5 intervenciones) el 13/07/2017 12:36:48
hola gracias por responder ! ya lo solucione.. y el error estaba en que le daba un id de libro diario incorrecto! graicias
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
sin imagen de perfil

problemas con sql

Publicado por jonatan daniel (5 intervenciones) el 17/07/2017 19:31:58
hola como estas tu respuesta me sirvio mucho y principalmente que lo que queria guardar no era string tenia que ser integer. de todas maneras el error persiste ya no se si es del mismo lugar pero mira te muestro foto.. y la descripocion del error ..

Consulte el final de este mensaje para obtener más detalles sobre cómo invocar a la depuración
Just-In-Time (JIT) en lugar de a este cuadro de diálogo.

************** Texto de la excepción **************
System.InvalidOperationException: Colección modificada; puede que no se ejecute la operación de enumeración.
en System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
en System.Collections.Generic.List`1.Enumerator.MoveNextRare()
en System.Collections.Generic.List`1.Enumerator.MoveNext()
en Microsoft.VisualBasic.PowerPacks.ShapeCollection.Dispose(Boolean disposing)
en Microsoft.VisualBasic.PowerPacks.ShapeContainer.Dispose(Boolean disposing)
en System.ComponentModel.Component.Dispose()
en System.Windows.Forms.Control.Dispose(Boolean disposing)
en System.Windows.Forms.Form.Dispose(Boolean disposing)
en MH.Ticket2.Dispose(Boolean disposing) en C:\Users\JonatanDaniel\Desktop\Proyecto Facultad\Proyecto Definitivo\MH\MH\Formularios\Ticket2.Designer.vb:línea 13
en System.ComponentModel.Component.Dispose()
en System.Windows.Forms.Form.WmClose(Message& m)
en System.Windows.Forms.Form.WndProc(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
en System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
en System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Ensamblados cargados **************
mscorlib
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll
----------------------------------------
MH
Versión del ensamblado: 1.0.0.0
Versión Win32: 1.0.0.0
Código base: file:///C:/Sistema%20de%20Gesti%C3%B3n%20-%20Soderia%20Michelini%20S.R.L/MH/MH/bin/Debug/MH.exe
----------------------------------------
Microsoft.VisualBasic
Versión del ensamblado: 10.0.0.0
Versión Win32: 12.0.51209.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Data
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
System.Transactions
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll
----------------------------------------
System.EnterpriseServices
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll
----------------------------------------
System.Configuration
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Windows.Forms.resources
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_es_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
System.Numerics
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
mscorlib.resources
Versión del ensamblado: 4.0.0.0
Versión Win32: 4.0.30319.34209 built by: FX452RTMGDR
Código base: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_es_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
Microsoft.Office.Interop.Excel
Versión del ensamblado: 12.0.0.0
Versión Win32: 12.0.4518.1014
Código base: file:///C:/Windows/assembly/GAC/Microsoft.Office.Interop.Excel/12.0.0.0__71e9bce111e9429c/Microsoft.Office.Interop.Excel.dll
----------------------------------------
office
Versión del ensamblado: 12.0.0.0
Versión Win32: 12.0.4518.1014
Código base: file:///C:/Windows/assembly/GAC/office/12.0.0.0__71e9bce111e9429c/office.dll
----------------------------------------
Microsoft.VisualBasic.PowerPacks.Vs
Versión del ensamblado: 10.0.0.0
Versión Win32: 10.0.20911.1
Código base: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic.PowerPacks.Vs/10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.PowerPacks.Vs.dll
----------------------------------------

************** Depuración JIT **************
Para habilitar la depuración Just In Time (JIT), el archivo de configuración de esta
aplicación o equipo (machine.config) debe tener el
valor jitDebugging establecido en la sección system.windows.forms.
La aplicación también se debe compilar con la depuración
habilitada

Por ejemplo:

1
2
3
<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Cuando esté habilitada la depuración JIT, cualquier excepción no controlada
se enviará al depurador JIT registrado en el equipo
en lugar de controlarlo mediante el cuadro de diálogo.


20196801_1500590039986792_1399548507_n
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