DBCOMMIT/DBUNLOCK

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

Eu de novo.. apelo a comunidade...2 semanas de instabilidade..
Aplicacao desenvolvida em GASPRO 4.0o, convertida para Harbour, mingw, indice NSX
Arquivo ODRPROD.DBF em torno de 34000 registros, integro,


O que pode fazer um dbcommit ou dbunlock dar erro ? numa aplicacao em rede ?
No clipper nao dava...


Mais material:
https://pctoledo.org/forum/viewto ... =4&t=11983

ANtes de dar os erros abaixo e o sistema cair.. dá a mensagem
ERRO DBFNSX/1012
ARQUIVO G:\POLIV1\DADOS\ORDPROD2.NSX

Código: Selecionar todos

Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.13 06:29:42
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:0052C981
    EAX:008C3290  EBX:00FE7838  ECX:0000001C  EDX:00000001
    ESI:00000000  EDI:00000400  EBP:00000000
    CS:EIP:001B:0052C981  SS:ESP:0023:0022F500
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 4D 34 C6 44 24 30 69 BE 06 00 00 00 8B 43 40
    SS:ESP: 0103D364 3B9B5311 00000000 010678DC 00000007 5B619FFC 010668C8 00000030 00F0136C 00F0134C 008C3290 00458192 010557AC 0106026C 0105F6CC 0042FF9A

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\DADOS\INFO_IN_.EXE
0x7C900000 0x000B3000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.13 06:38:10
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:00529AD2
    EAX:005F0046  EBX:0102F1A4  ECX:00000000  EDX:0100C238
    ESI:00000000  EDI:0100C238  EBP:89AC0000
    CS:EIP:001B:00529AD2  SS:ESP:0023:0022F950
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 85 88 00 00 00 89 04 24 E8 10 98 F9 FF 66 83
    SS:ESP: 3B9ACA00 00000000 3B9ACA00 00000000 0101EFFC 0000FFFF 00000000 00000000 0105C87C 7FFDE000 000E0000 0102F1A4 00000000 0100C238 00000000 005313F2

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\DADOS\INFO_IN_.EXE
0x7C900000 0x000B3000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.13 07:02:36
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:0052C981
    EAX:008C3290  EBX:00FE7838  ECX:0000000D  EDX:00000001
    ESI:00000000  EDI:00000400  EBP:00000000
    CS:EIP:001B:0052C981  SS:ESP:0023:0022F500
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 4D 34 C6 44 24 30 69 BE 06 00 00 00 8B 43 40
    SS:ESP: 01046AC4 3B9B52B3 00000000 01036D04 00000007 00000001 00F1F36C 0044275D 00F0136C 00F0134C 008C3290 00458192 00F0134C 00F0136C 010478D4 0062BD98

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\DADOS\INFO_IN_.EXE
0x7C900000 0x000B3000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.13 07:09:14
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:0052C981
    EAX:008BCEF5  EBX:00FDA0D8  ECX:0000000D  EDX:00000001
    ESI:00000000  EDI:00000400  EBP:00000000
    CS:EIP:001B:0052C981  SS:ESP:0023:0022F500
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 4D 34 C6 44 24 30 69 BE 06 00 00 00 8B 43 40
    SS:ESP: 01054514 3B9B52B6 00000000 0104F5DC 00000007 00000001 00F1F36C 0044275D 00F0136C 00F0134C 008BCEF5 00458192 00F0134C 00F0136C 0105496C 0062BD98

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\DADOS\INFO_IN_.EXE
0x7C900000 0x000B3000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\dados\INFO_IN_.EXE
Terminated at: 2011.05.13 07:26:59
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:0052C981
    EAX:00020006  EBX:003F6648  ECX:24000000  EDX:00000001
    ESI:00000000  EDI:00000010  EBP:00000001
    CS:EIP:001B:0052C981  SS:ESP:0023:0022F4D0
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 4D 34 C6 44 24 30 69 BE 06 00 00 00 8B 43 40
    SS:ESP: 000000F8 0022F510 7721A53A 018D8F14 00000007 00000001 003CF38C 0044275D 003B13C4 003B13A4 00020006 00458192 003B13A4 003B13C4 018C9200 0062BD98

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\dados\INFO_IN_.EXE
0x77090000 0x0013C000 C:\Windows\SYSTEM32\ntdll.dll
0x75590000 0x000D4000 C:\Windows\system32\kernel32.dll
0x75260000 0x0004A000 C:\Windows\system32\KERNELBASE.dll
0x75A10000 0x000A0000 C:\Windows\system32\ADVAPI32.DLL
0x77210000 0x000AC000 C:\Windows\system32\msvcrt.dll
0x75CF0000 0x00019000 C:\Windows\SYSTEM32\sechost.dll
0x75B50000 0x000A1000 C:\Windows\system32\RPCRT4.dll
0x76A50000 0x000C9000 C:\Windows\system32\USER32.dll
0x76F40000 0x0004E000 C:\Windows\system32\GDI32.dll
0x76A40000 0x0000A000 C:\Windows\system32\LPK.dll
0x76B20000 0x0009D000 C:\Windows\system32\USP10.dll
0x72820000 0x00051000 C:\Windows\system32\WINSPOOL.DRV
0x75B30000 0x0001F000 C:\Windows\system32\IMM32.DLL
0x75D20000 0x000CC000 C:\Windows\system32\MSCTF.dll

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\dados\INFO_IN_.EXE
Terminated at: 2011.05.13 07:30:50
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:0052C981
    EAX:008D1AC2  EBX:00C84F08  ECX:0000000A  EDX:00000001
    ESI:00000000  EDI:00000400  EBP:00000000
    CS:EIP:001B:0052C981  SS:ESP:0023:0022F4D0
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010202
    CS:EIP: 8B 4D 34 C6 44 24 30 69 BE 06 00 00 00 8B 43 40
    SS:ESP: 000000F8 0022F510 7721A53A 00CBE4BC 00000007 97A367FC 00CBF6C0 00000030 003F1314 003F12F4 008D1AC2 00458192 00CB03A4 00CB4934 00CAFCAC 0042FF9A

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\dados\INFO_IN_.EXE
0x77090000 0x0013C000 C:\Windows\SYSTEM32\ntdll.dll
0x75590000 0x000D4000 C:\Windows\system32\kernel32.dll
0x75260000 0x0004A000 C:\Windows\system32\KERNELBASE.dll
0x75A10000 0x000A0000 C:\Windows\system32\ADVAPI32.DLL
0x77210000 0x000AC000 C:\Windows\system32\msvcrt.dll
0x75CF0000 0x00019000 C:\Windows\SYSTEM32\sechost.dll
0x75B50000 0x000A1000 C:\Windows\system32\RPCRT4.dll
0x76A50000 0x000C9000 C:\Windows\system32\USER32.dll
0x76F40000 0x0004E000 C:\Windows\system32\GDI32.dll
0x76A40000 0x0000A000 C:\Windows\system32\LPK.dll
0x76B20000 0x0009D000 C:\Windows\system32\USP10.dll
0x72820000 0x00051000 C:\Windows\system32\WINSPOOL.DRV
0x75B30000 0x0001F000 C:\Windows\system32\IMM32.DLL
0x75D20000 0x000CC000 C:\Windows\system32\MSCTF.dll

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.13 13:26:01
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:77C278C0
    EAX:00000000  EBX:009513C8  ECX:00000000  EDX:00000000
    ESI:00000000  EDI:0022F53E  EBP:010304F8
    CS:EIP:001B:77C278C0  SS:ESP:0023:0022F4FC
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010246
    CS:EIP: 8B 01 BA FF FE FE 7E 03 D0 83 F0 FF 33 C2 83 C1
    SS:ESP: 0052CA85 00000000 3B9B531C 00000000 01066744 00000007 0105B7B8 01064CD8 00000238 00F0136C 00F0134C 0105BB40 00458192 00002C69 00000000 00000E48

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...


Modules:
0x00400000 0x00564000 G:\poliv1\DADOS\INFO_IN_.EXE
0x7C900000 0x000B3000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.13 13:31:51
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:00529ACF
    EAX:00000001  EBX:0102E834  ECX:00000000  EDX:00FF16D0
    ESI:00000000  EDI:00FF16D0  EBP:00000000
    CS:EIP:001B:00529ACF  SS:ESP:0023:0022F950
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 68 14 8B 85 88 00 00 00 89 04 24 E8 10 98 F9
    SS:ESP: 3B9ACA00 00000000 3B9ACA00 00000000 0101EFFC 0000FFFF 00000000 00000000 01049BF4 7FFDF000 000E0000 0102E834 00000000 00FF16D0 00000000 005313F2

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\DADOS\INFO_IN_.EXE
0x7C900000 0x000B3000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00092000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV

Called from DBCOMMIT(0)
Called from OPB_INCL(450) in OPBAIXA.prg
Called from OPBAIXA(37) in OPBAIXA.prg
Called from INF_MENU(721) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\dados\INFO_IN_.EXE
Terminated at: 2011.05.13 16:02:48
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:0052C981
    EAX:0093E4B4  EBX:010246D8  ECX:0000000B  EDX:00000001
    ESI:00000000  EDI:00000032  EBP:00000000
    CS:EIP:001B:0052C981  SS:ESP:0023:0022EF60
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010206
    CS:EIP: 8B 4D 34 C6 44 24 30 69 BE 06 00 00 00 8B 43 40
    SS:ESP: 0105491C BAF3ECFC 00000000 0108FC44 0000000C 00000001 00F1F36C 0044275D 00F015EC 00F015CC 0093E4B4 00458192 00F015CC 00F015EC 010A1514 0062BD98

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...

Modules:
0x00400000 0x00564000 G:\poliv1\dados\INFO_IN_.EXE
0x7C900000 0x000B6000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00093000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV
0x76360000 0x0001D000 C:\WINDOWS\system32\IMM32.DLL

Called from DBUNLOCK(0)
Called from REPBLO(1813) in libg2.prg
Called from ITE_GET1(1510) in NfiSCAL.prg  ==> REPBLO('ORDPROD->impressa',{|| 'F' })
Called from (b)INTREF(1868) in INF_PROC.prg
Called from INTREF(1868) in INF_PROC.prg
Called from NFI_GET1(875) in NfiSCAL.prg
Called from EDIT(1616) in INF_PROC.prg
Called from NFISCAL(79) in NfiSCAL.prg
Called from INF_MENU(171) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\dados\INFO_IN_.EXE
Terminated at: 2011.05.13 16:03:32
Erro irrecuper vel 6005: Exception error: 

    Exception Code:C0000005
    Exception Address:00000006
    EAX:00000006  EBX:01031984  ECX:00000000  EDX:01041C48
    ESI:0001EC00  EDI:0104245C  EBP:01041C94
    CS:EIP:001B:00000006  SS:ESP:0023:0022F2DC
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010202
    CS:EIP:
    SS:ESP: 0052C41F 01041C54 0103199C 00000400 0001EC00 00000000 00951070 00000000 0042FF9A 010245CC 00F3942C 00F3942C 01042442 010245CC 00000000 00000000

    C stack:
    EIP:     EBP:       Frame: OldEBP, RetAddr, Params...
    00000006 01041C94   0104211C 00000000 00000027 FFFFFFFF 00022000 0103CFCC 01041C54 00000000 00000000 00000001


Modules:
0x00400000 0x00564000 G:\poliv1\dados\INFO_IN_.EXE
0x7C900000 0x000B6000 C:\WINDOWS\system32\ntdll.dll
0x7C800000 0x00100000 C:\WINDOWS\system32\kernel32.dll
0x77F50000 0x000AB000 C:\WINDOWS\system32\ADVAPI32.DLL
0x77DB0000 0x00093000 C:\WINDOWS\system32\RPCRT4.dll
0x77F20000 0x00011000 C:\WINDOWS\system32\Secur32.dll
0x77BF0000 0x00058000 C:\WINDOWS\system32\msvcrt.dll
0x7E360000 0x00091000 C:\WINDOWS\system32\USER32.dll
0x77E50000 0x00049000 C:\WINDOWS\system32\GDI32.dll
0x72FB0000 0x00026000 C:\WINDOWS\system32\WINSPOOL.DRV
0x76360000 0x0001D000 C:\WINDOWS\system32\IMM32.DLL

Called from DBUNLOCK(0)
Called from REPBLO(1813) in libg2.prg
Called from ITE_GET1(1510) in NfiSCAL.prg   ==> REPBLO('ORDPROD->impressa',{|| 'F' })
Called from (b)INTREF(1868) in INF_PROC.prg
Called from INTREF(1868) in INF_PROC.prg
Called from NFI_GET1(875) in NfiSCAL.prg
Called from EDIT(1616) in INF_PROC.prg
Called from NFISCAL(79) in NfiSCAL.prg
Called from INF_MENU(171) in INF_MENU.prg
Called from MAIN(561) in INFO_IND.prg
------------------------------------------------------------------------

* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

DBCOMMIT/DBUNLOCK

Mensagem por Jairo Maia »

Olá Alexandre,

E aqui estou eu dando palmites...
Alexandre Silva escreveu:O que pode fazer um dbcommit ou dbunlock dar erro ? numa aplicacao em rede ?
No clipper nao dava...
Vc disse em outro tópico que este banco de dados é acessado também por outra aplicação simultaneamente. Acredito que a outra aplicação também seja em Harbour, mesmo assim, será que no seu caso não requer a definição do regime de bloqueio?

O comando SET DBFLOCKSCHEME TO <definição>, tem as seguintes opções de definição:
DB_DBFLOCK_DEFAULT 0 Default locking scheme
DB_DBFLOCK_CLIP 1 Clipper 5.2 locking scheme
DB_DBFLOCK_CL53 2 Clipper 5.3 locking scheme
DB_DBFLOCK_VFP 3 Visual FoxPro locking scheme
DB_DBFLOCK_CL53EXT 4 Emulated shared locking
DB_DBFLOCK_XHB64 5 Locking scheme for files > 4GB
Veja que tem a opção para DBFCDX, a 3, para Visual Fox Pro, mas não sei se tem no Harbour algo para DBFNSX, ou se alguma dessas se aplicaria a seu caso, p.ex. a do Clipper 5.2:

SET DBFLOCKSCHEME TO 1

Retirei isso do "xHarbour's Language Reference Guide", e não conheço se Harbour tem algo mais especifico para o Rdd DBFNSX.

Talves se alguém usa esse comando, possa explicar melhor.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

Jairo Maia escreveu:Acredito que a outra aplicação também seja em Harbour, mesmo assim, será que no seu caso não requer a definição do regime de bloqueio?
A outra aplicacao apenas faz um dbfsetindex() para os indices da ORDPROD.. nao grava nada no dbf...
e essa aplicaca é rodada uma vez por dia.. a tarde... o erro esta acontecendo no começo da manha...

Nesse momento em 3 estacoes lendo etiquetas de ordem de producao...
Separacao. muda SITUACAO para S, sao solas que estao Separadas, (injetadas e prontas)
Aleleier, muda situacao para A, quando as caixas sao embarcadas no cominhao..
EXPEDICAO, mercadoria pronta e encaixotada, muda SITUACAO para E (expedica)
Essa ultima é que dá com problema..sempre no DBCOMMIT() que faz o replace para E
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

DBCOMMIT/DBUNLOCK

Mensagem por Jairo Maia »

Olá Alexandre,

Mas se vc tem mais de 200 DBFs e somente neste dá problema, e justamente num banco de dados que é acessado por uma aplicação externa em determinado momento, eu arriscaria o seguinte:

1- No inicio da Funcção OPBAIXA(), eu colocaria:

Código: Selecionar todos

SET DBFLOCKSCHEME TO 1 // compatibiliza para Clipper 5.2
2- No final, antes de Return, eu colocaria:

Código: Selecionar todos

SET DBFLOCKSCHEME TO 0  // mantém regime padrão.
Tente fazer isso, e veja o que acontece.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

Vou fazer.. segunda feira de manha vai estar rodando.
valeu
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

Erros apos colococar o SET DBFLOCKSCHEME TO 1 // <==== compatibiliza para Clipper 5.2e
O que mudou foi esse ultimo erro:
Erro irrecuper vel 9102: hb_nsxBlockWrite on not locked index file.

Os erros acontecem quando 2 ou 3 estacoes estao fazendo replace na Ordem de Producao, simultaneamente..

Código: Selecionar todos

------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.16 09:46:23
Erro irrecuper vel 6005: Exception error: 


Called from DBCOMMIT(0)
Called from OPB_INCL(0) in OPBAIXA.prg
Called from OPBAIXA(0) in OPBAIXA.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.16 09:49:35
Erro irrecuper vel 6005: Exception error: 

Called from DBCOMMIT(0)
Called from OPB_INCL(0) in OPBAIXA.prg
Called from OPBAIXA(0) in OPBAIXA.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.16 10:16:42
Erro irrecuper vel 6005: Exception error: 

Called from DBCOMMIT(0)
Called from OPB_INCL(0) in OPBAIXA.prg
Called from OPBAIXA(0) in OPBAIXA.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.16 10:18:47
Erro irrecuper vel 9102: hb_nsxBlockWrite on not locked index file.
Called from DBCOMMIT(0)
Called from OPB_INCL(0) in OPBAIXA.prg
Called from OPBAIXA(0) in OPBAIXA.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------

* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

DBCOMMIT/DBUNLOCK

Mensagem por Jairo Maia »

Olá Alexandre,

Erro de bloqueio??? Você se certificou que está bloqueando o registro?

O bloco onde ocorre as atualizações está assim?

Código: Selecionar todos

IF okprocesso .and. BLOREG(0,.5)  // Você está bloqueando o registro aqui?

      [......] 

      if vgravou
         dbcommit() 
         Unlock        // você está liberando o registro aqui?
      endif
   endif
 endif
Se estiver assim, ai pode esquecer uma possível solução com DbfLockScheme. Então esse recurso não funciona no seu caso.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

Oi,, Jairo..nao.. a liberacao nao é condicionada..cada Bloreg() tem seu dbunlock()

Código: Selecionar todos

IF okprocesso .and. BLOREG(0,.5)  // Você está bloqueando o registro aqui?
      [......] 
      if vgravou
          dbcommit() 
       endif
    endif
    dbunlock() // <===
endif
Passei a gravar a cadas 6 etiquetas,,e continua dando erro,.. e acabou dando erro em outro lugar, onde gera as etiquetas.. rotina que faz indexacao temporaria...

Código: Selecionar todos

------------------------------------------------------------------------
Application Internal Error - G:\poliv1\DADOS\INFO_IN_.EXE
Terminated at: 2011.05.17 06:41:33
Erro irrecuperavel 6005: Exception error: 


Called from DBUNLOCK(0)
Called from OPB_INCL(0) in OPBAIXA.prg
Called from OPBAIXA(0) in OPBAIXA.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------
Application Internal Error - G:\poliv1\dados\INFO_IN_.EXE
Terminated at: 2011.05.17 09:03:44
Erro irrecuperavel 6005: Exception error: 


Called from ORDCREATE(0)    // <====
Called from INDTMP(0) in INF_PROC.prg   // Indecacao temporaria..
Called from OPCOES_ETQ(0) in INF_FUN2.prg
Called from INF_E012(0) in INF_E012.prg    // <=== Rotina que gera etiquetas
Called from INF_P001(0) in INF_P001.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------


