Access - borrar un registro ME URGE MUCHO POR FAVOR

 
Vista:

borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 28/05/2008 18:36:46
Hola a todos,

Os comento el problema que tengo, estoy en un formulario que tengo varias opciones, cuando yo señalo una de la opciones me agrega un registro en una tabla aparte con unos datos (que eso si lo he conseguido hacer), pero cuando quito esa opción deseo que se me elimine el registro que he introducido antes en esa tabla, solamente lo consigo borrar cuando solamente hay un registro, pero si hay mas de uno, se va al primer registro y borrar uno de sus campos. Os expongo como lo he hecho, haber si me podeis ayudar:

Private Sub Est111_1_Click()

If Est111_1.Value <> 0 Then
Dim stLinkCriteria As String
DoCmd.OpenForm "Deficiencias", , , stLinkCriteria
DoCmd.GoToRecord acForm, "Deficiencias", acNewRec
Forms![Deficiencias].[Codigo] = "1.1.1"
Forms![Deficiencias].[Ninforme] = Forms![inspeccion].[Ninforme]
Forms![Deficiencias].[Deficiencia] = "Daños estructurales":
Forms![Deficiencias].[Calificacion] = "M"
Forms![Deficiencias].[D_o_M] = "D"
DoCmd.Save , "Deficiencias"
DoCmd.Close

End If

If Est111_1.Value = 0 Then
DoCmd.OpenForm "Deficiencias", , , stLinkCriteria
DoCmd.FindRecord Ninforme, , True, , True, acAll
If Forms![Deficiencias].[Ninforme] = Forms![Segunda hoja].[Ninforme] And Forms![Deficiencias].[Codigo] = "1.1.1" And Forms![Deficiencias].[D_o_M] = "D" Then DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70:
DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70: DoCmd.SetWarnings False: DoCmd.Save , "Deficiencias": DoCmd.Close:

End If



Exit_Est111_1_Click:
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Enrique (1299 intervenciones) el 28/05/2008 21:04:53
Hola Pedrito:
Si lo que quieres es grabar o eliminar esos datos en una Tabla, no es necesario que lo hagas abriendo previamente un formulario, puedes hacerlo directamente en la Tabla, para ello activa la Referencia de DAO: Microsoft DAO 3.6 Object Library, caso de que no la tengas marcada.

Para crear un nuevo Registro en la Tabla:

If Est111_1.Value <> 0 Then
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Tabla", dbOpenDynaset)
rst.AddNew
rst!Codigo = "1.1.1"
rst!Ninforme = Me.Ninforme
rst!Deficiencia = "Daños estructurales"
rst!Calificacion = "M"
rst![D_o_M] = "D"
rst.Update
rst.Close: Set rst = Nothing
End If

Para Eliminar de la Tabla el registro completo cuyo Campo "NInforme" sea igual al contenido del Campo "NInforme" del formulario activo:

If Est111_1.Value = 0 Then
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Tabla", dbOpenDynaset)
rst FindFirst "Ninforme = " & Me.Ninforme 'Si Ninforme en la tabla es Numérico
If Not rst.NoMatch Then
rst.Delete
rst.Update
rst.Close: Set rst = Nothing
End If

En el caso de que Ninforme sea un campo de Texto, la línea del rst.FindFirst debes cambiarla por:
rst FindFirst "Ninforme =' " & Me.Ninforme & "'"

Los Nombres de campos que van despues de rst! son los campos de la Tabla, que podrían llamarse de forma distinta a como los tienes en el Formulario, cuidado con esto.

Suerte y saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 29/05/2008 08:52:36
Muchas Gracias por tu ayuda, voy a probarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 29/05/2008 09:53:22
Hola Enrique,

El campo Ninforme es Texto, cuando lo he cambiado por lo que me has dicho, me da error. Esta es la línea que tu me has dado.

rst FindFirst "Ninforme =' " & Me.Ninforme & "'"

