Consulta en Access!

Hola, que tal espero te encuentres bien, saludos.
Podrías apoyarme en mi siguiente problema: tengo una base de datos, en el cual tengo un formulario donde no apunto a ninguna tabla, lo que quiero hacer es mediante programación de visual basic, pueda modificar un registro que solicite (valida si existe en la tabla), pero de que forma puedo hacer que al momento que me muestre los valores pueda hacer cambios y guardar los cambios que haya realizado, tengo la siguiente rutina:
Option Compare Database
Private Sub Bbfolio_AfterUpdate()
If IsNull(Bbfolio.Value) Or Bbfolio = 0 Then
MsgBox "Debe ingresar un número de folio", vbExclamation, "FOLIO NO VALIDO"
Bficha.SetFocus
Bbfolio = ""
Bbfolio.SetFocus
Else
Dim Dbs As Database
Dim Tab1 As Recordset
Dim Bfolio As Integer
Dim X As Integer
Bfolio = Bbfolio.Text
Set Dbs = CurrentDb
Set Tab1 = Dbs.OpenRecordset("Contratos", dbOpenDynaset)
X = 0
If Tab1.EOF Then
X = 0
Else
Tab1.MoveFirst
Do Until Tab1.EOF
Tab1.Edit
If Tab1.Fields("Folio") = Bfolio Then
Tab1.Fields("Bloqueo") = False
Me!Bfecharecepcion = Tab1.Fields("FechaRecepcion")
Me!Bfechadocto = Tab1.Fields("FechaDocto")
Me!Bnumerodocto = Tab1.Fields("NumeroDocto")
Me!Bficha = Tab1.Fields("Ficha")
Me!Bnombre = Tab1.Fields("Nombre")
Me!Bcantservicios = Tab1.Fields("CantServicios")
Me!Bdependencia = Tab1.Fields("Dependencia")
Me!Bregimencontractual = Tab1.Fields("RegimenContractual")
Me!Btipomovimiento = Tab1.Fields("TipoMovimiento")
Me!Bfecha1 = Tab1.Fields("Fecha_Inicio_Modulo")
Me!Bhora1 = Tab1.Fields("Hora_Inicio_Modulo")
Me!Bfecha2 = Tab1.Fields("Fecha_Termino_Modulo")
Me!Bhora2 = Tab1.Fields("Hora_Termino_Modulo")
Me!bfecha3 = Tab1.Fields("Fecha_Inicio_Contratos")
Me!bhora3 = Tab1.Fields("Hora_Inicio_Contratos")
Me!Bfecha4 = Tab1.Fields("Fecha_Termino_Contratos")
Me!Bhora4 = Tab1.Fields("Hora_Termino_Contratos")
Me!Bfecha5 = Tab1.Fields("Fecha_Termino_Nomina")
Me!Bhora5 = Tab1.Fields("Hora_Termino_Nomina")
Bbfolio.SetFocus
Bfecharecepcion.SetFocus
Bbfolio.Enabled = False
X = 1
End If
Tab1.MoveNext
Loop
End If
If X = 0 Then
MsgBox "El folio solicitado no existe en la base de datos", vbExclamation, "FOLIO NO VALIDO"
Bfechadocto.SetFocus
End If
End If
'Call Comando85_Click
End Sub
Private Sub forma()
Tab1.Update
Tab1.Clone
Dbs.Close
End Sub
Private Sub Bbfolio_GotFocus()
Bbfolio.Requery
End Sub
Private Sub Comando84_Click()
DoCmd.Close
End Sub
Private Sub Comando85_Click()
MsgBox "Desea actualizar los datos de este número de folio", vbYesNo, "GUARDAR CAMBIOS"
If vbYesNo = yes Then
Call forma
Else
Tab1.Clone
Dbs.Close
End If
End Sub
Espero me haya explicado y puedas apoyarme, gracias y saludos nuevamente.
Atentamente,
Rogelio Velázquez Fernández
email: [email protected]

1 respuesta

Respuesta
1
Sorry Rogelio pero no he comprendido cual es tu intención. Que quieres mostrar, ¿los valores antes de modificar o los posteriores a la modificación?.-
Saludos, lo que deseo hacer es un formulario de modificaciones a registro, primero que me identifique si existe el número de folio que solicito, después me presente en el formulario los datos del folio y que posteriormente me permita editar para poder modificar datos a un o varios cuadros de texto y por ultimo un botón de comando que me haga actualizar los datos recién introducido y/o modificado. Espero verme explicado
Saludos y gracias por tu atención.
Atentamente,
Rogelio Velásquez Fdez.
e-mail [email protected]
Saludos:
que significa la línea "Set me.datasource = v_sql"
Ya que le pongo y me manda un msg que dice "No se encontró el método o el dato miembro". Disculpa mi ignorancia pero no sé programar.
Atentamente,
Rogelio Velásquez Fdez.
Rogelio: lo que yo haría es establecer el datasource del objeto formulario después de recibido el parámetro de nro de folio.
Seria algo así como particularizar la consulta sobre la cual absamos el formulario. Por ejemplo:
v_sql = "SELECT * FROM TABLA WHERE FOLIO=" & ME.lbl_folio.text & " "
Set me.datasource = v_sql
De esta forma el formulario actual puedes tener todos los controles enlazados que quieras para modificar.
Lo único que para guardar deberás moverte al registro anterior o posterior para que se efectúe el update, ya que no tenemos el control. Sino no hay más alternativa que :
1ro. Obtengas un RS con la misma sqlstring que te dije antes.
2do. Llenes un formaulrio "no enlazado" control por control.
3ro. Hagas la modificaciones sobre los controles.
4to. MAndes un update sobre la tabla con el valor de los controles.-
Listo.-
Gracias y saludos. Muy aceptable Éxito!
Lo que estamos haciendo con esa sentencia es asignándole a tu formulario un nuevo origen de datos. En realidad par ser precisos le asignamos un nuevo conunto de registros que están determinados por el sql string que dice que campos y bajo que criterios traerá.
De esta forma vos tienes en tu formulario solamente él o los registros que te interesan.-
La sentencia correcta en tu caso seria:
Me.RowSource = v_sql
Donde v_sql es lo que te dige en el correo anterior.-

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas