browse and SQL

browse and SQL

Postby Mauricio » Sat Oct 03, 2009 7:31 pm

Hola,

Cual es el mejor browse para ver tablas en SQL con conexion remota, o cual es el mejor procedimiento para hacerlo, traerme las tablas y guardarlas en DBF.

revisando lo que hacen los visores de tablas SQL, por defecto vienen configuradas para traer 50 registros, como puedo hacer eso en FWH ?

tengo tablas con 10,20, 30mil registros y se tardaran una eternidad al hacer el acceso remoto, si continuo con mis browse tradicionales.

o es mejor cambiar la programacion y no usar browse?


Gracias anticipadas.

Mauricio
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Re: browse and SQL

Postby horacio » Sat Oct 03, 2009 7:39 pm

Mauricio, no es que el browse traiga 50 registros por defecto, sino es la clausula limit en la cadena del query. y con respecto a traer esa cantidad de registros en forma remota lo veo, al menos dificil de tolerar por el tiempo que tardaría. No podés fraccionar la información, por ejemplo yo tengo funcionando un pequeño programa de facturación, y para mostrar las facturas, lo hago en un browse, pero solo las del corriente mes por defecto. si necesitan de otros periodos ellos pueden escribir su propia sentencia. Solo ideas
salu2
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: browse and SQL

Postby jbrita » Sat Oct 03, 2009 9:58 pm

Amigo yo lo hago con xbrowse paginado de 30 o 50 con botones de paginar
usando la metodo LIMIT 0.50
ADO+MYSQL

Saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: browse and SQL

Postby Ariel » Sun Oct 04, 2009 12:14 am

Jbrita,

podrias poner un ej. del codigo, de como lo haces ???

Gracias.

Salu2, Ariel.
Ariel
 
Posts: 374
Joined: Wed Nov 29, 2006 1:51 pm
Location: Rosario - Argentina

Re: browse and SQL

Postby Alfredo Arteaga » Sun Oct 04, 2009 1:45 am

[url]
Image
[/url]

En mi caso uso xBrowse con SQLRDD y veo una buena respuesta. Una parte del código usado según imagen, es:

Code: Select all  Expand view

FUNCTION Open_Table(oBrw)
   LOCAL oIcon, nClrB, oWChld, oLbx, oCbx
   LOCAL oDbf, cDbf, aIdx, cFile, oDBas
   LOCAL oPop, cVar, oB[6], cAlias , nTab
   CursorWait()
   nClrB:=LightColor(215,nClrM)
   aIdx:={"<sin índice>"}
   cVar:= "<sin índice>"
   lFil:=.F.

   cDbf:=Alltrim(oBrw:aArrayData[oBrw:nArrayAt,1])
   cAlias:=Open_Dbf(cDbf,lData)
   DATABASE oDbf

   oDbf:GoTop()
   nReg:=oDbf:LastRec()
   DEFINE ICON oIcon RESOURCE "IconSys"
   DEFINE WINDOW oWChld MDIChild TITLE cTitl OF oWnd ICON oIcon
   DEFINE BUTTONBAR oBar 3DLOOK BUTTONSIZE 26,26 2007 OF oWChld
   DEFINE BUTTON oB[1] OF oBar RESOURCE "B_Bus","","B_DBs" TOOLTIP "Buscar (Ctrl+B)"  ;
      ACTION Buscar(oCbx,oLbx,oDbf) NOBORDER
   DEFINE BUTTON oB[2] OF oBar RESOURCE "B_Loc" TOOLTIP "Localizar (Ctrl+L)"   ;
      ACTION Localizar(oLbx,oDbf)   NOBORDER
   DEFINE BUTTON oB[3] OF oBar RESOURCE "B_Prt" TOOLTIP "Reportes (Ctrl+R)"     GROUP ;
      ACTION New_Report(oLbx)  NOBORDER
   DEFINE BUTTON oB[4] OF oBar RESOURCE "B_Xls" TOOLTIP "Enviar a Excel"        GROUP ;
      ACTION To_Excel(oLbx)    NOBORDER
   DEFINE BUTTON oB[5] OF oBar RESOURCE "B_Ver","","B_DVr" TOOLTIP "Ver/Ocultar registros borrados";
      ACTION Desp_Del(oLbx)    NOBORDER
   DEFINE BUTTON oB[6] OF oBar RESOURCE "B_Fil" TOOLTIP "Filtrar por... (Ctrl+F)";
      ACTION Filtrar(oLbx,oDbf,oB)  NOBORDER
   MENU oPop POPUP
      MENUITEM "en &Mosaico"    ACTION oWnd:Tile()    ;
         WHEN Len(oWnd:oWndClient:aWnd)>0
      MENUITEM "en &Horizontal" ACTION oWnd:Tile(.T.) ;
         WHEN Len(oWnd:oWndClient:aWnd)>0
      MENUITEM "en &Cascada"    ACTION oWnd:Cascade() ;
         WHEN Len(oWnd:oWndClient:aWnd)>0
   ENDMENU
   DEFINE BUTTON OF oBar RESOURCE "B_Ven" TOOLTIP "Organizar ventanas" GROUP ;
      ACTION oWnd:Tile() NOBORDER MENU oPop
   oBar:bRClicked:={|| Que_Pasa("¿Que intentas?...")}
   @  0.25,31 COMBOBOX oCbx VAR cVar ITEMS aIdx OF oBar SIZE 150,300 ;
      ON CHANGE Sel_Index(oCbx,oDbf,oLbx,oB) FONT oWChld:oFont
   oCbx:cTooltip:="Clasificar..."
   oBar:bPainted:={|hDC| oBar:Say( 7,400,Tran(nReg,"9999,999")+" Reg(s)",nClrM,,oWnd:oFont,.T.,.T.)}
   oLbx:=TXBrowse():New(oWChld)
   oLbx:nMarqueeStyle   :=3
   oLbx:nColDividerStyle:=4
   oLbx:SetRDD()
   IF DbSetDriver()="DBFCDX"
      oLbx:bClrStd:={|| {IF(Deleted(),CLR_HRED,CLR_BLACK),IF((oLbx:cAlias)->(OrdKeyNo())%2==0,nClrB,CLR_LGRAY)}}
   ELSE
      oLbx:bClrStd:={|| {IF(Deleted(),CLR_HRED,CLR_BLACK),CLR_WHITE}}
   ENDIF
   oLbx:bRClicked :={|nRow,nCol| Pop_Menu(nRow,nCol,oWChld,oCbx,oLbx,oDbf,oB)}
   oLbx:bKeyDown  :={|nKey| Val_nKey(nKey,oLbx,oDbf,oCbx,oB)}
   oLbx:CreateFromCode()
   oWChld:SetControl(oLbx)
   oWChld:GoTop()
   ACTIVATE WINDOW oWChld VALID Close_Table(oLbx,oDbf,cDbf,cAlias)

RETURN (NIL)

STAT FUNC Close_Table(oLbx,oDbf,cDbf,cAlias)
   oLbx:End()
   oDbf:Close()
   Close_Dbf(cDbf,cAlias)
   Set(_SET_DELETED,lSetDel)
RETURN (.T.)
 
User avatar
Alfredo Arteaga
 
Posts: 326
Joined: Sun Oct 09, 2005 5:22 pm
Location: Mexico

Re: browse and SQL

Postby Mauricio » Sun Oct 04, 2009 5:25 am

Gracias a todos,

tomare sus soluciones para intentar implementar la mia,

estoy hablando de mySQL en remoto, en local funciona perfecto, al hacer el modulo con acceso remoto se me duermen los clientes cuando descargan las tablas.

Gracias.
Mauricio
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Re: browse and SQL

Postby jbrita » Mon Oct 05, 2009 1:21 pm

Que estas ocupando para la conexion de tus tablas

Saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: browse and SQL

Postby Mauricio » Mon Oct 05, 2009 4:05 pm

JBrita,

TMySql

Saludos,
Mauricio
Last edited by Mauricio on Mon Oct 05, 2009 4:15 pm, edited 1 time in total.
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Re: browse and SQL

Postby jbrita » Mon Oct 05, 2009 4:08 pm

Esta bien Mauricio que Mysql, pero ocupas ADO, TMYSQL que libreria ocupas en tus sistemas

Saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: browse and SQL

Postby Mauricio » Mon Oct 05, 2009 4:16 pm

JBrita

Perdon,

ya corregi el post, pero me ganasta es TMySql

Mauricio
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Re: browse and SQL

Postby jbrita » Mon Oct 05, 2009 4:36 pm

Mauricio , ademas de paginar quieres hacer busquedas en ese browse o solo quieres mostrar

saludos
jbrita
 
Posts: 486
Joined: Mon Jan 16, 2006 3:42 pm

Re: browse and SQL

Postby Mauricio » Mon Oct 05, 2009 5:46 pm

Hola Jbrita,

tienes algun correo de contacto, estamos usando el foro como chat y si logro dar con bola pongo la solucion aqui, asi lo demas usuarios no tienen que leerse nuestro chat.

saludos,
Mauricio
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Re: browse and SQL

Postby ADBLANCO » Mon Oct 05, 2009 7:30 pm

No, Si está de lo más entretenido!!
Jeje :oops:
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: browse and SQL

Postby ADBLANCO » Mon Oct 05, 2009 7:38 pm

Yo lo hago así, no se si te sirva de algo

Code: Select all  Expand view

******************************************************************************************
FUNCTION prueba2()                       && Programa de prueba
******************************************************************************************
LOCAL oDlg       ,;
      oButSalir  ,;
      oTabla     ,;
      oLbx       ,;
      cTabla := "MODELO"
LOCAL cCommand,oQuery
LOCAL oControl:=colores()
LOCAL aTabla:={},aLoaded

  CURSORWAIT()

  cCommand  :='SELECT * '+;
            'FROM `'+cDTBase+'`.`'+cTabla+'` '+;
            'limit 90000'
  oQuery    :=TMSQuery():New( oDTBase )
  oQuery:Open( cCommand )

  // Traemos el resultado a nuestro cliente
  IF ( oQuery:nRowCount>0 )


    DEFINE    DIALOG      oDlg        RESOURCE "prueba";
              TITLE       'Prueba con oQuery Directo' ;
              OF oWnd
      oDlg:lHelpIcon  :=.f.  && Apago el Icono de Help

      REDEFINE LISTBOX oLbx ;
               FIELDS PadL( oQuery:FieldGet( 1 ), 6, " " ),;
                      oQuery:xFieldGet( 3 ), ;
                      oQuery:xFieldGet( 4 ), ;
                      oQuery:xFieldGet( 5 ), ;
                      oQuery:xFieldGet( 6 ) ;
               FIELDSIZES 45,45,190,45,45;
               HEADERS "Codigo", ;
                       "Cod/Estado", ;
                       "Ciudad", ;
                       "Abreviatura", ;
                       "Cod.Area" ID 401 OF oDlg

      oQuery:GoTop():Read()         // No se olvide nunca de esta linea
      MySetBrowse(oLbx,oQuery)      // No Olvidarse Nunca de Esta Línea
      oLbx:cAlias       := "ARRAY"  // No Olvidarse de "ESTO", si no se tranca

      oLbx:lCellStyle   := .f.      // Apaga El estilo por celda
      oLbx:nLineStyle   := 3        // coloca la linea entre registros

      // poner colores a las lineas
      oControl:aLbxBkGClr[ 1 ]  :={ ||  iif(  oQuery:nRow %2=0, oControl:nCL_HGreen, oControl:nCD_HGreen ) }
      oLbx:bTextColor   :={ | nRow, nCol, nStyle |  iif(  nStyle>=0 .and. nStyle<=3,;
                         oControl:aLbxTxtClr[ nStyle+1 ],;
                         CLR_WHITE ) }
      oLbx:bBkColor     :={ | nRow, nCol, nStyle |  iif(  nStyle>=0 .and. nStyle<=3,;
                         eval( oControl:aLbxBkGClr[ nStyle+1 ] ),;
                         CLR_WHITE ) }
      // colores hasta aqui

      REDEFINE Button  oButSalir     ID  101  OF oDlg;
            MESSAGE "Salir";
            ACTION  oDlg:End()        && Sale de la Rutina, Por Convencion el ID es 101

      oDlg:oClient      := oLbx

    ACTIVATE DIALOG oDlg CENTER

    oQuery:close()
  ELSE
    MSGALERT("No se puede abrir la tabla: " + cTabla, "Operación Cancelada" )
  ENDIF
RETURN   NIL
 


y me trabaja bastante rápido, aunque más rápido es transferir el query a una matriz provisional

Asi
Code: Select all  Expand view

******************************************************************************************
FUNCTION prueba3()                       && Programa de prueba
******************************************************************************************
LOCAL oDlg       ,;
      oButSalir  ,;
      oTabla     ,;
      oLbx       ,;
      nReg   :=0 ,;
      cTabla := "MODELO"
LOCAL cCommand,oQuery,aLoaded
LOCAL aTabla[300000,5]

   CURSORWAIT()

   cCommand  :='SELECT * '+;
            'FROM `'+cDTBase+'`.`'+cTabla+'` '+;
            'limit 300000'
   oQuery    :=TMSQuery():New( oDtBase )
   oQuery:Open( cCommand )

  // Traemos el resultado a nuestro cliente
  IF ( oQuery:nRowCount>0 )
    *MSGALERT(oQuery:nRowCount)
    CURSORWAIT()
    DO WHILE !oQuery:lEof
      nReg +=1
      aTabla[nReg,1]:=oQuery:FieldGet( 1 )
      aTabla[nReg,2]:=oQuery:FieldGet( 3 )
      aTabla[nReg,3]:=oQuery:FieldGet( 4 )
      aTabla[nReg,4]:=oQuery:FieldGet( 5 )
      aTabla[nReg,5]:=oQuery:FieldGet( 6 )
      oQuery:Fetch()
    ENDDO

    DEFINE    DIALOG      oDlg        RESOURCE "prueba";
              TITLE       'Prueba con oQuery pasado a Arreglo'
      oDlg:lHelpIcon  :=.f.  && Apago el Icono de Help

      REDEFINE LISTBOX oLbx ;
               FIELDS transform(aTabla[oLbx:nAt,1],'999'),;
                      aTabla[oLbx:nAt,2],;
                      aTabla[oLbx:nAt,3],;
                      aTabla[oLbx:nAt,4],;
                      aTabla[oLbx:nAt,5];
               ID 401 OF oDlg


      *oLbx:Ajustify :={1,2,0,2,2} && Justificado de Columnas 0=izq, 1=Der, 2=Cent

      *oLbx:nFreeze  := 3
      oLbx:SetArray( aTabla )

      REDEFINE  BUTTON  oButSalir     ID  101  OF oDlg;
                ACTION  oDlg:End()        && Sale de la Rutina, Por Convencion el ID es 101

      oDlg:oClient := oLbx


    ACTIVATE DIALOG oDlg CENTER

    oQuery:close()
  ELSE
    MSGALERT("No se puede abrir la tabla: " + cTabla, "Operación Cancelada" )
  ENDIF
RETURN   NIL
 


(Ya me puse serio) :roll:
Saludos

Angel, Valencia, Venezuela

xH .997 - FW 7.9 - BCC55 - WorkShop - MySql
User avatar
ADBLANCO
 
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Re: browse and SQL

Postby Mauricio » Mon Oct 05, 2009 9:25 pm

Hola Blanco,

Gracias por voy a probar tu solucion,
(copy / paste )

saludos,
Mauricio
User avatar
Mauricio
 
Posts: 199
Joined: Thu Oct 06, 2005 9:07 pm
Location: San Diego, CA

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 16 guests

cron