Saltar al contenido

Consultar desde excel el último registro campo llave en access


Recommended Posts

publicado

Hola amigos, por acá con una dificultad para mi.

Por favor si me pudieran ayudar se les voy a agradecer muchísimo.

He intentado con este código, pero me traslada toda la tabla. Si alguien me puede echar una manito para mejorar la consulta, la cual solo quiero que me transfiera el "último" registro del campo llave de acces a la Hoja2 Celda B5 y no a la Hoja 1 como lo hace ahora

Sub escribirexcel()
Dim cs As String
Dim sPath As String
Dim sql As String
Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

sPath = ThisWorkbook.Path & "\datos.accdb"
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath & ";Persist Security Info=False;"

Set cn = New ADODB.Connection
cn.Open cs

Set rs = New ADODB.Recordset
With rs
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
End With

sql = "select * from tabla1"

rs.Open sql, cn

Range("B5").CopyFromRecordset rs

rs.Close
cn.Close
Set rs = Nothing
Set cn = Nothing
End Sub [/CODE]

Mil gracias por cualquier ayuda. SAludos!!!

publicado

.

No existe el concepto de último registro en una base de datos SQL.

Si te refieres al último registro introducido y no tienes alguna columna por la que puedas identificarlo no podrás recuperarlo, por esto es aconsejable colocar una columna con la fecha y hora de registro.

Si lo que quieres es para obtener el valor mas alto, sustituye la sentencia Select:

sql = "Select Max(llave) from tabla1"[/CODE]

.

publicado

Hola:

Seria aconsejable que subas tu archivo de excel y access para poder ayudarte mejor, ya que no sabemos como esta estructurada tu tabla ni que valores tiene tu campo llave.

publicado

Amigos muy agradecido por su aporte, ya solucioné este asunto, por si a alguien le sirve agregué una variable más y tomé un poco de Marco Antonio, así:

  Dim dataSource As String

dataSource = Sheets("Hoja2").[B1]

sPath = ThisWorkbook.Path & "\ProyectoX.accdb"

cs = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source= " & _
dataSource & ";"
.
.
.
sql = "select * from 03INDICE_TEMATICO where CodTema = (select max(CodTema) from 03INDICE_TEMATICO)"

rs.Open sql, cn

Worksheets("Hoja2").Range("B5").CopyFromRecordset rs
[/CODE]

Sin embargo ahora que he habilitado la columna para pasar a access; el código que utilizo para transferir a access me da error de "tipo incorrecto".

Bien, pero para respetar las normas del foro, daré por terminado este hilo, con mis sinceros agradecimientos a Marco Antonio y Elunico22; y aperturaré otro hilo... Saludos!!!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.