* Erro tb na modificaca da Ordem de Producao , tudo ligado a indice ... indexkey ordkey. é um pesadelo..
esse erro da dando com frequencia...
Called from INDEXKEY(0) in ../../../rddord.prg ( eu nao tenho esse rddord.prg)

Voce viu que tem um topico recente, perguntado se pode usar NSX no Harbour .
viewtopic.php?f=4&t=11963&p=68527&hilit=hbsix+lib#p68527

Será que tem problemas ainda de NSX no Harbour ? ou ta faltando algum flag ou lib ba minha compilacao ?
Porque o sistema funciona com varios arquivos e rotinas e dá problema só na ordem de producao..(que no clipper nao dava)

Código: Selecionar todos

------------------------------------------------------------------------
Application Internal Error - G:\poliv1\dados\INFO_IN_.EXE
Terminated at: 2011.05.17 10:51:17
Erro irrecuperavel 6005: Exception error: 

Called from ORDKEY(0)
Called from INDEXKEY(0) in ../../../rddord.prg
Called from INTREF(0) in INF_PROC.prg
Called from ORD_GET1(0) in ORDPROD.prg
Called from BRWFUNC(0) in INF_FUNC.prg
Called from EDITA(0) in INF_FUNC.prg
Called from ORDPROD(0) in ORDPROD.prg
Called from INF_MENU(0) in INF_MENU.prg
Called from MAIN(0) in INFO_IND.prg
------------------------------------------------------------------------

* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBCOMMIT/DBUNLOCK

Mensagem por asimoes »

Alexandre,

O ideal seria você trocar esse indice para CDX se não for complicado.

[]´s
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBCOMMIT/DBUNLOCK

Mensagem por asimoes »

Alexandre,

Mostra pra gente essa função BloReg()
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBCOMMIT/DBUNLOCK

Mensagem por asimoes »

Alexandre,

Pesquisando na pasta examples\hbapollo do harbour achei este código, não sei se vai ajudar você.

Código: Selecionar todos

/*
 * $Id: apollo.prg 12734 2009-10-19 23:21:43Z vszakats $
 */

/*
 * Harbour Project source code:
 * Test VistaSoftware's Apollo database driver. See http://www.VistaSoftware.com
 *
 * Copyright 2001 Patrick Mast <email@PatrickMast.com>
 * www - http://www.harbour-project.org
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this software; see the file COPYING.  If not, write to
 * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
 * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/).
 *
 * As a special exception, the Harbour Project gives permission for
 * additional uses of the text contained in its release of Harbour.
 *
 * The exception is that, if you link the Harbour libraries with other
 * files to produce an executable, this does not by itself cause the
 * resulting executable to be covered by the GNU General Public License.
 * Your use of that executable is in no way restricted on account of
 * linking the Harbour library code into it.
 *
 * This exception does not however invalidate any other reasons why
 * the executable file might be covered by the GNU General Public License.
 *
 * This exception applies only to the code released by the Harbour
 * Project under the name Harbour.  If you copy code from other
 * Harbour Project or Free Software Foundation releases into a copy of
 * Harbour, as the General Public License permits, the exception does
 * not apply to the code that you add in this way.  To avoid misleading
 * anyone as to the status of such modified files, you must delete
 * this exception notice from them.
 *
 * If you write modifications of your own for Harbour, it is your choice
 * whether to permit this exception to apply to your modifications.
 * If you do not wish that, delete this exception notice.
 *
 */

#include "apollo.ch"


PROCEDURE Main()
LOCAL nAlias
LOCAL f

   SET DATE FRENCH
   SET CENTURY ON

   sx_SetMemoBlockSize( 32 )
   sx_SetDateFormat( SX_FRENCH )
   sx_SetCentury( .T. )

   ? "Apollo version " + sx_Version()

   ? ""
   ? "Cleaning up files.."
   FErase( "test.dbf" )
   FErase( "test.smt" )
   FErase( "test.nsx" )
   ? "OK!"

   ? ""
   ? "Creating a new database file.."
   nAlias := sx_CreateNew("test.dbf",;  // full path filename
                          "test1",;     // Alias
                          SX_SDENSX,;   // rdeType
                          6)            // Maximum fields added by sx_CreateField
   IF nAlias == 0
      ? "Error creating database"
      RETURN
   ENDIF

   sx_CreateField("FIRST"   ,"C",40,0)
   sx_CreateField("LAST"    ,"C",40,0)
   sx_CreateField("NOTES"   ,"M",10,0)
   sx_CreateField("AGE"     ,"N", 4,0)
   sx_CreateField("MARRIED" ,"L", 1,0)
   sx_CreateField("BIRTDATE","D", 8,0)

   sx_CreateExec()
   sx_Close()
   ?? "OK!"

   nAlias := sx_Use("test.dbf","test2",SX_EXCLUSIVE,SX_SDENSX)
   sx_Zap()
   IF Valtype(nAlias) == "N" .AND. nAlias != 0
      ? "OK opening 'test.dbf'"


      ? "Adding 1000 records..."
      FOR f := 1 to 1000
         sx_AppendBlank()
         sx_Replace("FIRST"    , SX_R_CHAR   , "Patrick " + Str( f ) )
         sx_Replace("LAST"     , SX_R_CHAR   , LTrim( Str( f ) ) + " Mast" )
         sx_Replace("NOTES"    , SX_R_MEMO   , "This is record " + LTrim( Str( f ) ) )
         sx_Replace("AGE"      , SX_R_DOUBLE , f )
         sx_Replace("BIRTDATE" , SX_R_DATESTR, DtoC( Date() ) )
      // sx_Replace("MARRIED"  , SX_R_LOGICAL, iif(f%5==2,1,0) ) /* Logical does not work yet.. */
         sx_Commit()
      NEXT


      ? "Creating Index..."
      sx_IndexTag(,"LAST","LAST+FIRST",0)
      ? "Created a HiPer-Six index. See 'test.nsx'"


      sx_GoTop()
      WHILE !sx_Eof()
         ? ""
         ? "RecNo...... : " + LTrim( Str( sx_RecNo() ) )
         ? "Last name.. : " + sx_GetVariant( "LAST" )
         ? "Birth date. : " + sx_GetVariant( "BIRTDATE" )
         ? "Married.... : " + iif( sx_GetLogical( "MARRIED" ) , "Yes", "No, SINGLE!!")
         sx_Skip(1)
      ENDDO


      ? ""
      sx_GoTop()
      sx_SetSoftSeek( .F. ) // SetSoftSeek OFF
      IF sx_Seek( "928 Mast" )
         ? "String '928 Mast' found in record number "+ LTrim( Str( sx_RecNo() ) )
      ELSE
         ? "String '928 Mast' NOT Found..."
      ENDIF


      ? ""
      ? "There are "+LTrim( Str( sx_RecCount()  ) )+" records in the database"

      ?
      ? "Reindexing now..."
      sx_ReIndex()
      ?? "OK!"


      sx_Close()

   ELSE
      ? "ERROR Opening 'test.dbf'"
   ENDIF

return
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBCOMMIT/DBUNLOCK

Mensagem por asimoes »

Alexandre

Na página do harbour / news

New Apollo.lib for SIXNSX database connection via SDE60.DLL

è de 15/01/2002

Provavelmente esta é forma de trabalhar com SIXNSX
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

Oi amigo..
Acho que é a funcao bloreg(), o erro acontece so na ordem de producao e só quando grava um campo que faz parte das chaves secundarias, no caso, campo impressa, caracter 1, que indica o status da Ordem de producao..
Outras rotinas e outros dbf nao dao problema...

Funcao Bloreg..

Código: Selecionar todos

