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

Problema con consulta SQL para actualizar BD's (creo q son las comillas)

Estas en el tema de Problema con consulta SQL para actualizar BD's (creo q son las comillas) en el foro de .NET en Foros del Web. Hola amigos, vaya siento hacer tantas preguntas pero soy una novatilla q no tengo más apoyo que el de internet y esto condiciona q sea ...
  #1 (permalink)  
Antiguo 28/09/2006, 06:22
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 18 años, 8 meses
Puntos: 1
Problema con consulta SQL para actualizar BD's (creo q son las comillas)

Hola amigos,

vaya siento hacer tantas preguntas pero soy una novatilla q no tengo más apoyo que el de internet y esto condiciona q sea algo torpe,

una vez dicho lo cual, sigo con mi problema a la hora de actualizar la Base de Datos sólo q ahora creo q se trata de un problema con las comillas. Lo q pretendo es que actualice cada fila con el valor q tenía anteriormente sumado al de un valor q se introduce en un textbox. Sin la cláusula Where funciona, pero se actualizan todas las filas con el último valor. Así q pretendo con esa condición que se ejecute para la fila actual solamente.

El tema es que ahora me da error, me salen dos según cómo ponga las comillas:

1. No se han especificado valores para algunos de los parámetros requeridos
2. Error de sintaxis (falta operador) en la expresion de consulta "&WHERE nNumero =" 1

Os pego el fragmento de código, a ver si hay suerte y a alguien le suena este problema

Código:
                If IsNumeric(TxtBxPorcentaje.Text) = True Then
                    For fila = 0 To n - 1
                        dr = dt.Rows(fila)
                        OleDbUpdateCommand.Connection = objConn
                        nNumero = dt.Rows(fila)("numero")
                        condicion = (nNumero <> dt.Rows(fila)("numero"))
                        porcentaje2 = nNumero + TxtBxPorcentaje.Text
                        MessageBox.Show("Probemos q numero no es nulo: " & nNumero)
                        '****OleDbUpdateCommand.CommandText = "UPDATE Numeros " & "SET numero = " & porcentaje2 & "WHERE nNumero = " & nNumero
                        '******OleDbUpdateCommand.CommandText = "UPDATE Numeros SET numero = '" & porcentaje2 & "' & WHERE nNumero = " & nNumero
                        OleDbUpdateCommand.CommandText = "UPDATE Numeros SET numero = " & porcentaje2 & " WHERE nNumero = " & nNumero

                        OleDbUpdateCommand.ExecuteNonQuery()
                        '***sNombre = dt.Rows(i)("nombre").ToString
                        '***nNumero = dt.Rows(i)("numero").ToString
                    Next
                Else
Muchas gracias por vuestra ayuda!!!! y de veras q siento las molestias
  #2 (permalink)  
Antiguo 28/09/2006, 07:27
Avatar de freegirl
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: Catalonia
Mensajes: 4.334
Antigüedad: 20 años, 7 meses
Puntos: 156
Nose si tendrá algo que ver, ¿pero por que dejas un espacio entre = y " ?

Tu pones:

Cita:
"UPDATE Numeros SET numero = " & porcentaje2 & " WHERE nNumero = " & nNumero
Pruébalo así:

Cita:
"UPDATE Numeros SET numero =" & porcentaje2 & " WHERE nNumero =" & nNumero
Ya nos dirás.

saludos
  #3 (permalink)  
Antiguo 28/09/2006, 23:07
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 18 años, 8 meses
Puntos: 1
así me sale el error de que no se han especificado valores para algunos de los parámetros requeridos (porcentaje2 no es nulo, q ya lo he comprobado antes)

y quitando el espacio que hay entre las comillas y el where me sale el otro error, el de falta operador...

alguna idea más??? GRACIAS!
  #4 (permalink)  
Antiguo 29/09/2006, 00:44
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 2 meses
Puntos: 1
Hola SuperPinwi,

en principio la consulta está bien y no tiene problemas de comillas (o eso me parece); los espacios que existan dentro del literal junto a los signos de = tampoco deberían dar ningún problema.

Pero viendo un poco la consulta se me ocurre preguntar: ¿El campo que quieres actualizar se llama "numero" o "nNumero"? ¿y el de la cláusula Where, tiene que ser ese "numero"? por lo que veo en tú código nNumero es una variable tuya...

Cita:
Iniciado por SuperPinwi Ver Mensaje
Código:
nNumero = dt.Rows(fila)("numero")
...
OleDbUpdateCommand.CommandText = "UPDATE Numeros SET numero = " & porcentaje2 & " WHERE nNumero = " & nNumero
...
Por si no me explico (que es lo fácil), ¿puede que tenga que ser algo así?

Código:
"UPDATE Numeros SET numero = " & porcentaje2 & " WHERE numero = " & nNumero
  #5 (permalink)  
Antiguo 29/09/2006, 01:05
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 18 años, 8 meses
Puntos: 1
Cita:
Iniciado por Mitico Ver Mensaje
Hola SuperPinwi,

en principio la consulta está bien y no tiene problemas de comillas (o eso me parece); los espacios que existan dentro del literal junto a los signos de = tampoco deberían dar ningún problema.

Pero viendo un poco la consulta se me ocurre preguntar: ¿El campo que quieres actualizar se llama "numero" o "nNumero"? ¿y el de la cláusula Where, tiene que ser ese "numero"? por lo que veo en tú código nNumero es una variable tuya...



