Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Update a tabla en access 2000

Estas en el tema de Update a tabla en access 2000 en el foro de Visual Basic clásico en Foros del Web. Saludos a tod@s Veréis, necesito ayuda con un problema que me lleva de cabeza. Estoy intentando que una tabla de la base de datos Access ...
  #1 (permalink)  
Antiguo 15/06/2011, 02:56
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 10 meses
Puntos: 0
Update a tabla en access 2000

Saludos a tod@s

Veréis, necesito ayuda con un problema que me lleva de cabeza. Estoy intentando que una tabla de la base de datos Access se me actualice desde VB6.

He mirado en cientos de páginas y me he quedado en que cuando voy a iniciar la aplicación me sale un mensaje que dice "Información de columna clave insuficiente o incorrecta; demasiadas filas afectadas por la actualización"

Os dejo el código que tengo escrito por si os sirve de ayuda. Lo que pretendo es que el valor "columna" de la BDD aumente en uno.

Gracias adelantadas!

Set rsActualizacion = New Recordset
sqlActualizacion = "select columna FROM VO WHERE PlanningNum = 30"
rsActualizacion.CursorLocation = adUseClient
rsActualizacion.Open sqlActualizacion, db, adOpenDynamic, adLockOptimistic, adCmdText

Do While Not rsActualizacion.EOF()

valorColumnas = rsActualizacion.Fields("columna").Value
valorColumnas = valorColumnas + 1
rsActualizacion("columna") = valorColumnas
rsActualizacion.Update
rsActualizacion.MoveNext

Loop

Loop
  #2 (permalink)  
Antiguo 15/06/2011, 04:38
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Update a tabla en access 2000

Solucionado by my self! (gracias de todos modos a los que os habéis parado a leerlo)

Dejo el código que me ha servido por si alguien lo necesita

Set rsActualizacion = New Recordset
sqlActualizacion = "select columna FROM VO WHERE PlanningNum = 30"
rsActualizacion.CursorLocation = adUseClient
rsActualizacion.Open sqlActualizacion, db

Do While Not rsActualizacion.EOF()

valorColumnas = rsActualizacion.Fields("columna").Value
valorColumnas = valorColumnas + 1
sqlUpdate = "update vo set columna =" & (valorColumnas) & " where planningnum=30"
db.Execute (sqlUpdate)
rsActualizacion.MoveNext

Loop
  #3 (permalink)  
Antiguo 15/06/2011, 10:25
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 2 meses
Puntos: 17
Respuesta: Update a tabla en access 2000

ese código efectivamente te actualiza el valor de la columna que tu kieres, pero.... (porque siempre tiene que haber un pero?) ...

al tenerlo dentro de un ciclo while, el valor de la columna va a tomar en todos los campos el valor del ultimo ciclo, me explico :

rsActualizacion("columna") valorcolumna UPDATE UPDATE2 UPDATE3

30 31 31 32 33

10 11 31 32 33

40 41 31 32 33

entonces al final del ciclo while, actualiza todos tus registros con el valor del ultimo update, cuando el ejercicio nos debe arrijar el valor de la columna +1 para cada registro cierto?, entonces saca el update de tu ciclo while, quedando algo como :

sqlUpdate = "update vo set columna =columna+1 where planningnum=30"
db.Execute (sqlUpdate)

saludos
  #4 (permalink)  
Antiguo 16/06/2011, 04:26
 
Fecha de Ingreso: julio-2010
Mensajes: 18
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Update a tabla en access 2000

Cita:
Iniciado por Kruzado Ver Mensaje
ese código efectivamente te actualiza el valor de la columna que tu kieres, pero.... (porque siempre tiene que haber un pero?) ...

al tenerlo dentro de un ciclo while, el valor de la columna va a tomar en todos los campos el valor del ultimo ciclo, me explico :

rsActualizacion("columna") valorcolumna UPDATE UPDATE2 UPDATE3

30 31 31 32 33

10 11 31 32 33

40 41 31 32 33

entonces al final del ciclo while, actualiza todos tus registros con el valor del ultimo update, cuando el ejercicio nos debe arrijar el valor de la columna +1 para cada registro cierto?, entonces saca el update de tu ciclo while, quedando algo como :

sqlUpdate = "update vo set columna =columna+1 where planningnum=30"
db.Execute (sqlUpdate)

saludos
Muchas gracias por tu respuesta.

Al final lo que hice fue ajustar aun más la consulta sql añadiendo el campo ID, por lo tanto, realiza el UPDATE en la fila que contenga ese identificador.

No se si será la mejor manera pero...a mi me sirve jeje

Etiquetas: sql, update
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 21:26.