Function BLOREG(xArg1,xArg2)
Local xVar1,xVar2,xVar3,xVar4
xArg1:= IIf(PCount() = 0,0,xArg1)
xArg2:= IIf(PCount() < 2,1,xArg2)
xVar1:= xArg1 = 0
xVar2:= xArg1
xVar3:= .F.
xVar4:= nextkey()
Do While (xArg1 >= 0 .AND. LastKey() # 27 .OR. xVar1)
   If (RLock())
      xVar3:= .T.
      Exit
   EndIf
   dbox("Tentando bloquear|"+IIf(xVar1,"(NAO","(ESC")+" cancela)",15,Nil,xArg2,Nil,"OUTRO USUARIO ACESSANDO|O REGISTRO")
   xArg1:= xArg1-xArg2
EndDo
If (xVar4 == 0)
   Clear Typeahead
EndIf
Return xVar3


* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

DBCOMMIT/DBUNLOCK

Mensagem por Alexandre Silva »

asimoes escreveu: O ideal seria você trocar esse indice para CDX se não for complicado.
[]´s
No Gaspro, ja cheguei a fazer isso, mas a indexao fez um indice CDX, para cada indice do arquivo..
nao fez aquele arquivo unico..se fosse cliente.dbf
cliente1.cdx
cliente2.cdx
cliente3.cdx
Começou dar erro, nao tenho o codigo agora, mas era relativo a chave unica..ai nao abria mais nada...
Fora o inconveniente que tem arquivos com DBT que da problema com CDX..acabei voltando pois o sistema só dá problema da Ordem de producao..sempre no COMMIT ou UNLOCK, e to ainda tentando resolver apos 3 semanas..

Vi sua sugestao dos indices apollo, e agradeço,. mas o sistema é gerado em gaspro, e teria que mudar todas as funcoes de seek, replace, criacao, indexacao, go top, tudo que mexe com arquivo...
o que me leva a uma questao, todos que trabalham com Harbour aparentemente usam o CDX..é isso mesmo.. ?


Indexaca no GASPRO

Código: Selecionar todos

 FOR t=1 TO LEN(sistema[op_sis,O_INDIC])       // recria todos os indicies do arquivo
       ntx=sistema[op_sis,O_ARQUI,O_DIR_NTX]+sistema[op_sis,O_INDIC,t]+EXTENSAO()   // nome do indice
       POE_GAUGE("Classificando o arquivo|"+ntx,"AGUARDE!")
       chvind=sistema[op_sis,O_CHAVE,t]   // chave de indexacao
       INDE ON &chvind. TO (ntx) 
NEXT
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

DBCOMMIT/DBUNLOCK

Mensagem por asimoes »

Alexandre,

Veja este código para testar,
Já fiz o teste aqui. Não apresentou erro.

Código: Selecionar todos

REQUEST DBFNSX
FUNCTION Main
   LOCAL lPrim := .f.
   LOCAL nI  := 1

   FIELD DATA, PROD
   RDDSetDefault( "DBFNSX" )
   Set( 5, 1930 )

   ? "Criando DBF..."
   CreateDBF()
   USE TIRAGEM2 NEW
   INDEX ON dToS( DATA ) + PROD TAG TIRA_DAT
   ordListAdd( "TIRAGEN2" )
   FOR nI := 1 TO 3
      dbAppend()
      DATA := date() + nI
      PROD := "99"
      dbCommit()
   NEXT
   ? "Atualizando..."
   DbGoTop()
   FOR nI := 1 TO 3
      TIRAGEM2->(DbRLock())
      DATA := date() + nI
      PROD := "99"
      TIRAGEM2->(DbCommit())
      TIRAGEM2->(DbUnlock())
   NEXT
   USE
RETURN ( NIL )

FUNCTION CreateDBF
LOCAL aStru := {}
aAdd( aStru, { "DATA", "D", 8, 0 } )
aAdd( aStru, { "PROD", "C", 2, 0 } )
dbCreate( "TIRAGEM2", aStru )
RETURN ( NIL )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder