* test_oselecteaza2object.prg * Stabileste experimental comportamentul goExecutor.oSelecteaza2Object * (oproceduri_comune.prg:597) pe 0/1/2+ randuri, pentru cascada din * docs\plan_efactura_23_24.md (banda A). * * Rulare: vfp9.exe -A -T "D:\ROA\ROACONT\COMUN\utile\Teste\test_oselecteaza2object.prg" * Verdict in D:\ROA\ROACONT\COMUN\utile\Teste\test_oselecteaza2object_log.txt SET SAFETY OFF SET TALK OFF SET DELETED ON SET EXACT ON SET CENTURY ON SET DATE DMY SET NULLDISPLAY TO '' CLOSE DATABASES PUBLIC gcUILog gcUILog = "D:\ROA\ROACONT\COMUN\utile\Teste\test_oselecteaza2object_log.txt" STRTOFILE("START " + TTOC(DATETIME()) + CHR(13) + CHR(10), gcUILog) ON ERROR DO PrErrLocal WITH ERROR(), MESSAGE(), PROGRAM(), LINENO() ON SHUTDOWN QUIT TRY DO "D:\ROA\ROACONT\COMUN\utile\Teste\test_init_env_auto.prg" WITH 'CENTRAL', 'MARIUSM_AUTO', 'ROMFASTSOFT' IF gnHandle <= 0 DO PrLogLocal WITH 'FAIL: conectare Oracle esuata (gnHandle=' + TRANSFORM(gnHandle) + ')' QUIT ENDIF DO PrLogLocal WITH 'mediu initializat, gnHandle=' + TRANSFORM(gnHandle) *-- test izolat, fara Oracle: comportamentul SCATTER NAME ... MEMO pe cursor cu 0 randuri DO PrLogLocal WITH '=== SCATTER NAME direct pe cursor VFP cu 0 randuri (fara Oracle) ===' LOCAL loScatterGol CREATE CURSOR crsScatterGol (id N(10), denumire C(20)) SELECT crsScatterGol DO PrLogLocal WITH ' RECCOUNT=' + TRANSFORM(RECCOUNT('crsScatterGol')) + ' EOF=' + TRANSFORM(EOF()) + ' BOF=' + TRANSFORM(BOF()) SCATTER NAME loScatterGol MEMO DO PrLogLocal WITH ' dupa SCATTER: TYPE(loScatterGol)=' + TYPE('loScatterGol') IF TYPE('loScatterGol') = 'O' DO PrLogLocal WITH ' loScatterGol.id=[' + TRANSFORM(loScatterGol.id) + '] TYPE=' + TYPE('loScatterGol.id') + ' ISNULL=' + TRANSFORM(ISNULL(loScatterGol.id)) DO PrLogLocal WITH ' loScatterGol.denumire=[' + TRANSFORM(loScatterGol.denumire) + '] TYPE=' + TYPE('loScatterGol.denumire') + ' ISNULL=' + TRANSFORM(ISNULL(loScatterGol.denumire)) ENDIF USE IN (SELECT('crsScatterGol')) *-- cele trei cazuri reale, prin goExecutor.oSelecteaza2Object, pe Oracle (dual) DO PrCaz WITH 'CAZ 1: 0 randuri', "select 1 id, 'X' denumire from dual where 1=0" DO PrCaz WITH 'CAZ 2: 1 rand', "select 1 id, 'X' denumire from dual" DO PrCaz WITH 'CAZ 3: 2 randuri', "select 1 id, 'X' denumire from dual union all select 2 id, 'Y' denumire from dual" DO PrLogLocal WITH 'TOTAL: test terminat fara exceptie' CATCH TO loEx DO PrLogLocal WITH 'EXCEPTIE: ' + loEx.Message + ' (' + TRANSFORM(loEx.LineNo) + ')' ENDTRY QUIT ********************************************************** PROCEDURE PrCaz LPARAMETERS tcEticheta, tcSql LOCAL loObj, llSucces, lcValId, lcValDen DO PrLogLocal WITH '=== ' + tcEticheta + ' ===' DO PrLogLocal WITH ' sql: ' + tcSql llSucces = goExecutor.oSelecteaza2Object(tcSql, @loObj) DO PrLogLocal WITH ' llSucces (retur functie) = ' + TRANSFORM(llSucces) DO PrLogLocal WITH ' TYPE(loObj) = ' + TYPE('loObj') DO PrLogLocal WITH ' goExecutor.nSucces = ' + TRANSFORM(goExecutor.nSucces) DO PrLogLocal WITH ' goExecutor.cEroare = [' + TRANSFORM(goExecutor.cEroare) + ']' IF TYPE('loObj') = 'O' DO PrLogLocal WITH ' PEMSTATUS(loObj,"id",5) = ' + TRANSFORM(PEMSTATUS(loObj, 'id', 5)) DO PrLogLocal WITH ' TYPE(loObj.id) = ' + TYPE('loObj.id') IF TYPE('loObj.id') = 'N' OR TYPE('loObj.id') = 'C' lcValId = IIF(ISNULL(loObj.id), '', TRANSFORM(loObj.id)) ELSE lcValId = '' ENDIF DO PrLogLocal WITH ' ISNULL(loObj.id) = ' + TRANSFORM(ISNULL(loObj.id)) + ' valoare = [' + lcValId + ']' DO PrLogLocal WITH ' PEMSTATUS(loObj,"denumire",5) = ' + TRANSFORM(PEMSTATUS(loObj, 'denumire', 5)) DO PrLogLocal WITH ' TYPE(loObj.denumire) = ' + TYPE('loObj.denumire') IF TYPE('loObj.denumire') = 'C' lcValDen = IIF(ISNULL(loObj.denumire), '', '[' + TRANSFORM(loObj.denumire) + ']') ELSE lcValDen = '' ENDIF DO PrLogLocal WITH ' ISNULL(loObj.denumire) = ' + TRANSFORM(ISNULL(loObj.denumire)) + ' valoare = ' + lcValDen ENDIF ENDPROC ********************************************************** PROCEDURE PrLogLocal LPARAMETERS tcMsg LOCAL lcL SET SAFETY OFF lcL = IIF(FILE(gcUILog), FILETOSTR(gcUILog), '') STRTOFILE(lcL + TRANSFORM(tcMsg) + CHR(13) + CHR(10), gcUILog) ENDPROC ********************************************************** PROCEDURE PrErrLocal LPARAMETERS tnError, tcMessage, tcProgram, tnLineNo DO PrLogLocal WITH 'EROARE ' + TRANSFORM(tnError) + ' ' + TRANSFORM(tcMessage) + ' in ' + TRANSFORM(tcProgram) + ' linia ' + TRANSFORM(tnLineNo) ENDPROC