En que falla esta línea.

Un saludo,

Pedrito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Enrique (1299 intervenciones) el 29/05/2008 13:48:53
Hola Pedrito:
Ya me di cuenta ayer que había un pequeño fallo, pero pensé que lo verías ya que es muy evidente y es que entre rst y FindFirst tiene que haber un punto. Es lo que pasa cuando se escribe de memoria.

rst.FindFirst "Ninforme =' " & Me.Ninforme & "'"

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 29/05/2008 15:46:27
Muchas Gracias por tu ayuda, la verdad es que entiendo poco de Visual Basic, estoy aprendiendo.

Saludos

Pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 29/05/2008 16:18:12
Perdona que sea tan pesao Enrique, he estado probando lo que me has dado, y crear si crea el registro, pero cuando va a borrarlo ni se inmuta, ¿puede ser que en la tabla no tengo puesto clave principal?. Es que para que se pueda borrar el registro tienen que coincidir varias varios campos. Haber si me explico, tendria que coincidir Ninforme, Codigo y D_o_M, te pongo un ejemplo:

Ninforme: 345-34
Codigo: 1.1.1
D_o_M: D

Lo que busco es que busque Ninforme si es igual al del formulario en que estoy, que busque Codigo y si está que busque D_o_M y si las tres coincide, que borre el registro.

Es que creo que me queda esto para terminar con la base de datos, si no me surge ningún otro problema.

Saludo,

Pedro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Enrique (1299 intervenciones) el 29/05/2008 18:10:04
Entonces ¿ quieres decir que el campo Ninforme no es único, o sea, que se puede repetir, por ejemplo 345-34 en varios registros ?. Si este es el caso habría que hacerlo de otra forma, pero si ese campo no se repite, bastaría con buscarlo con FindFirst (buscar primero) y borrarlo, tal como yo te lo he puesto.

En cualquier caso, con el sistema que te indico y en caso de haber más de un registro con el mismo "Ninforme", lo que debería hacer es eliminar solo el primero que se encuentre ¿ has comprobado si esto lo hace o no elimina ninguno ?

Ya me dirás. Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 29/05/2008 18:42:12
Si se repite y también el campo Codigo, es que en esta tabla no hay clave principal. Lo he probado y no me lo borra. Te comento que en la tabla el primer campo es Codigo y despues va Ninforme. Haber si tienes alguna idea para que pueda borrar el registro.

Saludos,

Pedrito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Enrique (1299 intervenciones) el 29/05/2008 20:29:46
Bueno, a ver si ahora te funciona. La declaración del Recordset que te puse dos veces después de cada "If Est111_1.Value", la quitas de ambos sitios y la pones una sola vez al principio, en la Sección de Declaraciones:

Option Compare Database
Dim rst As DAO.Recordset '<----- AQUI
-------------------------------------------------
Aqui pones la parte que crea el registro y a continuación la parte que lo borra, que es esta que sigue ya modificada y probada:

If Est111_1.Value = 0 Then
Set rst = CurrentDb.OpenRecordset("Select * From Tabla1 Where Codigo='" & _
Me.Codigo & "'And Ninforme='" & Me.Ninforme & "'And [D_o_M]='" & _
Me.[D_o_M] & "'", dbOpenDynaset)
If Not rst.EOF Then
rst.Delete
Else
MsgBox "No se ha encontrado ningún registro con los 3 campos coincidentes", vbInformation, "Aviso"
End If
rst.Close: Set rst = Nothing
End If

Cuidado con las comillas doble y simples y si algo falla lo dices.

Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:borrar un registro ME URGE MUCHO POR FAVOR

Publicado por Pedrito (20 intervenciones) el 29/05/2008 21:06:21
Buenas Enrique,

Me da error en Codigo, se podría poner el que yo quisiera que analizara?, si es si, que es lo que tendría que poner.

Saludos,

Pedrito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar