dbusearea() X copy to

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

Moderador: Moderadores

Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

dbusearea() X copy to

Mensagem 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()
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

dbusearea() X copy to

Mensagem por cjp »

Testei com copy to (arqsp) via "DBFNTX", mas também não funcionou.

Com certeza entra no if, já testei especificamente.
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

dbusearea() X copy to

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

dbusearea() X copy to

Mensagem 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.
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)
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

dbusearea() X copy to

Mensagem 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?
Inacio de Carvalho Neto
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

dbusearea() X copy to

Mensagem 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
------------------------------------------------------------------------
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

dbusearea() X copy to

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

dbusearea() X copy to

Mensagem 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?
Inacio de Carvalho Neto
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

dbusearea() X copy to

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
cjp
Usuário Nível 6
Usuário Nível 6
Mensagens: 1563
Registrado em: 19 Nov 2010 22:29
Localização: paraná
Contato:

dbusearea() X copy to

Mensagem 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?
Inacio de Carvalho Neto
Responder