Foros del Web » Programación para mayores de 30 ;) » .NET »

UPDATE en formulario de visual.net

Estas en el tema de UPDATE en formulario de visual.net en el foro de .NET en Foros del Web. Buenas a todos estoy realizando una aplicación en visual basic.net (visual studio 2010), la aplicación es básicamente un programa de gestión con una base de ...
  #1 (permalink)  
Antiguo 12/04/2012, 02:59
 
Fecha de Ingreso: marzo-2011
Mensajes: 37
Antigüedad: 13 años, 1 mes
Puntos: 0
UPDATE en formulario de visual.net

Buenas a todos estoy realizando una aplicación en visual basic.net (visual studio 2010), la aplicación es básicamente un programa de gestión con una base de datos bastante sencilla, el caso es que estoy un poco atascado con una sentencia SQL y no sé cómo realizarlo.

Os explico donde estoy atascado así como las tablas de la base de datos y os pongo el código para que lo veáis.
Esta parte del programa consiste en introducir los datos de una encuesta en una tabla mediante un formulario. La encuesta consta de 33 preguntas con 4 posibles respuestas TS, MBS, MBI, TI. En un principio cree una tabla “EncuestasVN” para meter los datos de la siguiente forma:
Fecha: es un campo fecha
Idencuesta: es el número de la encuesta ejemplo: 512410
Y a continuación van el resto de las columnas con las diferentes respuestas de cada pregunta
Ejemplo: Estandar1 (Nombre de la columna): TS - Estandar2: MBS ...

El guardado de esta primera tabla lo hace perfectamente, pero claro estos datos los quiero mostrar en un datagridview, para ello cree otra tabla “ResultadosVN” que tiene las siguientes columnas:
Mes: aquí se introduce el mes y año de cuando se realizo la encuesta ejemplo: enero 2012
IdResultado: este campo corresponde al número de pregunta, es del tipo entero ejemplo: 1
Las columnas TS – MBS – MBI –TI: en este lo que quiero es que se guarde un numero entero, ya que lo que quiero es que cada respuesta de la tabla anterior sea un 1 para ir sumando y sacar unos porcentajes. Es decir en la tabla EncuestasVN en la columna pregunta1 dato introducido MBS pase a la tabla ResultadosVN como 1, para ello hice una sentencia con un UPDATE para que me actualice esta tabla, pero para ello tiene que comprobar que Mes es y que idResultado para ir sumando cada uno de las respuestas de TS, MBS, MBI, TI. Esto es lo que no consigo realizar.
Os pongo un ejemplo de cómo son las tablas y como deberían de quedar una vez se ha introducido la encuesta.
Tabla EncuestasVN:
Columnas: IdEncuesta – Fecha - Estandar1 - Estandar2...
Datos col: 555555 - 29/01/2012 – TS – TI...
Tabla ResultadosVN
Mes – IdResultado – TS – MBS – MB I –TI
Enero 2012 – 1 – 1 – 0 – 0 – 4

Parte del codigo:

Private Sub BtnGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnGuardar.Click


'--------------------------------------- CON ESTO CONSIGO EL MES Y AÑO EN UNA VARIABLE STRING PARA GUARDARLO O COMPARAR EN LA TABLA RESULTADOSVN
Mes = Month(DTPAeEQCvn.Text)
Año = Year(DTPAeEQCvn.Text)
Mes = MonthName(Mes)
Mesaño = Mes + " " + Año
'---------------------------------------

conectarBD()

Dim SQLGuardar As String
SQLGuardar = "insert into EncuestasVN values(@IdEncuesta,@Fecha,@Ruta,@Estandar1,@Estand ar2,@Estandar3,@Estandar4,@Estandar5,@Estandar6,@E standar7,@Estandar8,@Estandar9,@Estandar10,@Estand ar11,@Estandar12,@Estandar13,@Estandar14,@Estandar 15,@Estandar16,@Estandar17,@Estandar18,@Estandar19 ,@Estandar20,@Estandar21,@Estandar22,@Estandar23,@ Estandar24,@Estandar25,@Estandar26,@Estandar27,@Es tandar28,@Estandar29,@Estandar30,@Estandar31,@Esta ndar32,@Estandar33)"

Dim oComando As New OleDbCommand(SQLGuardar, conexion)
oComando.CommandType = CommandType.Text

'----------------------------------------------------------------------CONSULTA PARA GUARDAR LO CONTESTADO EN LA ENCUESTA EN TABLA RESULTADOS
'--------------------------------EL PROBLEMA LO TENGO EN ESTA CONSULTA YA QUE NO SE COMO COMPARAR EL MESAÑO Y EL IDESTANDAR DE CADA COLUMNA PARA QUE
'--------------------------------VAYA SUMANDO CADA RESPUESTA. TAMBIEN ESTA LA POSIBILIDAD DE QUE ESE MESAÑO SEA NUEVO Y NO HAYA SIDO INTRODUCIDO
'--------------------------------POR LO QUE NO SE PODRIA COMPARAR ENTONCES ESO TAMPOCO SE COMO HACERLO

Dim SQLGuardarResul As String
SQLGuardarResul = "UPDATE ResultadosVN SET TC=TC+'" & ContaTC & "',TS=TS+'" & ContaTS & "' WHERE Mes='" & Mesaño & "'"

Dim oComandoResul As New OleDbCommand(SQLGuardarResul, conexion)
oComando.CommandType = CommandType.Text
'-------------------------------------------------------------------------------------------

Dim FechaCompleta As Date

If Me.TxtNumero.Text = "" Then
MessageBox.Show("Introduce un Número de encuesta")
Me.TxtNumero.Focus()
Else
FechaCompleta = DTPAeEQCvn.Text


oComando.Parameters.AddWithValue("@IdEncuesta", TxtNumero.Text)
oComando.Parameters.AddWithValue("@Fecha", FechaCompleta)
oComando.Parameters.AddWithValue("@Ruta", "c:\EncuestasVN\" + TxtNumero.Text + ".pdf") 'Guarda la encuesta y la ruta del pdf

If LstVN1.SelectedIndex > -1 Then
oComando.Parameters.AddWithValue("@Estandar1", LstVN1.Text)
'------------------------------------------ COMPARA LA RESPUESTA DADA EN EL LISTBOX PARA CADA PREGUNTA SIEMPRE Y CUANDO SE HAYA CONTESTADO
ContaTC = 1
oComandoResul.Parameters.AddWithValue("@TC", ContaTC)
Select Case LstVN1.Text
Case "TS"
ContaTS = 1
oComandoResul.Parameters.AddWithValue("@TS", ContaTS)
Case "MBS"
ContaMBS = 1
oComandoResul.Parameters.AddWithValue("@MBS", ContaMBS)
Case "MBI"
ContaMBI = 1
oComandoResul.Parameters.AddWithValue("@MBI", ContaMBI)
Case "TI"
ContaTI = 1
oComandoResul.Parameters.AddWithValue("@TI", ContaTI)
End Select
'----------------------------------------------------------------
Else
oComando.Parameters.AddWithValue("@Estandar1", "")
End If

'--------------------------------------SEGUIRIAN EL RESTO DE PREGUNTAS HASTA UN TOTAL DE 33

oComando.CommandType = CommandType.Text
oComando.ExecuteNonQuery()

'-------------------------------------------------------
oComandoResul.CommandType = CommandType.Text
oComandoResul.ExecuteNonQuery()
'-------------------------------------------------------

conexion.Close()

MessageBox.Show("Se agregó la encuesta correctamente")
LimpiarCajas()
Me.TxtNumero.Focus()
End If
End Sub

Bueno ahí tenéis parte del código, no sé como hacéis cuando copiáis el código viéndose con colores tal cual viene del .net, así que si me podéis decir os lo pondría mas vistoso.

Muchas gracias espero que me podáis ayudar. Un saludo.

Etiquetas: formulario, net, sql, tabla, update, visual
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.