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

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 JC.
21/03/2006 - 14:26 | Informe spam
Hector realice los cambios y quedo de la siguiente manera:
"HAVING EST.DATA Between " & CLng(ActiveSheet.Range("A1")) & " And " &
CLng(ActiveSheet.Range("B2")) & " AND "

pero me da error de Oracle Ora-00932 Tipos de datos inconsistentes.
Las fechas estan en formato dd/mm/aa. Hice algunos cambios para probar pero
me continua dando error.
Me imagino que es lo que tu dices de problemas de fecha, pero como
resolverlo???

JC
"Héctor Miguel" wrote:

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.



Respuesta Responder a este mensaje
#3 Héctor Miguel
22/03/2006 - 02:13 | Informe spam
hola, JC. !

... realice... cambios y quedo de la siguiente manera:
"HAVING EST.DATA Between " & CLng(ActiveSheet.Range("A1")) & " And " & CLng(ActiveSheet.Range("B2")) & " AND "
pero me da error de Oracle Ora-00932 Tipos de datos inconsistentes.
Las fechas estan en formato dd/mm/aa. Hice algunos cambios para probar pero me continua dando error.
Me imagino que es lo que tu dices de problemas de fecha, pero como resolverlo?



[creo que] habra que hacer algunas pruebas, tomando como punto de partida [con relacion a las fechas en oracle] que...

1) oracle [parece que] 'prefiere'...
el formato dd-mmm-aaaa y 'mmm' pudiera ser Ene[ro] o Jan[uary]
el delimitador '#' [en lugar de los apostrofos] p.ej. #01-JAN-2004#

2) puedes comentar algunos detalles adicionales ? [como]...
puedes modificar el formato que 'maneja' la maquinaria que usas para la consulta ?
cual es el formato que 'espera' la base de datos 'recibir' de la consulta ?

3) cual es el tipo de proveedor/servidor que usas en la conexion ? [p.e.]
- si estas usando el proveedor OLE DB de Oracle
-> haz pruebas con el proveedor OLE DB de Misrosoft para Oracle
[segun el formato de fechas que deba ser 'manejado'] -?-

comentas 'como vamos' ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida