No me actualiza datos Campo Access

Yo tengo dos campos uno llamado Colonia y Otro Barrio en una tabla de Access ambos campos listan nombres de colonias y barrios de mi país.. El problema es que cuando no existe una colonia dentro del listado este me pregunta si quiero agregarla.. Llamando al formulario SBL_Colonia.. Ingreso la colonia o barrio y luego tengo un botón de guarda y salir.. Al apretarlo guarda la información al mismo tiempo que cierra el formulario y me deja nuevamente en la tabla y tranquilamente busco el nombre de la nueva colonia y listo... Pero de allí sigo con el segundo campo BARRIO, pero al listar los nombres no me aparece el nuevo que acabo de registrar me vuelve a preguntar si quiero introducirlo.. Lo que hago actualmente es que le digo que si... Entro al formulario me voy al ultimo registro introducido que lógicamente seria el que acabado de digitar y vuelvo a guardar y actualizar.. Y ahora si se lista mi nueva colonia.. Pero esto crea confusión en los usuarios quisiera que si ya se metió previamente la colonia apareciera ya listada en el segundo campo.. Por favor ayúdenme.. Y sean algo así como sencillos en sus explicaciones en verdad no se visual basic y hago piruetas solo con access..

1 respuesta

Respuesta
1
Lo siento pero no entiendo exactamente que es lo que estás realizando ya que dices que usas eventos de inserción de nuevos regístros en una tabla ("al apretarlo guarda la información al mismo tiempo que cierra el formulario y me deja nuevamente en la tablay..."). Imagino que te estas refiriendo a un formulario de inserción de registros basado en la tabla, no en la tabla en si. Te comento lo que creo entender y como suele hacerse. De antemano te digo que lo habitual es hacerlo usando código, por lo que si deseas que te lo escriba deberás de darme más datos.
En general si tenemos uno o mas campos en una tabla, un formulario con cuadros de lista basados en esos campos, y queremos incorporar nuevos valores en esos campos tecleandolos directamente en la lista, tenemos que comprobar primero como es la estructura de la tabla en la que vamos a introducir ese nuevo registro. Me explico.
Si para dar de alta un registro en esa tabla basta con añadir un nuevo valor en, por ejemplo, el campo Colonia ya que la clave principal es un autonumérico, se puede realizar todo desde código. El código asociado al evento 'Al no estar en la lista' primero te pregunta si quieres añadir el nuevo valor en la tabla, si respondes que sí lo hace directamente sin necesidad de abrir tabla o formulario (no da errores al generar el autonumérico identificador de ese registro en concreto), y actualiza los valores de la lista en el formulario activo manteniendo seleccionado el valor nuevo que acabas de introducir. Es decir, ya tienes dado de alta el nuevo valor que se mantiene en tu lista y tras presionar Intro vas al siguiente campo.
Por el contrario, si para dar de alta un registro necesitas ir a otro formulario por no tener la clave principal como autonumérico o porque se necesiten completar otros datos, lo habitual es abrir el formulario en donde se dan de alta esos nuevos registros, completar los valores requeridos (el ya introducido en la lista que origina todo esto se copia directamente en este formulario para dar altas en un nuevo regístro) y asociar una orden al evento del botón guardar y salir para que actualice las listas que dependan de los registros de la tabla que contiene Colonia y Barrio. Es decir, abres un formulario de altas de esos valores, los das de alta y al salir vuelves a estar en tu formulario de registros con los nuevos valores ya operativos en las listas.
Te copio un ejemplo de código que hace lo que te comentaba en el primer caso.
Basta con que sustituyas los nombre de campos, tablas... por lo que necesites. En este ejemplo tengo una lista de empresas en un cuadro de lista en un formulario. Al teclear en la lista un valor que no existe pregunto si quiere darlo de alta en la tabla en la que se guardan los nombre de las empresas. Si respondes que no, borro el valor introducido y espero uno nuevo. Si respondes que sí, abro un recorset que introduce el nuevo valor en la tabla (en mi caso 'Empresas de Contratas') y como ese valor lo puedo usar en otro campo del mismo formulario (tengo dos listas 'IdEmpresa' e 'IdEmpresaPrincipal' que usan ambos los mismos valores del campo 'NombreEmpresa' de la tabla 'Empresas de Contratas') actualizo los valores de la otra lista para que también me presente como opción el nuevo valor introducido.
===================
Private Sub IdEmpresa_NotInList(NewData As String, Response As Integer)
On Error GoTo Err_IdEmpresa_NotInList
Dim ctl As Control, miRespuesta As Integer, msg As String, estilo, title As String
Dim miBD As Database, miNuevoValor As Recordset
Set ctl = Me!IdEmpresa
title = "Empresa de contratas no registrada"
msg = "La empresa de contratas que acaba de introducir no se encuentra registrada."
msg = msg & vbCrLf & vbLf & "Presione el botón 'Aceptar' si desea darla de alta."
msg = msg & vbCrLf & vbLf & "Presione el botón 'Cancelar' si desea volver a comprobar el listado predefinido."
estilo = vbOKCancel + vbQuestion + vbDefaultButton1
miRespuesta = MsgBox(msg, estilo, title)
If miRespuesta = vbCancel Then
Response = acDataErrContinue
ctl.Undo
Else
Response = acDataErrAdded
Set miBD = CurrentDb
Set miNuevoValor = miBD.OpenRecordset("Empresas de Contratas", dbOpenDynaset)
With miNuevoValor
.AddNew
!NombreEmpresa = NewData
.Update
.Close
End With
Set miBD = Nothing
Me!IdEmpresaPrincipal.Requery
End If
Exit_IdEmpresa_NotInList:
Exit Sub
Err_IdEmpresa_NotInList:
MsgBox Err.Description
Resume Exit_IdEmpresa_NotInList
End Sub
================================
Si necesitas más ayuda como te decía necesitaría mas datos. Puedes contestarme dándome más detalles ya que son necesarios si quieres que te escriba código para ello(estructura de las tablas afectas con sus relaciones, nombre de formulario de registros y de los campos de lista, origen de datos de los cuadros de lista, orden de tabulación en el formulario en el que se encuentran, código de cierre del formulario...) o si lo prefieres puedes enviarme parte de tu base de datos para que pueda verla más detalladamente. Si prefieres enviármela haz lo siguiente: genera una copia de tu aplicación e incluye en ella solo las tablas y formularios implicados en tu pregunta. Compacta el archivo resultante y dejame en las tablas un par de registros de prueba y enviame la copia a [email protected].
Procuraré responderte en cuanto me sea posible.
Cordiales saludos y animo con las piruetas, que así comienzan grandes artistas de todo género.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas