Access - !!!URGENTE!!!

 
Vista:

!!!URGENTE!!!

Publicado por Pedrito (20 intervenciones) el 15/09/2008 11:15:18
Hola a todos,

Estoy realizando un programa en Access, por el cual introduzco unos datos de grúas con o sin deficiencias, cuando tienen deficiencias, selecciono las deficiencias, pues he ahí donde tengo el error, que cuando doy a seleccionar una deficiencia me lo hace bien, y me lo añade a una base de datos, pero cuando quito la deficiencia y me lo tiene que borrar me da error.

Esto es lo que he puesto:
Private Sub Est111_1_Click()
Dim rst As DAO.Recordset
If Est111_1.Value <> 0 Then
Set rst = CurrentDb.OpenRecordset("Deficiencias", 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

If Est111_1.Value = 0 Then
Set rst = CurrentDb.OpenRecordset("Select * From Deficiencias Where 'Codigo=" & "1.1.1"" And Ninforme=" & Me.Ninforme" And [D_o_M]=" & D""', 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

Gracias,

Pedro
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:!!!URGENTE!!!

Publicado por Enrique (1299 intervenciones) el 15/09/2008 19:26:17
Hola Pedrito:
La línea del Select al abrir el Recordset no la tienes correctamente construida pués tiene muchos fallos y de ahí el error que te marca. Prueba así:

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

He dado por supuesto que el campo Ninforme de la Tabla es Numérico y el campo Ninforme del formulario tiene tambien Formato Numérico en sus Propiedades, caso de que fuera Texto, habría que hacer una pequeña modificación en la línea del Select. Otra cosa, el campo D_o_M en la Tabla debe tener tambien los signos de subrayado separando las letras; si en la Tabla está así: D o M, en la línea del Select lo pones así: [D o M]

Un saludo
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:!!!URGENTE!!!

Publicado por Pedrito (20 intervenciones) el 16/09/2008 18:15:03
Hola Enrique,

Ante todo gracias por tu ayuda, he puesto tus correcciones y me ha dado de nuevo error, yo supongo que es por Ninforme que en la tabla es de texto. Lo que yo quiero hacer con esto es seleccionar una deficiencia y que guarde esa deficiencia y si lo vuelvo a quitar la elimine de la tabla. Te expongo lo que he puesto:

Para añadir en la tabla la deficiencia:

If Est111_1.Value <> 0 Then
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Deficiencias", 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 lo seleccionado:
If Est111_1.Value = 0 Then
Set rst = CurrentDb.OpenRecordset("Select * From Deficiencias Where Codigo='1.1.1' And Ninforme=" & Me.Ninforme & " And [D_o_M]='D'", dbOpenDynaset)
If Not rst.EOF Then
rst.Delete
MsgBox "El registro ha sido eliminado.", vbInformation, "Aviso"
Else
MsgBox "No se ha encontrado ningún registro con los 3 campos coincidentes.", vbCritical, "Aviso"
End If
rst.Close: Set rst = Nothing
End If

Exit_Est111_1_Click:
End Sub

Para señalar la deficiencia lo hago con una casilla de verificación en cada deficiencia. La primera parte la hace bien añadiendo a la base de datos, pero cuando quito la verificación me da error.
Haber si me puedes decir si esta bien, lo que te he expuesto.

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:!!!URGENTE!!!

Publicado por Enrique (1299 intervenciones) el 16/09/2008 19:58:52
Hola Pedro:
Ya te decía ayer que si Ninforme es de Texto había que hacer una pequeña corrección. Aquí tienes la línea del Select modificada para que funcione con ese campo de tipo texto, todo lo demás está bien:

Set rst = CurrentDb.OpenRecordset("Select * From Deficiencias Where Codigo='1.1.1' And Ninforme='" & Me.Ninforme & "' And [D_o_M]='D'", dbOpenDynaset)

Observa que la diferencia está aquí:
And Ninforme=' " & Me.Ninforme & " ' And ....
( comilla simples después del signo igual y otra tambien simple de cierre, antes del último "And", pero sin dejar espacios )

Prueba ahora.

Un saludo
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:!!!URGENTE!!!

Publicado por Pedrito (20 intervenciones) el 17/09/2008 18:11:55
Hola Enrique,

Muchas gracias por tu ayuda :). Ha funcionado perfectamente.

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