Actualizar Tabla D. con recorset- Hector

20/03/2006 - 16:56 por JC. | Informe spam
Bueno ya hace bastante tiempo Hector me ayudo con esta consulta. Si alguien
tiene alguna sugerencia...
Ahora la pregunta es: Existe alguna forma para que un campo de fecha del
select de actualizacion de la tabla dinamica pueda ser sustituir(incluir,
cambiar) por una variable.
Es decir, el select tiene un campo que es filtrado para que me tome en
cosideracion solo los registros que se encuentre entre (betwee) dos fechas.
Puedo cambiar estas fechas por variables dentro del select? Lo que quiero es
que el usuario incluya las dos fechas en las celdas A1 y A2 para despues
pasarlas al select y de esta forma no sean fijas.

hola, jhidalgo !

... con el recorset capturado me quedaria solo asignarlo al Pivot Cache de la tabla [...]
... sin criar mas hojas y mas tablas dinamimas es solo "cambiar" su banco de datos (recorset).
... da el error : El objeto no acepta la propiedad o el metodo.



'regresando' al ejemplo de John Green [crear una TD desde un RecordSet SIN
'bajar' los datos a excel]
solo 'apuntar' a que se trata de dos acciones 'distintas'...
la primera es 'crear' la tabla [en caso de que no exista]
la segunda es ->modificar y 'refrescar'<- el RecordSet/PivotCache
=>SIN siquiera 'hacer el intento' de crear mas PivotCaches NI PivotTables<=
OJO
estuve 'jugando' con la BD 'Neptuno' intercambiando el RecorSet entre las
tablas 'Clientes' y ' Proveedores'
[obviamente] despues de 'crear' la tabla con la primera macro, la segunda...
ha trabajado 'sin chistar' si cualquier duda o los datos de origen entre los
cambios que haces, fueran diferentes... ¿comentas?
saludos,
hector.

Sub ModificarADO_RS_de_Tabla()
Dim Con As New ADODB.Connection, RS As New ADODB.Recordset, _
Sql As String, PC As PivotCache, PT As PivotTable
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Neptuno.mdb;"
' Sql = "Select * From Clientes"
Sql = "Select * From Proveedores"
Set RS = New ADODB.Recordset
Set RS.ActiveConnection = Con
RS.Open Sql
Set PC = ActiveWorkbook.PivotCaches(1)
Set PC.Recordset = RS
Set PT = ActiveSheet.PivotTables(1)
PT.PivotCache.Refresh
End Sub
 

Leer las respuestas

#1 Héctor Miguel
21/03/2006 - 09:41 | Informe spam
hola, JC. !

... forma para que un campo de fecha del select de actualizacion de la tabla dinamica pueda ser... una variable.
... el select tiene un campo que es filtrado para que me tome... solo los registros que se encuentre entre... dos fechas.
... cambiar estas fechas por variables dentro del select?
... que el usuario incluya las dos fechas en... A1 y A2 para despues pasarlas al select y de esta forma no sean fijas...



serviria si expones como haces [actualmente] la construccion de la cadena de texto para el select [y el 'between'] :))
considera que al 'trabajar' -> con fechas en cadenas de conexion [SQL] -> interviene la configuracion regional de windows <= OJO
[es decir]... si 'A1 y A2' contienen datos-fecha 'reales'... o textos que representan fechas...
-> sera necesario 'convertirlos' a datos-fecha, tomando en consideracion que vba es 'US-Centric' [fechas en formato: mm/dd/aa]

[seguramente] necesitaras 'construir' las partes del 'where' y el 'and' con algo +/- como lo siguiente:
"WHERE Tabla.Fecha =" & CLng(ActiveSheet.Range("a1")) & " AND Tabla.Fecha <=" & CLng(ActiveSheet.Range("b1")) & ";"

ya que si usaras 'construcciones FIJAS de fecha' [basado en configuraciones regionales NO-USA como: dd/mm/aa]...
[p.e.] usando: -> Format(ActiveSheet.Range("a1"), "dd/mm/yy")
[seguramente] obtendras 'errores' si el codigo se ejecuta en un sistema de configuracion regional distinto -?-

comentas algun detalle adicional ?
saludos,
hector.

Preguntas similares