FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse cantidad de registros maximo
Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
xBrowse cantidad de registros maximo
Posted: 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 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: xBrowse cantidad de registros maximo
Posted: Wed Apr 13, 2016 01: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!
Posts: 1054
Joined: Sun Oct 09, 2005 10:41 PM
Re: xBrowse cantidad de registros maximo
Posted: Wed Apr 13, 2016 01: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 (fw): Select all Collapse
//--------------------------------------------------------------------------------------------------------
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)
Posts: 582
Joined: Fri Oct 07, 2005 02:17 PM
Re: xBrowse cantidad de registros maximo
Posted: Wed Apr 13, 2016 02: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 25.01, BCC74, MySQL 8.0.X, SQLLIB 1.9m

Continue the discussion