xBrowse cantidad de registros maximo

xBrowse cantidad de registros maximo

Postby Enrrique Vertiz » Wed Apr 13, 2016 12:35 am

Saludos Estimados,

Tengo un programa que sirve de consulta a una tabla MySQL, no la lea como tabla sino la bajo a un arreglo y ese es el que muestro (usando SQLLIB) no hay ningún problema cuando son 300, 1000, 3000 líneas, pero cuando quise revisar una tabla de 250,000 registros se demora tanto que sigo esperando.
Tengo consultas con TsBrowse y TwBrowse en otros programas con medio millón de registros y si bien "no son muy rapidas" si las presenta bien, pero con xBrowse hay un problema de cantidad de registros ?? o quizás estoy haciendo algo mal, alguna idea ...
Gracias
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru

Re: xBrowse cantidad de registros maximo

Postby joseluisysturiz » Wed Apr 13, 2016 1:40 am

Cuando una consulta es de una sola tabla, mas seguro te la cargue rapido, pero si es una tabla relacionada con varias tablas y esta tiene que hacer algunos calculos, te va tardar bastante, tambien dependera si estas haciendo la consulta de forma localhost o si se esta conectando a otro pc, lo que no entiendo es porque no muestras directamente la consulta en el xbrose din pasarla a un array.? y saber de que forma estas cargando el array si con AADD o con FILLARRAY directamente desde la consulta, si pones algo de codigo seguro te podremos ayudar mas, saludos... :shock:
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: xBrowse cantidad de registros maximo

Postby Willi Quintana » Wed Apr 13, 2016 1:45 am

Hola Enrrique,
Uso tablas de MySQL con TWBrowse, y los datos los cargo a un arreglo, y mas o menos bien, uso TDolphin,
uso esta funcio para cargar la data al array:

Code: Select all  Expand view

//--------------------------------------------------------------------------------------------------------
aDatos := {}
aDatos := SQLQryA(oMySQL, aDatos, "SELECT * from registros")
REDEFINE LISTBOX oLbx ;
               FIELDS aDatos[oLbx:nAt ,1] ;
...
..
.

//-----------------------------------------------------------------------
Function SQLQryA(oMySQL, aObj, cObj)
local nLen, nCont, oObj, aTmp, nLenG, nPos, aDat, cVType, cCampo, nCont2, nLen2
local cFile
DEFAULT lRef := .f.
cFile := "NOSQL_.TXT"//cObj := LOWER(cObj)
aObj := {}
aTmp := {}

TRY
  If oMySQL:lError
      MsgInfo("La Conexión No Existe...","Cerrando")
      Quit
  EndIF
 CATCH
  MsgInfo("La Conexión No Existe...","Cerrando")
  Quit
END

oObj  := oMySQL:Query(cObj)
nLenG := oObj:RecCount()
nLen  := oObj:FCount()

CURSORWAIT()

IF nLenG = 0                      // si no hat datos lo llenamos con datos vacios
    aObj  := ARRAY(1, nLen)
    FOR nCont := 1 TO nLen
      TRY
       cVType := oObj:FieldType(nCont)
      CATCH
       Msginfo("Error Interno en MyCampo()", "Error")
       Quit
      END

      DO CASE
        CASE cVType = "N"
         cCampo := 0
        CASE cVType = "C"
         cCampo := ""
        CASE cVType = "M"
         cCampo := ""
        CASE cVType = "L"
         cCampo := ".f."
        CASE cVType = "D"
         cCampo := CTOD("  /  /    /")
        OTHER
         cCampo := ""
      ENDCASE
      aObj[1, nCont] := cCampo
    NEXT nCont

   Else
    aObj := {}
    aObj := ARRAY(nLenG, nLen)
    nPos := 1

    CURSORWAIT()
    WHILE !oObj:EOF()
     FOR nCont := 1 TO nLen
       aObj[nPos, nCont] := oObj:FieldGet(nCont)
     NEXT nCont
     nPos++
     If INT(nPos / 100) * 100 = nPos
        CURSORWAIT()
        SysRefresh()
     EndIf
     oObj:Skip()
    ENDDO
    CURSORARROW()

EndIf
MyClose(oObj)
CATCH
 MsgStop("Error en la Conexión al Servidor","Aplicación Cerrada")
 Quit
END

Return(aObj)

 
User avatar
Willi Quintana
 
Posts: 1003
Joined: Sun Oct 09, 2005 10:41 pm
Location: Cusco - Perú

Re: xBrowse cantidad de registros maximo

Postby Enrrique Vertiz » Wed Apr 13, 2016 2:10 am

Gracias por contestar

Jose Luis, asi lo uso, el arreglo es un Select MySQL, uso SQLLIB y con TwBrowse y TsBrowse, si presenta los miles de registros, mi pregunta es sobre TxBrowse

cCommand:="SELECT codven,fecven,coddoc,numdoc,refere,codcli,nomcli,tipmon,totven,totigv,totnet,status,motnota,posted,fecdes,usrsta,codzon,numenv,numbaj,nroanx,sql_rowid FROM "+regvta+" WHERE "+iif(empty(cFilGui),"",cFilGui)+" (SUBSTRING(numdoc,1,1)='F' OR SUBSTRING(numdoc,1,1)='B') ORDER BY coddoc,numdoc"
Use SQL (cCommand) ALIAS guicab VIA "MYSQL"

Y aquí hago el xBrowse

@ 0,0 xbrowse oBrw of oWnd ;
header "Integrador","Fecha","Tipo","Numero","NumRef","Codigo","Razon Social","Mon","Valor_Venta","IGV","Precio_Venta","Motivo","Enviado","MailEnv","Baja","Tk Envio","Tk Baja","Consol" ;
columns "codven","fecven", "coddoc", "numdoc", "refere", "codcli", "nomcli", "tipmon", "totven", "totigv", "totnet","motnota","posted","fecdes","codzon","numenv","numbaj","nroanx" ;
colsizes 60,70,30,90,105,80,350,30,85,85,85,40,45,70,40,100,100,40 ;
picture ,,"99",,,,,"!","999,999,999.99","9,999,999.99","999,999,999.99",,"!",,"!" ;
ALIAS "GuiCab" FOOTERS LINES CELL NOBORDER CENTER

WITH OBJECT oBrw
:nMarqueeStyle := 4
:bLDblClick = { || (verpdf(oBrw), oBrw:refresh()) }
:bKeyDown = { | nKey | if(nKey!=VK_RETURN, Nil, (verpdf(oBrw), oBrw:refresh()) ) }
:bClrSel := {|| { CLR_BLACK, nRGB( 192,192,192 )}}
:bClrSelFocus := {|| { CLR_WHITE, nRGB( 128,128,255 )}}
END
oBrw:bPopUp := { |o| ColMenu( o, oBrw, cEmpMG, cEmpMC, cRutDel ) }


Willy, gracias con TwBrowse si funciona, relativamente normal, por eso mi consulta si xBrowse tiene algún problema con miles de registros (en este caso 250,000)

Gracias
Enrrique Vertiz Pitta
Lima-Peru
xHb 1.23.1026X, Fwh 24.02, MySQL 8.0.X, SQLLIB 1.9m
Enrrique Vertiz
 
Posts: 519
Joined: Fri Oct 07, 2005 2:17 pm
Location: Lima - Peru


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 34 guests