Por si no me explico (que es lo fácil), ¿puede que tenga que ser algo así?

Código:
"UPDATE Numeros SET numero = " & porcentaje2 & " WHERE numero = " & nNumero
muchas gracias compañero,
el campo de la base de datos que quiero actualizar se llama numero efectivamente y nNumero es una variable mía q he creado para tener acceso al número almacenado en la fila actual.
así la consulta no da error pero se pone el mismo número en todos los registros de la base de datos, lo que me gustaría es que se actualizara con un valor diferente por cada fila, alguna sugerencia?

mil gracias!!!

Última edición por SuperPinwi; 29/09/2006 a las 01:12
  #6 (permalink)  
Antiguo 29/09/2006, 01:22
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 2 meses
Puntos: 1
Tal como lo tienes, se supone que debería actualizarte cada fila que tenga número = nNumero con el valor porcentaje2.

Si quieres actualizar cada fila con un valor diferente puede que el Where lo tengas que hacer en base a un ID de la tabla y no al campo número.

cualquier duda dime
  #7 (permalink)  
Antiguo 29/09/2006, 01:47
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 18 años, 8 meses
Puntos: 1
Cita:
Iniciado por Mitico Ver Mensaje
Tal como lo tienes, se supone que debería actualizarte cada fila que tenga número = nNumero con el valor porcentaje2.

Si quieres actualizar cada fila con un valor diferente puede que el Where lo tengas que hacer en base a un ID de la tabla y no al campo número.

cualquier duda dime
tienes razón, al filtrar por el campo identificador lo realiza perfectamente

Estaba ya tan harta que no sabía ni lo que tocaba jejejeje

Un millón de gracias amigo
  #8 (permalink)  
Antiguo 29/09/2006, 02:36
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 18 años, 8 meses
Puntos: 1
tras varias ejecuciones he encontrado algun ligero fallo, tal como q al meter q sume 0 a los registros, le suma 1... o al meter 1 le suma 2... y es curioso porque el dato le coge bien :o puede ser q haya q limpiar alguna variable o así??
  #9 (permalink)  
Antiguo 29/09/2006, 02:55
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 2 meses
Puntos: 1
todo depende de cómo haya quedado el código al final, por lo que veo arriba del todo no me doy cuenta de nada así...
  #10 (permalink)  
Antiguo 29/09/2006, 03:58
Avatar de SuperPinwi  
Fecha de Ingreso: septiembre-2005
Mensajes: 317
Antigüedad: 18 años, 8 meses
Puntos: 1
bueno pongo cómo ha quedado ahora jeje pego sólo lo q es el cuerpo del bucle, la declaración de las variables supongo q no tendrá nada q ver jeje

Código:
If n = 0 Then
                MessageBox.Show("No se ha encontrado ningún registro que coincida con la selección")
            Else
                If IsNumeric(TxtBxPorcentaje.Text) = True Then
                    For fila = 0 To n - 1
                        dr = dt.Rows(fila)
                        OleDbUpdateCommand.Connection = objConn
                        nNumero = dt.Rows(fila)("numero")
                        porcentaje2 = nNumero + TxtBxPorcentaje.Text
                        MessageBox.Show("nNumero:" & nNumero & "porcentaje2: " & porcentaje2)
                        OleDbUpdateCommand.CommandText = "UPDATE Numeros SET numero = " & porcentaje2 & " WHERE ID = " & identificador
                        OleDbUpdateCommand.ExecuteNonQuery()
                        If (identificador <= n) Then
                            identificador = identificador + 1
                        End If
                    Next
                Else
                    MessageBox.Show("El valor que ha introducido para actualizar la base de datos no es válido, recuerde que debe ser de tipo númerico", "Aviso")
                End If
gracias de nuevo por el interés amigo!
  #11 (permalink)  
Antiguo 29/09/2006, 04:32
 
Fecha de Ingreso: marzo-2003
Mensajes: 85
Antigüedad: 21 años, 2 meses
Puntos: 1
En principio a las variables les das un nuevo valor de cada vez, así que no tendrías porque necesidad de limpiar ninguna variable

Cita:
nNumero = dt.Rows(fila)("numero")
porcentaje2 = nNumero + TxtBxPorcentaje.Text
lo único que se me está ocurriendo es que los registros que está actualizando no seas los que piensas, puesto que estás incrementando manualmente el ID y no cogiendo el de la fila.

Me imagino que dt es un DataTable y dr un DataRow, ¿verdad? Si es así prueba esto que incluso puede ser mejor para recorrer los datos:

Código:
For each dr in dt.Rows
     OleDbUpdateCommand.Connection = objConn
     idN = dr("ID")
     nNumero = dr("numero")
     porcentaje2 = nNumero + TxtBxPorcentaje.Text
     MessageBox.Show("nNumero:" & nNumero & "porcentaje2: " & porcentaje2)
     OleDbUpdateCommand.CommandText = "UPDATE Numeros SET numero = " & porcentaje2 & " WHERE ID = " & idN
     OleDbUpdateCommand.ExecuteNonQuery()
Next
donde idN es una nueva variable donde almacenas el ID de cada registro. Asegúrate que entre los datos que lees de la tabla está ese ID para poder acceder a él.

A ver si así solucionas.
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 01:40.