Actualizar tabla con DAO

Buenos días.
Mira tengo una tabla "Tb_Cooperativistas", donde tengo varios campos, como id_cooperativistas, num_coop, nom_coop, ap1_coop, baja, etc...
La cuestión es que tengo que actualizar el campo num_soc (número de socio), ya que al final del año, abra altas y bajas de cooperativistas (socios), entonces si por ejemplo el listado de altas esta así:
Socio nº1 ...
Socio nº2 ...
Socio nº4 ...
Socio nº6 ... Porque los socios nºs 3 y 5 se dieron de baja, al renumerar dicho campo tendrían que quedar de la siguiente forma:
Socio nº1
Socio nº2
Socio nº3 (Antiguo nº4)
Socio nº4 (Antiguo nº6)
Esto lo he conseguido hacer desde un formulario con un botón, al que le puesto el siguiente código:
Private Sub Comando10_Click()
Dim dbManejoWord As DAO.Database
Dim mitabla As DAO.Recordset
Dim Sql As String
Set dbManejoWord = CurrentDb()
Set mitabla = dbManejoWord.OpenRecordset("Tb_Cooperativistas", dbOpenDynaset)
Dim contador As Integer
contador = 1
mitabla.MoveFirst
While Not mitabla.EOF
mitabla.Edit
mitabla.Fields("num_coop") = contador
mitabla.Update
contador = contador + 1
mitabla.MoveNext
Wend
mitabla.Close
Set mitabla = Nothing
Set dbManejoWord = Nothing
Me.Lista8.Requery
End Sub
Y me funciona ok.
La cuestión es que si lo hago así se me actualizan todas las filas de la Tabla "Tb_Cooperativistas". Necesitaría hacerlo de forma que al pulsar el botón, me actualizase los cooperativistas de la cooperativa seleccionada en el formulario y que estén de alta...
¿Cómo puedo conseguir lo que necesito?
Muchas gracias.
AdOC

1 respuesta

Respuesta
1
Tienes varias opciones de hacer lo que quieres... La más fácil, y profesional, es la que te indico:
- Dónde defines la apertura del recordset sustituye esta linea que tienes
Set mitabla = dbManejoWord.OpenRecordset("Tb_Cooperativistas", dbOpenDynaset)
por estas otras
Dim Sentencia As String
Sentencia = "SELECT * FROM Tb_Cooperativistas] WHERE num_coop =" & TuNumeroCooperativa
Set mitabla = dbManejoWord.OpenRecordset(Sentencia, dbOpenDynaset)
(Donde pone TuNumeroCooperativa, en lugar de eso deberás poner el número de la cooperativa que quieras actualizar, o bien el objeto donde introduces ese dato, p.e. TextoCooperativa.Text si es una caja de texto en un formulario)
Espero que con esto soluciones tu problema. Si tienes algún problema o consulta no dudes en volver a contactar conmigo.
Antes de nada GRACIAS POR TU INTERÉS...
Mira he puesto lo siguiente:
Private Sub Comando10_Click()
Dim dbManejoWord As DAO.Database
Dim mitabla As DAO.Recordset
Set dbManejoWord = CurrentDb()
Dim Sentencia As String
Dim contador As Integer
Sentencia = "SELECT * FROM Tb_Cooperativistas WHERE Tb_Cooperativistas.id_cooperativa=" & Forms![FormularioRenumerarBueno]![Lista0]
Set mitabla = dbManejoWord.OpenRecordset(Sentencia, dbOpenDynaset)
contador = 1
mitabla.MoveFirst
While Not mitabla.EOF
mitabla.Edit
mitabla.Fields("num_coop") = contador
mitabla.Update
contador = contador + 1
mitabla.MoveNext
Wend
mitabla.Close
Set mitabla = Nothing
Set dbManejoWord = Nothing
Me.Lista8.Requery
End Sub
Y al darle al botón, me sale el siguiente error:
"Error de sintaxis (falta operador) en la expresión de consulta "Tb_Cooperativistas.id_cooperativa=3P".
El dato de donde coge el nº de cooperativa en el formulario es un cuadro de lista...
Seguro que es una chorrada...
Sigo con ello...
Ya lo he sacado! Al final lo he puesto así:
Sentencia = "SELECT * FROM Tb_Cooperativistas WHERE Tb_Cooperativistas.id_cooperativa= " & "'" & Forms![FormularioRenumerarBueno]![Lista0] & "'"
Es decir me faltaban las comillas...
Muchas gracias por todo.
Seguramente te mande otra duda que no me sale...
Si no doy con la solución te escribo.
Un abrazo.
AdOC.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas