Access - duda consulta

   
Vista:

duda consulta

Publicado por Isa (8 intervenciones) el 13/03/2008 19:06:40
Hola , Que tal ¿ Disculpen las molestias.
Mi problema es el siguiente:
Tengo una tabla en access, que tiene 6 campos. 4 de ellos tienen datos pero 2 no. Yo quiero añadir datos a esos dos campos restantes. Para ello hago lo siguiente:
WDB.Open ("Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;Data Source=" & App.Path & "BDEjem.mdb")

SQL = "SELECT * FROM informe WHERE id_informe = " & CLng(codigo_informe) & " And dolencia = " & codigo_dolencia & " And tratamiento = " & CLng(codigo_tratamiento)

Set mirecordset = New Recordset
mirecordset.Open SQL, WDB, adOpenDynamic, adLockOptimistic

With mirecordset
.Fields("Seguimiento") = ListView1.ListItems(i).SubItems(5)
.Fields("Observaciones") = ListView1.ListItems(i).SubItems(6)
.Update
End With
WDB.Execute (SQL)

O

'SQL = "UPDATE Informe SET Seguimiento = '" & ListView1.ListItems(i).SubItems(5) & "', Observaciones = '" & ListView1.ListItems(i).SubItems(6) & "' WHERE cod_informe =" & CLng(codigo_informe) And Dolencia = "&codigo_dolencia and tratamiento=" & codigo_tratamiento

He probado con las dos opciones, pero me da el siguiente error: No se han especificado valores para algunos de los parámetros requeridos.
¿Qué podría ser?
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:duda consulta

Publicado por Enrique (1299 intervenciones) el 13/03/2008 20:51:00
Hola Isa:
Suponiento que todo lo anterior sea correcto, o sea, la definición del Recordset (mirecordset) y de la Conexión (WDB) con la Tabla externa (BDEjem.mdb), así como la Consulta SQL esté correctamente construida, me parece que lo que te falta es recorrer las filas del ListView y ver cual de ellas está seleccionada mediante un buble For - Next, para asignar a los campos Seguimiento y Observaciones los valores que correspondan a los SubItems seleccionados, algo así:

With mirecordset
For i = 0 To ListView1.ListCount - 1
If ListView1.Selected(i) = True Then
.Fields("Seguimiento") = ListView1.ListItems(i).SubItems(5)
.Fields("Observaciones") = ListView1.ListItems(i).SubItems(6)
.Update
End If
Next i
End With
' WDB.Execute (SQL) <-- Esto lo quitas. No te hace falta Ejecutar la Consulta, o actualizas mediante Recordset o con una Consulta de actualización, pero no ambas cosas a la vez.

Tambien te aconsejo que antepongas ADODB a Recordset, por si tuvieras marcadas otras Librerías de ADO o de DAO en el Proyecto :
Set mirecordset = New ADODB.Recordset

Prueba a ver, pero no te aseguro nada, porque desconozco otros detalles.

Saludos y Suerte
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:duda consulta

Publicado por Enrique (1299 intervenciones) el 13/03/2008 21:15:47
Isa, prueba mejor con este código, el que te indiqué antes es para los ListBox normales, pero para los ListView cambia un poco. Y el caso es que desde el principio sabía que era un ListView pero me despisté al final:

With mirecordset
For i = 1 To ListView1.ListItems.Count
If ListView1.ListItems(i).Selected = True Then
.Fields("Seguimiento") = ListView1.ListItems(i).SubItems(5)
.Fields("Observaciones") = ListView1.ListItems(i).SubItems(6)
.Update
End If
Next i
End With

Saludos
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