Page 1 of 1

Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Wed Jun 20, 2018 3:39 pm
by armando.lagunas
Estimados Colegas:

Necesito crear tabla dinámica desde fivewin directamente con OLE o con alguna clase ya creada con anterioridad, busqué en los foros y hablan de la clase texcel ( texcelscript ), pero los enlaces ya no están disponibles, necesito enganchar el ODBC creado en windows que apunta al servidor de SQL, en donde se encuentra la vista que genera las columnas necesarias.

todo funciona ok, desde el excel directo, siguiendo los pasos que el mismo excel realiza para conectarse al ODBC y seleccionar la vista y decirle que es tabla dimanica, pero la verdad necesito que si existe alguna función o procedimiento que lo haga directamente desde fivewin.

Saludos.

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Wed Jun 20, 2018 6:56 pm
by karinha

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Tue Jun 26, 2018 12:20 pm
by armando.lagunas
Ejemplo funcional probado con excel 2013, base de datos sql server 2012 express

como se usa:

Code: Select all


STATIC FUNCTION TablaDinamica()
LOCAL Conn, cSql

Conn := "OLEDB;Provider=SQLOLEDB;Data Source=SERVER\SQLEXPRESS;Initial Catalog=VIKING_SYSTEM;User Id='user';Password='admin';"
cSql := "SELECT * FROM dbo.PRUEBA"    

// "prueba" es una vista construida específicamente con lo que quiero mostrar en la tabla dinámica con _ y con nombres entendibles para el usuario de excel

ExcelDinamicConstructorSql( Conn, cSql )

return nil

 
funcion donde se construye:

Code: Select all



FUNCTION ExcelDinamicConstructorSql( cConnStr, cQuery )
 LOCAL oExcel, oWorkbook, oPivotCache, xWin, oTargetRange, oTargetSheet, oPivot

  oExcel    :=    CreateObject( "excel.application" )
                   oExcel:DisplayAlerts      := .F.
                   oExcel:ScreenUpdating     := .F.
 
                  oWorkbook       := oExcel:Workbooks:Add()
                  oTargetSheet    := oWorkbook:Get( 'ActiveSheet' )
                  oTargetRange    := oTargetSheet:range("A4")
                  
                                     oTargetSheet:Cells:Font:Name := "Roboto Cn"
                                     oTargetSheet:Cells:Font:Size := 12
                                     oTargetSheet:Name            := "Tabla Dinámica"

                  oPivotCache     := oWorkbook:PivotCaches:Add(2)

                                     oPivotCache:Connection  := cConnStr
                                     oPivotCache:Commandtext := cQuery

                                     oPivotCache:CreatePivotTable( oTargetRange, "Tabla Dinámica Pruebas" )


      oTargetSheet:Cells( 4, 1 ):Select()
      xWin                      := oExcel:ActiveWindow
      oExcel:Visible            := .T.
      oExcel:DisplayAlerts      := .T.
      oExcel:ScreenUpdating     := .T.

      ShowWindow( oExcel:hWnd, 3 )
      BringWindowToTop( oExcel:hWnd )

 RETURN NIL

 
Resultado:

Image

Acepto sugerencias de mis colegas, y espero de que le sea de utilidad.

Saludos!

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Tue Jul 03, 2018 12:22 pm
by armando.lagunas
en la cita anterior es como me funciona correctamente

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Tue Jul 03, 2018 4:26 pm
by cnavarro
Armando, como siempre, ofreciendo "detalles" de calidad

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Thu Dec 03, 2020 7:14 pm
by artu01
armando.lagunas wrote:Ejemplo funcional probado con excel 2013, base de datos sql server 2012 express

como se usa:

Code: Select all


STATIC FUNCTION TablaDinamica()
LOCAL Conn, cSql

Conn := "OLEDB;Provider=SQLOLEDB;Data Source=SERVER\SQLEXPRESS;Initial Catalog=VIKING_SYSTEM;User Id='user';Password='admin';"
cSql := "SELECT * FROM dbo.PRUEBA"    

// "prueba" es una vista construida específicamente con lo que quiero mostrar en la tabla dinámica con _ y con nombres entendibles para el usuario de excel

ExcelDinamicConstructorSql( Conn, cSql )

return nil

 
funcion donde se construye:

Code: Select all



FUNCTION ExcelDinamicConstructorSql( cConnStr, cQuery )
 LOCAL oExcel, oWorkbook, oPivotCache, xWin, oTargetRange, oTargetSheet, oPivot

  oExcel    :=    CreateObject( "excel.application" )
                   oExcel:DisplayAlerts      := .F.
                   oExcel:ScreenUpdating     := .F.
 
                  oWorkbook       := oExcel:Workbooks:Add()
                  oTargetSheet    := oWorkbook:Get( 'ActiveSheet' )
                  oTargetRange    := oTargetSheet:range("A4")
                  
                                     oTargetSheet:Cells:Font:Name := "Roboto Cn"
                                     oTargetSheet:Cells:Font:Size := 12
                                     oTargetSheet:Name            := "Tabla Dinámica"

                  oPivotCache     := oWorkbook:PivotCaches:Add(2)

                                     oPivotCache:Connection  := cConnStr
                                     oPivotCache:Commandtext := cQuery

                                     oPivotCache:CreatePivotTable( oTargetRange, "Tabla Dinámica Pruebas" )


      oTargetSheet:Cells( 4, 1 ):Select()
      xWin                      := oExcel:ActiveWindow
      oExcel:Visible            := .T.
      oExcel:DisplayAlerts      := .T.
      oExcel:ScreenUpdating     := .T.

      ShowWindow( oExcel:hWnd, 3 )
      BringWindowToTop( oExcel:hWnd )

 RETURN NIL

 
Resultado:

Image

Acepto sugerencias de mis colegas, y espero de que le sea de utilidad.

Saludos!
Armando podrias mostrar el resultado de tu tabla dinamica ya que el enlace a la imagen q subiste ya no funciona, por favor

Gracias

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Wed Feb 03, 2021 3:34 pm
by armando.lagunas
artu01 wrote:
armando.lagunas wrote:Ejemplo funcional probado con excel 2013, base de datos sql server 2012 express

como se usa:

Code: Select all


STATIC FUNCTION TablaDinamica()
LOCAL Conn, cSql

Conn := "OLEDB;Provider=SQLOLEDB;Data Source=SERVER\SQLEXPRESS;Initial Catalog=VIKING_SYSTEM;User Id='user';Password='admin';"
cSql := "SELECT * FROM dbo.PRUEBA"    

// "prueba" es una vista construida específicamente con lo que quiero mostrar en la tabla dinámica con _ y con nombres entendibles para el usuario de excel

ExcelDinamicConstructorSql( Conn, cSql )

return nil

 
funcion donde se construye:

Code: Select all



FUNCTION ExcelDinamicConstructorSql( cConnStr, cQuery )
 LOCAL oExcel, oWorkbook, oPivotCache, xWin, oTargetRange, oTargetSheet, oPivot

  oExcel    :=    CreateObject( "excel.application" )
                   oExcel:DisplayAlerts      := .F.
                   oExcel:ScreenUpdating     := .F.
 
                  oWorkbook       := oExcel:Workbooks:Add()
                  oTargetSheet    := oWorkbook:Get( 'ActiveSheet' )
                  oTargetRange    := oTargetSheet:range("A4")
                  
                                     oTargetSheet:Cells:Font:Name := "Roboto Cn"
                                     oTargetSheet:Cells:Font:Size := 12
                                     oTargetSheet:Name            := "Tabla Dinámica"

                  oPivotCache     := oWorkbook:PivotCaches:Add(2)

                                     oPivotCache:Connection  := cConnStr
                                     oPivotCache:Commandtext := cQuery

                                     oPivotCache:CreatePivotTable( oTargetRange, "Tabla Dinámica Pruebas" )


      oTargetSheet:Cells( 4, 1 ):Select()
      xWin                      := oExcel:ActiveWindow
      oExcel:Visible            := .T.
      oExcel:DisplayAlerts      := .T.
      oExcel:ScreenUpdating     := .T.

      ShowWindow( oExcel:hWnd, 3 )
      BringWindowToTop( oExcel:hWnd )

 RETURN NIL

 
Resultado:

Image

Acepto sugerencias de mis colegas, y espero de que le sea de utilidad.

Saludos!
Armando podrias mostrar el resultado de tu tabla dinamica ya que el enlace a la imagen q subiste ya no funciona, por favor

Gracias

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Sat Feb 20, 2021 2:32 am
by artu01
armando.lagunas wrote:
artu01 wrote:
armando.lagunas wrote:Ejemplo funcional probado con excel 2013, base de datos sql server 2012 express

como se usa:

Code: Select all


STATIC FUNCTION TablaDinamica()
LOCAL Conn, cSql

Conn := "OLEDB;Provider=SQLOLEDB;Data Source=SERVER\SQLEXPRESS;Initial Catalog=VIKING_SYSTEM;User Id='user';Password='admin';"
cSql := "SELECT * FROM dbo.PRUEBA"    

// "prueba" es una vista construida específicamente con lo que quiero mostrar en la tabla dinámica con _ y con nombres entendibles para el usuario de excel

ExcelDinamicConstructorSql( Conn, cSql )

return nil

 
funcion donde se construye:

Code: Select all



FUNCTION ExcelDinamicConstructorSql( cConnStr, cQuery )
 LOCAL oExcel, oWorkbook, oPivotCache, xWin, oTargetRange, oTargetSheet, oPivot

  oExcel    :=    CreateObject( "excel.application" )
                   oExcel:DisplayAlerts      := .F.
                   oExcel:ScreenUpdating     := .F.
 
                  oWorkbook       := oExcel:Workbooks:Add()
                  oTargetSheet    := oWorkbook:Get( 'ActiveSheet' )
                  oTargetRange    := oTargetSheet:range("A4")
                  
                                     oTargetSheet:Cells:Font:Name := "Roboto Cn"
                                     oTargetSheet:Cells:Font:Size := 12
                                     oTargetSheet:Name            := "Tabla Dinámica"

                  oPivotCache     := oWorkbook:PivotCaches:Add(2)

                                     oPivotCache:Connection  := cConnStr
                                     oPivotCache:Commandtext := cQuery

                                     oPivotCache:CreatePivotTable( oTargetRange, "Tabla Dinámica Pruebas" )


      oTargetSheet:Cells( 4, 1 ):Select()
      xWin                      := oExcel:ActiveWindow
      oExcel:Visible            := .T.
      oExcel:DisplayAlerts      := .T.
      oExcel:ScreenUpdating     := .T.

      ShowWindow( oExcel:hWnd, 3 )
      BringWindowToTop( oExcel:hWnd )

 RETURN NIL

 
Resultado:

Image

Acepto sugerencias de mis colegas, y espero de que le sea de utilidad.

Saludos!
Armando podrias mostrar el resultado de tu tabla dinamica ya que el enlace a la imagen q subiste ya no funciona, por favor

Gracias
Armando gracias por responder y cuales serian los parametros para el llenado de _ : COLUMNAS, FILAS y VALORES
Llenado desde fw sin la intervencion del usuario

Re: Crear una tabla dinamica con un enlace externo desde fivewin

Posted: Mon Feb 22, 2021 1:19 pm
by Compuin
armando.lagunas wrote:
artu01 wrote:
armando.lagunas wrote:Ejemplo funcional probado con excel 2013, base de datos sql server 2012 express

como se usa:

Code: Select all


STATIC FUNCTION TablaDinamica()
LOCAL Conn, cSql

Conn := "OLEDB;Provider=SQLOLEDB;Data Source=SERVER\SQLEXPRESS;Initial Catalog=VIKING_SYSTEM;User Id='user';Password='admin';"
cSql := "SELECT * FROM dbo.PRUEBA"    

// "prueba" es una vista construida específicamente con lo que quiero mostrar en la tabla dinámica con _ y con nombres entendibles para el usuario de excel

ExcelDinamicConstructorSql( Conn, cSql )

return nil

 
funcion donde se construye:

Code: Select all



FUNCTION ExcelDinamicConstructorSql( cConnStr, cQuery )
 LOCAL oExcel, oWorkbook, oPivotCache, xWin, oTargetRange, oTargetSheet, oPivot

  oExcel    :=    CreateObject( "excel.application" )
                   oExcel:DisplayAlerts      := .F.
                   oExcel:ScreenUpdating     := .F.
 
                  oWorkbook       := oExcel:Workbooks:Add()
                  oTargetSheet    := oWorkbook:Get( 'ActiveSheet' )
                  oTargetRange    := oTargetSheet:range("A4")
                  
                                     oTargetSheet:Cells:Font:Name := "Roboto Cn"
                                     oTargetSheet:Cells:Font:Size := 12
                                     oTargetSheet:Name            := "Tabla Dinámica"

                  oPivotCache     := oWorkbook:PivotCaches:Add(2)

                                     oPivotCache:Connection  := cConnStr
                                     oPivotCache:Commandtext := cQuery

                                     oPivotCache:CreatePivotTable( oTargetRange, "Tabla Dinámica Pruebas" )


      oTargetSheet:Cells( 4, 1 ):Select()
      xWin                      := oExcel:ActiveWindow
      oExcel:Visible            := .T.
      oExcel:DisplayAlerts      := .T.
      oExcel:ScreenUpdating     := .T.

      ShowWindow( oExcel:hWnd, 3 )
      BringWindowToTop( oExcel:hWnd )

 RETURN NIL

 
Resultado:

Image

Acepto sugerencias de mis colegas, y espero de que le sea de utilidad.

Saludos!
Armando podrias mostrar el resultado de tu tabla dinamica ya que el enlace a la imagen q subiste ya no funciona, por favor

Gracias

Saludos Armando,

Que clase utilizas para crear el menu de la Izquierda ?