Página 1 de 1

erro em dbcreate

Enviado: 06 Mai 2017 01:24
por cjp
Pessoal, estou tendo erro no dbcreate frequentemente.

A função tá assim:

Código: Selecionar todos

if !file("salvquer.dbf")
   aadd(nvestr,{"query","C",2500,00})
   aadd(nvestr,{"vez","N",1,00})
   dbcreate("salvquer",nvestr)
endif
Como o erro só ocorre com usuários, não comigo, não consigo saber a causa do erro; nem mesmo consigo testar se o arquivo salvquer.dbf realmente não existe (o que justificaria o erro).

O que mais me incomoda é que neste caso não está dando erro comum, que eu consigo contornar com begin sequence. Está fechando o sistema diretamente, sendo que o erro só aparece no hb_out.log, desta maneira:

Código: Selecionar todos

Application Internal Error - C:\processos\PROC2P.exe Terminated at: 2017-05-06 00:02:09 Erro irrecuper vel 6005: Exception error:

    Exception Code:C0000005
    Exception Address:0041F441
    EAX:00000000  EBX:00805364  ECX:00000001  EDX:00000000
    ESI:00805364  EDI:00000001  EBP:00000000
    CS:EIP:0023:0041F441  SS:ESP:002B:0029F7B0
    DS:002B  ES:002B  FS:0053  GS:002B
    Flags:00010202
    CS:EIP: 8B 38 0F 86 EA 00 00 00 8B 86 BC 00 00 00 85 C0
    SS:ESP: 0002807F 00807C80 00000000 0042BA77 000009C9 0066DAF9 00000000 0043D135 00000028 00000059 00000000 0041D054 00805364 00000000 00000016 00440050

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

Modules:
0x00400000 0x00320000 C:\processos\PROC2P.exe
0x77660000 0x00179000 C:\Windows\SYSTEM32\ntdll.dll
0x74D50000 0x000F0000 C:\Windows\SYSTEM32\KERNEL32.DLL
0x774E0000 0x00176000 C:\Windows\SYSTEM32\KERNELBASE.dll
0x75020000 0x0007B000 C:\Windows\SYSTEM32\ADVAPI32.DLL
0x74F00000 0x000BE000 C:\Windows\SYSTEM32\msvcrt.dll
0x74790000 0x00043000 C:\Windows\SYSTEM32\sechost.dll
0x74E40000 0x000AC000 C:\Windows\SYSTEM32\RPCRT4.dll
0x74770000 0x0001E000 C:\Windows\SYSTEM32\SspiCli.dll
0x74760000 0x0000A000 C:\Windows\SYSTEM32\CRYPTBASE.dll
0x74700000 0x00059000 C:\Windows\SYSTEM32\bcryptPrimitives.dll
0x74C00000 0x0014D000 C:\Windows\SYSTEM32\GDI32.dll
0x75100000 0x00140000 C:\Windows\SYSTEM32\USER32.dll
0x74910000 0x000EA000 C:\Windows\SYSTEM32\OLE32.dll
0x74A10000 0x001BA000 C:\Windows\SYSTEM32\combase.dll
0x755B0000 0x00095000 C:\Windows\SYSTEM32\OLEAUT32.DLL
0x75650000 0x013BF000 C:\Windows\SYSTEM32\SHELL32.DLL
0x76DA0000 0x004DC000 C:\Windows\SYSTEM32\windows.storage.dll
0x75240000 0x00044000 C:\Windows\SYSTEM32\shlwapi.dll
0x75350000 0x0000C000 C:\Windows\SYSTEM32\kernel.appcore.dll
0x77450000 0x0008D000 C:\Windows\SYSTEM32\shcore.dll
0x76A10000 0x00044000 C:\Windows\SYSTEM32\powrprof.dll
0x74A00000 0x0000F000 C:\Windows\SYSTEM32\profapi.dll
0x74FC0000 0x0005B000 C:\Windows\SYSTEM32\WS2_32.dll
0x750F0000 0x00007000 C:\Windows\SYSTEM32\NSI.dll
0x745A0000 0x00030000 C:\Windows\SYSTEM32\IPHLPAPI.DLL
0x6EBC0000 0x00099000 C:\Windows\SYSTEM32\ODBC32.dll
0x72070000 0x00067000 C:\Windows\SYSTEM32\WINSPOOL.DRV
0x74590000 0x00008000 C:\Windows\SYSTEM32\WINNSI.DLL
0x6F6B0000 0x00008000 C:\Windows\SYSTEM32\DPAPI.dll
0x74620000 0x0001B000 C:\Windows\SYSTEM32\bcrypt.dll
0x74BD0000 0x0002B000 C:\Windows\SYSTEM32\IMM32.DLL
0x75430000 0x00120000 C:\Windows\SYSTEM32\MSCTF.dll
0x6D5B0000 0x00121000 C:\Program Files (x86)\GbPlugin\gbpinj.dll
0x746C0000 0x00028000 C:\Windows\SYSTEM32\ntmarta.dll
0x6F690000 0x00012000 C:\Windows\system32\napinsp.dll
0x6EBA0000 0x00016000 C:\Windows\system32\pnrpnsp.dll
0x6F7C0000 0x00013000 C:\Windows\system32\NLAapi.dll
0x74540000 0x0004E000 C:\Windows\System32\mswsock.dll
0x724C0000 0x00084000 C:\Windows\SYSTEM32\DNSAPI.dll
0x6F680000 0x0000B000 C:\Windows\System32\winrnr.dll
0x6EB80000 0x00011000 C:\Windows\system32\wshbth.dll
0x72310000 0x00046000 C:\Windows\System32\fwpuclnt.dll
0x72360000 0x00008000 C:\Windows\System32\rasadhlp.dll
0x6D6E0000 0x0046A000 C:\Program Files (x86)\MySQL\Connector ODBC 3.51\myodbc3.dll
0x71F80000 0x0000A000 C:\Windows\SYSTEM32\Secur32.dll
0x74510000 0x00008000 C:\Windows\SYSTEM32\WSOCK32.dll

Called from DBCREATE(0)
Called from SALVQUERY(31417) in \prg\COMUNS.PRG Called from CADATIV(26586) in \prg\COMUNS.PRG Called from EXECSEMC(35835) in \prg\COMUNS.PRG Called from EXQSALVA(31553) in \prg\COMUNS.PRG Called from PROC2P(355) in \prg\PROC2P.PRG Called from MAIN(67) in \prg\PROC2P.PRG
A linha 31417 apontada é justamente a do dbcreate().

Alguém poderia me ajudar nisto?

erro em dbcreate

Enviado: 06 Mai 2017 07:42
por gilbertosilverio
Ola,

Tive um problema parecido, tinha 45 usuários TS e somente em um usuário, não conseguia gerar um arquivo temporário pelo dbcreate, mudei a síntese do dbcreate e funcionou... Ele dava a mensagem de erro de abertura...

Voce usa:

dbcreate("salvquer",nvestr)

Tenta assim:

Private nvestr:={}
Private dArquivo:= curdrive+":"+curdirX()+"salvquer.dbf"

dbcreate( dArquivo , nvestr, "dfbcdx", .t. )

Parece redundância, mais como descrevi, em 44 funcionava como você usava, mais para poder fazer funcionar em um único cliente TS, tive que usar desta maneira, ate hoje procuro a explicação...

erro em dbcreate

Enviado: 06 Mai 2017 18:52
por JoséQuintas
Vi nas DLLs usadas que tem a do MySQL. Está fazendo isso como DBF ou como MySQL por causa de alguma RDD ?

Notei que postou esse erro e outro de webservice.
Por acaso está usando algo de oledb do xHarbour (xhb.hbc) ?
Se estiver, não use mais, afeta o funcionamento de outras coisas.

erro em dbcreate

Enviado: 08 Mai 2017 00:51
por cjp
Não estou usando oledb não (na verdade nem sei o que é isto).

Mas vc me alertou para o fato de que o problema pode ser na RDD. Uso sim MySQL, e alterno as RDDs, mas pode ter algum erro nisso. Vou verificar e corrigir se for o caso.

Se não for esse o problema, vou testar a sugestão do Gilberto.

Obrigado, por enquanto.

erro em dbcreate

Enviado: 08 Mai 2017 09:43
por Kapiaba

Código: Selecionar todos

aadd(nvestr,{"query","C",2500,00})
2.500 Caracteres?

erro em dbcreate

Enviado: 08 Mai 2017 14:17
por cjp
Sim, isso mesmo, funciona tranquilo.

erro em dbcreate

Enviado: 08 Mai 2017 15:01
por JoséQuintas
Não pode ser a lógica do seu fonte?

Código: Selecionar todos

if !file("salvquer.dbf")
   aadd(nvestr,{"query","C",2500,00})
   aadd(nvestr,{"vez","N",1,00})
   dbcreate("salvquer",nvestr)
endif
Isso vai adicionar os campos a um array já existente, o que pode misturar estruturas.
Talvez mais seguro assim:

Código: Selecionar todos

IF ! File( "salvquer.dbf" )
   dbCreate( "salvquer", { ;
      { "query", "C", 2500, 0 }, ;
      { "vez",  "N", 1, 0 }  ; // atenção: no último não tem vírgula, é normal confundir isso
       } )
ENDIF

erro em dbcreate

Enviado: 08 Mai 2017 15:18
por cjp
Creio que não, pois eu estou inicializando nvestr como uma array vazia. Eu não postei a função toda antes, mas veja abaixo:

Código: Selecionar todos

function salvquery(cquery)
 local nvestr :={}
 local nrs := select()
 local ret := "S"
 RDDSETDEFAULT("DBFNTX")
 if !file("salvquer.dbf")
    aadd(nvestr,{"query","C",2500,00})
    add(nvestr,{"vez","N",1,00})
 endif
...
Está cedo para afirmar que resolveu totalmente, já que o problema ocorria apenas eventualmente, mas desde que incluí RDDSETDEFAULT("DBFNTX"), não tive mais nenhum problema. Espero que tenha resolvido.