como puedo guardar los datos de xbrowse tipo excel

como puedo guardar los datos de xbrowse tipo excel

Postby Garbi » Mon Dec 19, 2016 9:50 am

Hola al final he conseguido hacerlo y funciona perfectamente cada folder con su propio array, pero como no conozco muy bien esta clase me gustaría como saber como guardar los datos en un fichero dbf ejemplo:

(cfichero)->fila := ¿?
(cfichero)->columna := ¿?
(cfichero)->pronfudo := ¿?
(cfichero)->unidades := ¿?
(cfichero)->articulo := ¿?

Estos dos últimos valores los obtendría de un dialog que abriría al pulsar sobre la celda y claro deben quedarse asignados a esa celda.¿Como?

Y una consulta: ¿Como puedo indicar que la primera fila no quiero que se pueda editar o que no se le pueda asignar una funcion?

Muchas Gracias, se que al final me saldra todo OK.

Code: Select all  Expand view

VASCII:= 65
vueltas:= 1
 for i:=1 to vcolumnas+1
     if i = 1 .and. vueltas = 1
         AADD(V_Header," ")
         AADD(V_Colsize,50)
     ELSEif vueltas = 1
         AADD(V_Header,chr(VASCII++))
         AADD(V_Colsize,100)
     elseif vueltas = 2
         AADD(V_Header,chr(65)+chr(VASCII++))
         AADD(V_Colsize,100)
     endif
     if vascii =91
        vueltas:=2
        VASCII:= 65
     endif
next i

vprompt:='"'+chr(65)+"'"+'"'
VASCII:= 66
for i:=2 to vprofundo
    vprompt:=vprompt+","+'"'+chr(vascii++)+"'"+'"'
next i

vfolders:='"FOLDERS"'
FOR i:= 2 to vprofundo
    vfolders:=vfolders+","+'"FOLDERS"'
next i

   aData    := Array( vprofundo )
   aData[ 1 ]  := Array( vfilas, vcolumnas+1 )
   AEval( aData[ 1 ], { |a,k| a[ 1 ] := vfilas - k + 1 } )
   AEval( aData, { |u,k| aData[ k ] := AClone( aData[ 1 ] ) }, 2 )
   oBrw  := Array( vprofundo )

 DEFINE DIALOG oDDATOS RESOURCE "FOLDER_VARIOS" TITLE "Titulo " OF oApp:aMod[20]:oWnd


      REDEFINE FOLDER oFld ID 101 OF oDDATOS UPDATE;
             PROMPT &vprompt DIALOGS &vfolders ADJUST

       FOR i:=1 to vprofundo
           REDEFINE XBROWSE oBrw[i] ID 101 ;
                  HEADERS V_Header ;
                  SIZES   V_ColSize ;
                  DATASOURCE aData[i] AUTOCOLS CELL LINES NOBORDER FASTEDIT of oFld:aDialogs[i]

            WITH OBJECT oBrw[ i ]
*           :aCols[1]:nEditType := 0
            :bLDblClick := {|| MsgInfo("Tu function") }
            :bKeychar := {|nkey| iif(nkey=13,MsgInfo("Mi Funcion"),)}
*           :nEditTypes :=EDIT_GET
           :nFreeze:=1
           :lFullGrid  := .t.
*           :CreateFromCode()
           END
       next i

 ACTIVATE DIALOG oDDATOS CENTER ON INIT (oFld:aDialogs[ 1 ]:setfocus(),.f.)


Image
Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Garbi
 
Posts: 291
Joined: Wed Nov 02, 2005 3:28 pm

Re: como puedo guardar los datos de xbrowse tipo excel

Postby Garbi » Mon Dec 19, 2016 12:29 pm

Creo que ya he encontrado la solución, por ahora solo saco los valores de la primera fila pero bueno es ir recorriendo las columnas.

Os lo pongo, es que no tenia claro que podría hacerse tabla[x][i,l]

Code: Select all  Expand view

  for i:= 1 to len(adata)
      for h:=1 to vfilas
          msgalert(adata[i][h,1])
      next h
  next i


Pero aún tengo duda como pasar a una funcion que tabla, fila y columna corresponde para poder asignarlo dos valores a esa celda en un dialogo que pregunte la cantidad y el articulo determinado.

Algun consejo, supongo que sera algo asi, pero no lo tengo claro

Code: Select all  Expand view
:bLDblClick := {|x,y,z| MsgInfo(adata[x][y,z]) }
Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Garbi
 
Posts: 291
Joined: Wed Nov 02, 2005 3:28 pm

Re: como puedo guardar los datos de xbrowse tipo excel

Postby joseluisysturiz » Mon Dec 19, 2016 1:44 pm

Leyendo de excel a una tabla...saludos... :shock:

Code: Select all  Expand view

   oExcel := TOleAuto():New( "Excel.Application" ) // ACTIVANDO EXCEL
   oExcel:Workbooks:Open( cFileXls ) // ABRO EL ARCHIVO SELECCIONADO
//
   oBook := oExcel:Get( "ActiveSheet" ) // ACTIVO HOJA EXCEL
   nRows := oBook:UsedRange:Rows:Count() // CANTIDAD LINEAS EXCEL INCLUYENDO LA LINEA 1 QUE ES LA CABECERA
   nCols := oBook:UsedRange:Columns:Count() // CANTIDAD COLUMNAS EXCEL

   FOR nRow = 2 TO nRows // CARGANDO DE EXCEL
//
      tu_campo_db := valor_celda

// ejemplo
rep_tarifa := oBook:Cells( nRow, 3 ):Value

   NEXT

// CERRANDO EXCEL
   oExcel:WorkBooks:Close()
   oExcel:Application:Quit()
   oExcel:Quit()

 


Haber si te ayuda, cualquier cosa estoy a la orden...
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela

Re: como puedo guardar los datos de xbrowse tipo excel

Postby cnavarro » Mon Dec 19, 2016 3:00 pm

No sé si te he entendido bien

viewtopic.php?f=3&t=33295#p196617
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: como puedo guardar los datos de xbrowse tipo excel

Postby Garbi » Wed Dec 21, 2016 10:30 am

Resumo, lo que necesito es que al pulsar intro o doble click sobre una celda determinada pueda pasarle a una funcion : (recordad que hay varios folders y cada uno tiene un array y que no es fijo el numero de folders)

Que tabla es en la que estoy (folder), que fila y columna, y después poder asignarle a esa celda una valor (en realidad son dos, pero lo haré tipo caracter para poder juntarlo)

Y después como recorrer todas las tablas para poder guardar y recuperar los valores (entonces sera cuando separe el dato de la celda)

Estoy un poco estancado, necesito un poco de ayuda.

Muchas Gracias.
Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Garbi
 
Posts: 291
Joined: Wed Nov 02, 2005 3:28 pm

Re: como puedo guardar los datos de xbrowse tipo excel

Postby cnavarro » Wed Dec 21, 2016 11:42 am

Bueno, creo entender la primera parte de tu problema.
Yo lo haría asi:
1.- Crearía una tabla con tantos elementos como diálogos va a tener el FOLDER ( aMiArray ), lo puedes saber por Len( oFolder:aDialogs )
2.- En cada elemento de ese array asignaria el array que va a aparecer en su diálogo y browse correspondiente
3.- Con la DATA oFolder:nOption tengo la posición en la que me encuentro y con Len( oFolder:aDialogs ) el número de diálogos definidos ( también lo tengo con LEN( aMiArray ) )
4.- Por lo tanto la posición del array que estoy utilizando sería ( aMiArray[ oFolder:nOption ] )

Bien si esto te ayuda, se puede seguir desarrollando el tema
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: como puedo guardar los datos de xbrowse tipo excel

Postby Garbi » Thu Dec 22, 2016 10:02 am

Funciono perfectamente con la ayuda de cnavarro, al editar una celda y después visualizar con botón derecho el valor me lo saca correcto y además del array de ese folder.
Pero si veis en el ejemplo he tenido que poner la columna y la fila unos valores determinados, lo que me falta es como saber en que columna y fila estoy. Me he fijado que primero tengo que poner la columna y después la fila.

Con eso creo que ya podría empezar a guardar los valores y despues recuperarlos y usarlos dentro de la aplicación .

Agradecería una orientación, he hecho varias pruebas pero no consigo nada.

Supongo que para cualquier maestro sera una tonteria pero para mi se me escapa.

Code: Select all  Expand view
DEFINE DIALOG oDDATOS RESOURCE "FOLDER_VARIOS" TITLE "Titulo " OF oApp:aMod[20]:oWnd


      REDEFINE FOLDER oFld ID 101 OF oDDATOS UPDATE;
             PROMPT &vprompt DIALOGS &vfolders ADJUST

       FOR i:=1 to vprofundo
           REDEFINE XBROWSE oBrw[i] ID 101 ;
                  HEADERS V_Header ;
                  SIZES   V_ColSize ;
                  DATASOURCE aData[i] AUTOCOLS CELL LINES NOBORDER FASTEDIT of oFld:aDialogs[i]

            WITH OBJECT oBrw[ i ]
             :nEditTypes :=EDIT_GET
             :bRClicked := {|| MsgInfo( aData[ oFld:nOption ][3,2]) }
             :nFreeze:=1
             :lFullGrid  := .t.

           END

       next i

   REDEFINE BTNBMP ID 500  RESOURCE "ACEPTAR" OF oddatos ;
            ACTION (lSalva:=.t. , oddatos:End());
            MESSAGE "Guardar cambios y salir del catalogo" ;
            WHEN ( Acceso(oApp:aUsuarios,"ESTANTER", nActua ) )

   REDEFINE BTNBMP ID 501  RESOURCE "SALIR" OF oddatos ACTION (lSalva := falso, oddatos:End()) ;
            MESSAGE "Salir de Estanteria"


 ACTIVATE DIALOG oDDATOS CENTER ON INIT (oFld:aDialogs[ 1 ]:setfocus(),.f.)
 
Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Garbi
 
Posts: 291
Joined: Wed Nov 02, 2005 3:28 pm

Re: como puedo guardar los datos de xbrowse tipo excel

Postby Garbi » Thu Dec 22, 2016 11:48 am

Parece que lo he solucionado :

Code: Select all  Expand view
:bRClicked := {|| MsgInfo( aData[ oFld:nOption ][oBrw[oFld:nOption]:nRowSel ,oBrw[oFld:nOption]:nColSel]) }


Ahora a pasar los valores a una función que capture unos datos y asignarlos a una celda. Supongo que no me liare mucho.


Muchas Gracias a todos aquellos que me han ayudado.


Espero que le sirva al alguien más este código. Un saludo
Saludos,
Regards,

Jose Luis Alepuz
joseluis@mancomputer.com
www.mancomputer.com
Garbi
 
Posts: 291
Joined: Wed Nov 02, 2005 3:28 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 84 guests