Recordset.Movelast

mªjose
07 de Marzo del 2004
A ver, defino una consulta, la ejecuto y obtengo lo valores, que pueden ser varios. Quiero irme al ultimo poniendo Recordset.Movelast y me sale el mensaje:
"El conjunto de filas no admite recuperación hacia atrás."

¿A que puede ser debido eso?
Antes de eso tengo
Set Recordset = Comando.Execute
Que me ejecuta una consulta de busqueda.

Un saludo

sdemingo
07 de Marzo del 2004
Hola,

Tampo me hagas mucho caso, pero ¿no deberías abrir el recordset para hacer las consultas?

es decir
dim rs as New adodb.RecordSet
dim strSql as String
strSql = "select..."
rs.Open strSql, conexion, 3, 3

rs.MoveLast

Saludos
sdemingo

entonces si podrás hacer Roc

mªjose
07 de Marzo del 2004
Esta abierto, ya que he realizado al consulta con el command y luego la he igualado al recordset. Aunque me has dado una idea, voy a quitar el command y lo hare directamente con el recordset

matamala
07 de Marzo del 2004
Hola MªJosé, no sé si he entendido bien la pregunta pero si es esto ami me funciona:

Private Sub Command1_Click()
Adodc1.RecordSource = "select *from poblaciones where (provincia like '" & Text1.Text & "')"
Adodc1.Refresh
Adodc1.Recordset.MoveLast
End Sub

mªjose
07 de Marzo del 2004
A ver, esto es lo que tengo:
strConsultaDef = "SELECT REF_NUMERO_ORDEN FROM tblreferenciaorden WHERE REF_POBLACION='" & RefPoblacion & "'"

Comando7.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:escriturasmdbdbdatosescrituras.mdb;Persist Security Info=False"
Comando7.CommandType = adCmdText
Comando7.CommandText = strConsultaDef

Set Recordset7 = Comando7.Execute

RefNumOrden = Recordset7!REF_NUMERO_ORDEN
RefNumOrden = RefNumOrden + 1

Necesito, que cuando la consulta devuelva mas de un valor, pues coja el ultimo. Y poniendo el MoveLast me pone siempre que no puede recorrerse hacia atras. Y el error me sale encima del movelast.

Un saludo

rafa
07 de Marzo del 2004
Hola. Realmente no se muy bien cual es el error, pero por ir analizando:
¿te funciona el movenext y el moveprevious?
¿y el move?

mªjose
07 de Marzo del 2004
el movenext me va bien, y todos los que he probado, menos el movelast. algo muy extraño

rafa
07 de Marzo del 2004
Hola nuevamente.
Estas usando un recordset de tipo Forward-only.
Posiblemente estes usando DAO, yo te aconsejo usar ADO.
Estoy buscando como puedes cambiar el tipo de recordset

mªjose
07 de Marzo del 2004
Trabajo con ADO. Esta declarado al principio de la función.
Dim Recordset7 As ADODB.Recordset
Set Recordset7 = New ADODB.Recordset

Dim Comando7 As ADODB.Command
Set Comando7 = New ADODB.Command

rafa
07 de Marzo del 2004
Perdon, si lo pusiste antes no lo vi.
De todas formas, creo (y vuelvo a pedir disculpas por mi ignorancia si estoy equivocado) que no te es necesario el command. Lo puedes ejecutar directamente en el recordset.
Un saludo

mªjose
07 de Marzo del 2004
Ya, pero no llevo mucho programando y hasta que no coja la practica, hago todo paso a paso como lo he ido aprendiendo.
Otro error que me sale es:
El valor de BOF O EOF es True, o el actual registro se eliminó;la operación solicitada requiere un registro actual.

sdemingo
07 de Marzo del 2004
Has probado sin el command?

mªjose
07 de Marzo del 2004
Sí, y me sale exactamente el mismo error. Lo extraño es que los otros moves me funcionan. He probado hasta con un bucle do while, que llegue hata el final, pero nada, el mismo error que el mover hasta el final