// Primero exporto la consulta.
cFile:= cFilePath( hb_argv(0) )+"TMP\mitemp"+cDateTime+".sql"
aStrut:= oApp:oCon:TableStructure(cTable)
FOR x:= 2 TO LEN(aStrut)
// empiezo del campo 2 xq el 1 es autoinc
w_str+= if(x>2,",","")+aStrut[x,01]
NEXT
oQry:= oApp:oCon:Query( [SELECT ]+w_str+[ FROM ]+cTable+[ ORDER BY ]+cTable+[_id] )
oExp:= oQry:Export( EXP_SQL, cFile )
oExp:lDropTable:= .f.
oExp:Start()
oQry:End()
// Segundo levanto la info exportada.
luego lees el .sql con TTxtFile y ejecutas las sentencias de cada linea
Adolfo wrote:En una generacion de 100 registros, con todos sus "aliños" se demoraba 49.324 segundos, ahora 5.9
//#include "hbcompat.ch"
#include "tdolphin.ch"
#define CRLF Chr( 13 ) + Chr( 10 )
PROCEDURE Main()
LOCAL oServer := NIL
LOCAL cText := ""
LOCAL oQry
LOCAL aDatas := {}
LOCAL hResult, row
LOCAL aStructure
LOCAL nLimite := 1000
LOCAL n := 0
LOCAL aFields := {}
LOCAL cTime
IF ( oServer := ConnectTo() ) == NIL
RETURN
ENDIF
IF ( oServer2 := ConnectTo() ) == NIL
RETURN
ENDIF
IF ! oServer:lError
cText += "Connection OK" + CRLF
cText += "Host: " + oServer:cHost +CRLF
cText += "Database: " +oServer:cDBName + CRLF
? cText + CRLF
cText = "SELECT * FROM clientes LIMIT 1000"
oServer:Execute( "truncate table clientes_copy2" )
cTime = time()
IF mysqlquery( oServer:hMySql, cText, Len( cText ) ) == 0
hResult = mysqluseresult( oServer:hMySql )
aStructure = MySqlResultStructure( hResult, D_SetCaseSensitive(), D_LogicalValue() )
for each row in aStructure
AAdd( aFields, row[ MYSQL_FS_NAME ] )
next
hb_ADel( aFields, 1, .T. )
DO WHILE .t.
aRow = mysqlfetchrow( hResult )
aRow = hb_ADel( aRow, 1, .T. )
IF Len( aRow ) == 0
exit
ELSE
AAdd( aDatas, aRow )
n++
IF n == nLimite
n = 0
oServer2:Insert( "clientes_copy2", aFields, aDatas )
aDatas = {}
ENDIF
ENDIF
ENDDO
IF n != nLimite .AND. n > 0
oServer:Insert( "clientes_copy2", aFields, aDatas )
ENDIF
? "termino en: " + ElapTime( cTime, time() )
ENDIF
ENDIF
oServer:End()
RETURN
#include "connto.prg"
l:\FWH10.2\tDolphin>setenvx
# -----------------------------------------------------------------------
# Building dolphin.lib
#
# C COMPILER :BCC
# PRG COMPILER :XHARBOUR
# -----------------------------------------------------------------------
Compiling .\source\prg\tdolpexp.prg
Compiling .\obj\XHARBOUR\BCC\tdolpexp.c
Compiling .\source\prg\tdolpqry.prg
Compiling .\obj\XHARBOUR\BCC\tdolpqry.c
Compiling .\source\prg\tdolpsrv.prg
Compiling .\obj\XHARBOUR\BCC\tdolpsrv.c
Compiling .\source\c\function.c
Compiling .\source\c\gerrapi.c
Compiling .\source\lang\msges.c
win-make: *** [.\obj\XHARBOUR\BCC\msges.obj] Error 1
rm .\obj\XHARBOUR\BCC\tdolpsrv.c .\obj\XHARBOUR\BCC\tdolpqry.c .\obj\XHARBOUR\BCC\tdolpexp.c
# -----------------------------------------------------------------------
# Building dolphin.lib
#
# C COMPILER :BCC
# PRG COMPILER :XHARBOUR
# -----------------------------------------------------------------------
l:\bcc55\bin\bcc32 -c -D__WIN__ -D__XHARBOUR__ -DHB_LEGACY_TYPES_ON -tWM -Il:\xharbour1.21\include -I.\include -o.\obj\XHARBOUR\BCC\msges.obj .\source\lang\msges.c
Compiling .\source\lang\msges.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
.\source\lang\msges.c:
Error E2451 .\source\lang\msges.c 99: Undefined symbol 'ERR_EMPTYALIAS' in function LoadMsgsES
Error E2040 .\source\lang\msges.c 99: Declaration terminated incorrectly in function LoadMsgsES
Error E2139 .\source\lang\msges.c 99: Declaration missing ; in function LoadMsgsES
Warning W8070 .\source\lang\msges.c 99: Function should return a value in function LoadMsgsES
Warning W8004 .\source\lang\msges.c 99: 'ErrMsg' is assigned a value that is never used in function LoadMsgsES
Error E2190 .\source\lang\msges.c 99: Unexpected }
Error E2040 .\source\lang\msges.c 99: Declaration terminated incorrectly
Error E2190 .\source\lang\msges.c 101: Unexpected }
Error E2190 .\source\lang\msges.c 101: Unexpected }
Error E2293 .\source\lang\msges.c 103: ) expected
Error E2040 .\source\lang\msges.c 105: Declaration terminated incorrectly
Error E2190 .\source\lang\msges.c 106: Unexpected }
*** 10 errors in Compile ***
Bayron wrote:Solucionado.... en xHarbour tuve que copiar los archivos include al directorio de xHarbour...
oDbNew:=TDNewReg("ciudades","CODIGO")
oDbNew:GetBlankRow(.F.)
oDbNew:CODIGO:=1
oDbNew:Nombre:="CHILLAN"
OdbNew:.......
OdbNew:Save()
Function TDNewReg(cTable,cOrder)
Local cSelect:="select * from " + alltrim(cTable) + " order by " + alltrim(cOrder) + " limit 1"
Local oQry:=tDolphinQry():New(cSelect,oSvr)
Return oQry
Adolfo wrote:Me interesa saber el porque es mas rapido (curiosidad) ?
Adolfo wrote:Que problema puedo tener al usar ese metodo para mis ciclos de ingreso, me refiero a el oSvr:Insert() ?
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: cmsoft, gmart1, Google [Bot], wilsongamboa and 95 guests