Página 2 de 2

dbusearea() X copy to

Enviado: 20 Out 2014 08:52
por Jairo Maia
Inácio,
Além da observação do Itamar, você tem certeza que o comando Copy To está sendo executado? Ou seja, estas condicionais estão sendo atendidas?

Código: Selecionar todos

if "URGSQL"$procname(1) .or. "URGSQL"$procname(2) .or. "URGSQL"$procname(3) .or. "URGSQL"$procname(4)
e
if conexsql()

dbusearea() X copy to

Enviado: 20 Out 2014 11:08
por cjp
Testei com copy to (arqsp) via "DBFNTX", mas também não funcionou.

Com certeza entra no if, já testei especificamente.

dbusearea() X copy to

Enviado: 20 Out 2014 11:58
por Itamar M. Lins Jr.
Quais são os tipos, tamanhos etc... está tudo compatível com DBF ?
Os dados tem algum campo "NIL" ? etc...

Saudações,
Itamar M. Lins Jr.

dbusearea() X copy to

Enviado: 20 Out 2014 12:15
por Jairo Maia
Apenas acrescentando: Então, para saber se é alguma incompatibilidade com a estrutura do dbf, coloque ACIMA de: copy to (arqsp) via "DBFNTX", o comando Copy To (arqsp) DELIMITED. Istoirá criar também um arquivo .Txt com os dados. Se o .Txt com os dados for criado e o .Dbf não, então remova seus controles de erros porque está havendo erro e não sendo exibido.

PS: coloque o comando indicado acima do existente. Porque se há erro na seu comando, o que irá gerar o .Txt não será executado.

dbusearea() X copy to

Enviado: 20 Out 2014 12:36
por cjp
A estrutura da tabela TAREFAS no banco de dados é a seguinte:

Código: Selecionar todos

          "USUARIO char(1),"+;
	      "NRTAREFA char(10),"+;
	      "DTEXIBE date,"+;
          "HREXIBE char(8),"+;
	      "DTMAXIMA date,"+;
          "PRIORIDADE int,"+;
          "INCLUIDOR char(15),"+;
		  "SOLUC char(1),"+;
		  "EXIBE char(1),"+;
		  "VINCULO char(20),"+;
		  "TEMPOESTIM decimal(7,1),"+;
		  "TEMPOUSADO decimal(7,1),"+;
		  "TEMPOCOMPU decimal(7,1),"+;
		  "CAMPO char(1),"+;
          "ASSUNTO char(30),"+;
		  "DATA date,"+;
          "HORA char(8),"+;
          "TAREFA mediumtext)"
Mas o select está selecionando apenas os campos prioridade, assunto, tarefa, exibe e soluc.

Já conferi que não tem campos com NIL.

Será que o fato de o campo TAREFA estar como MEDIUMTEXT seria a causa? É incompatível com DBF?

dbusearea() X copy to

Enviado: 20 Out 2014 12:40
por cjp
Deu erro com o DELIMITED. Veja:

Código: Selecionar todos

Application Internal Error - C:\tarefas\TAREFAS.EXE
Terminated at: 2014-10-20 12:38:50
Erro irrecuper vel 6005: Exception error:

    Exception Code:C0000005
    Exception Address:0054E46D
    EAX:20202020  EBX:01A0AF0C  ECX:00000000  EDX:00000004
    ESI:01A1B720  EDI:01A19EEC  EBP:00000002
    CS:EIP:001B:0054E46D  SS:ESP:0023:0022F5B0
    DS:0023  ES:0023  FS:003B  GS:0000
    Flags:00010202
    CS:EIP: FF 50 58 85 C0 74 BF 89 C3 8B 44 24 1C 89 04 24
    SS:ESP: 01A19EEC 00000004 01A0AF0C 0041D6E7 01A19EEC 00000001 01A0AD54 01A0AF0C 0022F678 00000000 00000000 0041D780 01A19EEC 00000001 00000002 01A19EEC

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

Modules:
0x00400000 0x002E7000 C:\tarefas\TAREFAS.EXE
0x76EB0000 0x0013C000 C:\Windows\SYSTEM32\ntdll.dll
0x75310000 0x000D4000 C:\Windows\system32\kernel32.dll
0x751D0000 0x0004B000 C:\Windows\system32\KERNELBASE.dll
0x75620000 0x000A0000 C:\Windows\system32\ADVAPI32.DLL
0x76840000 0x000AC000 C:\Windows\system32\msvcrt.dll
0x756C0000 0x00019000 C:\Windows\SYSTEM32\sechost.dll
0x76730000 0x000A2000 C:\Windows\system32\RPCRT4.dll
0x75220000 0x0004E000 C:\Windows\system32\GDI32.dll
0x76330000 0x000C9000 C:\Windows\system32\USER32.dll
0x77010000 0x0000A000 C:\Windows\system32\LPK.dll
0x75270000 0x0009D000 C:\Windows\system32\USP10.dll
0x72340000 0x0001C000 C:\Windows\system32\IPHLPAPI.DLL
0x77000000 0x00006000 C:\Windows\system32\NSI.dll
0x72330000 0x00007000 C:\Windows\system32\WINNSI.DLL
0x6AFB0000 0x0008C000 C:\Windows\system32\ODBC32.dll
0x768F0000 0x0015C000 C:\Windows\system32\OLE32.dll
0x75590000 0x0008F000 C:\Windows\system32\OLEAUT32.DLL
0x707C0000 0x00051000 C:\Windows\system32\WINSPOOL.DRV
0x77080000 0x00035000 C:\Windows\system32\WS2_32.dll
0x770C0000 0x0001F000 C:\Windows\system32\IMM32.DLL
0x765D0000 0x000CC000 C:\Windows\system32\MSCTF.dll
0x6ADC0000 0x00038000 C:\Windows\system32\odbcint.dll
0x74DC0000 0x0004C000 C:\Windows\system32\apphelp.dll
0x74A40000 0x00017000 C:\Windows\system32\bcrypt.dll
0x745E0000 0x0003D000 C:\Windows\system32\bcryptprimitives.dll
0x644C0000 0x0046A000 C:\Program Files\MySQL\Connector ODBC 3.51\myodbc3.dll
0x74D60000 0x00008000 C:\Windows\system32\Secur32.dll
0x74DA0000 0x0001B000 C:\Windows\system32\SSPICLI.DLL
0x6F640000 0x00007000 C:\Windows\system32\WSOCK32.dll
0x71C70000 0x00010000 C:\Windows\system32\NLAapi.dll
0x6C020000 0x00010000 C:\Windows\system32\napinsp.dll
0x6C000000 0x00012000 C:\Windows\system32\pnrpnsp.dll
0x748F0000 0x0003C000 C:\Windows\System32\mswsock.dll
0x747B0000 0x00044000 C:\Windows\system32\DNSAPI.dll
0x6BFF0000 0x00008000 C:\Windows\System32\winrnr.dll
0x6BFC0000 0x00021000 C:\Program Files\Bonjour\mdnsNSP.dll
0x6A950000 0x00006000 C:\Windows\system32\rasadhlp.dll
0x731E0000 0x00005000 C:\Windows\System32\wshtcpip.dll
0x748E0000 0x00006000 C:\Windows\System32\wship6.dll
0x719E0000 0x00038000 C:\Windows\System32\fwpuclnt.dll

Called from __DBCOPY(0)
Called from __DBDELIM(0) in ../../../dbdelim.prg
Called from FTECENTER(9192) in COMUNS.PRG
Called from RESPONDE(9137) in COMUNS.PRG
Called from CALLUSER(0) in ../../../dbedit.prg
Called from DBEDIT(0) in ../../../dbedit.prg
Called from URGSQL(27879) in COMUNS.PRG
Called from CONSULTA(8085) in COMUNS.PRG
Called from TAREFAS(569) in TAREFAS.PRG
Called from MAIN(26) in TAREFAS.PRG
------------------------------------------------------------------------

dbusearea() X copy to

Enviado: 20 Out 2014 13:08
por Itamar M. Lins Jr.
Ainda tem dúvida ? Qual é o DBF que aceita 16,777,215(16Mib) no field CARACTER ?

Código: Selecionar todos

      Type | Maximum length
-----------+-------------------------------------
  TINYTEXT |           255 (2 8−1) bytes
      TEXT |        65,535 (216−1) bytes = 64 KiB
MEDIUMTEXT |    16,777,215 (224−1) bytes = 16 MiB
  LONGTEXT | 4,294,967,295 (232−1) bytes =  4 GiB 
Tem que fazer o dever de casa certinho...

Saudações,
Itamar M. Lins Jr.

dbusearea() X copy to

Enviado: 20 Out 2014 13:43
por cjp
É que eu imaginei que ele poderia eventualmente transformar o campo MEDIUMTEXT num campo caractere comum, ainda que perdendo parte dos dados.

De que outra forma posso resolver isso? A única coisa que me ocorre agora é copiar os campos um a um numa variável e da variável para o DBF, transformando para caractere. Sei que isso não é uma solução muito inteligente, e certamente vai ficar meio lento. Alguém tem alguma sugestão melhor?

dbusearea() X copy to

Enviado: 20 Out 2014 14:00
por Itamar M. Lins Jr.
Ué, e vc precisa desse campo enorme ?
Esses enormes campos tem que saber usar com moderação...
Se vc acreditava que o SQLMIX iria truncar p/ 255 Caracteres porque não faz a modificação ?
Em milhares de registros seria, 16Mibs x 10000 = Muito espaço alocado sem uso... tá certo isso ai, produção ?

Saudações,
Itamar M. Lins Jr.

dbusearea() X copy to

Enviado: 20 Out 2014 19:22
por cjp
De fato era muito espaço desnecessário. Mudei o campo para TEXT, que dá até 65.000 caracteres, o que é suficiente.

Mas o problema permanece: não está copiando. Será que nem nesse tamanho o DBF não suporta?