Actualizar datos si no está incluido |
Responder |
Autor | |
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Tema: Actualizar datos si no está incluido Enviado: 24/Febrero/2020 a las 12:50 |
Hola:
Tengo un formulario que lee los datos de una tabla y necesito que si el dato estoy intentando introducir no está en esa tabla se actualice en una segunda tabla. He intentado hacer una consulta de no coincidentes y luego una de actualización pero no me funciona. He intentado esto: Dim MyVar As String Dim MyCheck As String MyVar = Query("Contratos nuevos").Código_contrato MyCheck = IsNull(MyVar) If MyCheck <> True Then: DoCmd.RunSQL SQL Siendo Contratos nuevos la consulta de no coincidentes. ¿Como lo puedo hacer? Muchas gracias
|
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 24/Febrero/2020 a las 12:54 |
Hola,
MyVar = Query("Contratos nuevos").Código_contrato ¿que pretendes con esta instrucción? Un saludo
|
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 24/Febrero/2020 a las 13:11 |
La idea era coger el valor del campo Código_contrato de la consulta "Contratos nuevos".
Aprovecho para darte las gracias por la solución que diste al tema "Formulario de Inicio"que lo usé el otro día y al estar cerrado no pude darlas. Un saludo
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 24/Febrero/2020 a las 13:39 |
Yo si te he entendido bien lo haria con un DLookup. Verificaria si ese dato existe en la tabla, de no existir con una consulta de datos anexados lo meteria en esa segunta tabla .
If me.nombrecampo=DLookup("nombrecampotabla","nombretabla","nombrecampotabla = ' me.nombrecampo'") then Ejecutas consulta End if Algo asi, dependiendo si es texgo o numero, comillas simples o dobles.. |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 24/Febrero/2020 a las 13:44 |
Dejando de lado que esa instrucción no creo que funcione, ese campo pueden ser n valores distintos por lo que deberias recorrer la colección de registros. Partiendo de la base que tu consulta "Contratos nuevos" sea una consulta agrupada de los códigos de contratos nuevos, se trataría de abrir un recordset sobre esa consulta y, en cada registro, lanzar a correspondiente consulta de inserción. Algo así (obviando declaraciones, cierres de recordset y sin, obviamente, las SQL correctas) Set rst = CurrentDb.OpenRecordset("SELECT Código_Contrato FROM TABLA WHERE loquesea GROUP BY Código_Contrato",,dbReadOnly) Do Until rst.EOF CurrentDb.Execute "INSERT INTO.....", dbFailOnError rst.MoveNext Loop |
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 24/Febrero/2020 a las 15:01 |
Gracias.
Lo intentaré a ver que tal me sale. Al ser no coincidentes creo que con que el primer valor no sea nulo sería suficiente para saber que hay al menos un valor que no está incluido.
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 24/Febrero/2020 a las 17:47 |
Buenas.
Pues a mi asi me funciona, con el planteamiento que habia hecho. En el evento antes de actualizar. Private Sub Texto_BeforeUpdate(Cancel As Integer) If Me.Texto = DLookup("Texto", "Tabla1", "Texto= '" & Me.Texto & "'") Then ' Si fuese campo numerico quitariamos las comillas simples MsgBox "Existe" Else MsgBox "NO existe, lo meto en Tabla2" DoCmd.OpenQuery "Consulta1" 'Ejecuto consulta de datos anexados End If End Sub Tengo Tabla1 y Tabla2 Una consulta que anexa el datos a Tabla2 si no esta en en Tabla1 campo Texto,pillando el dato del formulario. La consulta en vista SQL. INSERT INTO Tabla2 ( Texto ) SELECT [Formularios]![frmTabla1]![Texto] AS Expr1; Campo llamado Texto en tabla y formulario frmTabla1 Por lo que entiendo esto es lo que buscas..... Saludos |
|
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Enviado: 24/Febrero/2020 a las 20:53 |
Solo pregunto: if dcount("campo","Tabla", "campo=" & me.cuadrodetexto)< 1 then msgbox "no existe" else msgbox "existe" end if No funcionaria?
|
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
rokoko
Colaborador Unido: 16/Febrero/2008 Localización: Pamplona Estado: Sin conexión Puntos: 3062 |
Enviado: 24/Febrero/2020 a las 21:32 |
Pues yo creo que si, mas sencillo aun.
|
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 03/Marzo/2020 a las 10:54 |
Hola
Gracias por la respuesta. if dcount("campo","Tabla", "campo=" & me.cuadrodetexto)< 1 then msgbox "no existe" else msgbox "existe" end if he intentado ejecutarlo varias veces pero no logro que funcione. Me da la sensación de que en "& me.cuadrodetexto" hay que añadir algo más para que coja el nombre ¿puede ser? |
|
xavi
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Terrassa-BCN Unido: 10/Mayo/2005 Localización: Catalunya |||| Estado: Sin conexión Puntos: 14738 |
Enviado: 03/Marzo/2020 a las 11:04 |
Asumiendo que "campo" es alfanumérico:
if dcount("campo","Tabla", "campo='" & me.cuadrodetexto & "'")< 1 then En rojo los cambios. PD: un dcount se puede hacer de cualquier campo If Dcount("*", .....
|
|
01loko
Colaborador Unido: 17/Agosto/2017 Localización: Santander Estado: Sin conexión Puntos: 807 |
Enviado: 03/Marzo/2020 a las 13:40 |
Xavi, eres un fenomeno... yo mirando y no entendia lo que pasaba
|
|
Recordar de que soy nuevo y estoy aprendiendo.
|
|
Jorge33
Habitual Unido: 09/Abril/2019 Localización: madrid Estado: Sin conexión Puntos: 58 |
Enviado: 06/Abril/2020 a las 10:08 |
Funciona perfectamente.
Muchas gracias a todos. Puede cerrarse el tema
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |