Criar indices .fpt
Moderador: Moderadores
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Criar indices .fpt
Olá pessoal.
Tenho uma estrutura com um campo memo. Tenho que gerar os índices desta estrutura. Como faço isso no xHabour? Para os índices normais uso:
INDEX ON STR(CDFILIAL,3)+STR(CDCLIENTE,7)+STR(NRNOTAFISC,9)+IDSERIENF+STR(NRSEQITEM,3)+;
STR(NRSEQUENC,3)+STR(CDOBSERV,3) TO ESOBS
Abraços.
Laudelino
Tenho uma estrutura com um campo memo. Tenho que gerar os índices desta estrutura. Como faço isso no xHabour? Para os índices normais uso:
INDEX ON STR(CDFILIAL,3)+STR(CDCLIENTE,7)+STR(NRNOTAFISC,9)+IDSERIENF+STR(NRSEQITEM,3)+;
STR(NRSEQUENC,3)+STR(CDOBSERV,3) TO ESOBS
Abraços.
Laudelino
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar indices .fpt
Você quer dizer CDX, porque FPT é o campo memo antigo DBT.
Não esquecer do REQUEST "DBCDX","DBFFPT"... RDDSETDEFAULT("DBFCDX")...
Tem exemplos aqui no forum...
Saudações,
Itamar M. Lins Jr.
Código: Selecionar todos
INDEX ON STR(CDFILIAL,3)+STR(CDCLIENTE,7)+STR(NRNOTAFISC,9)+IDSERIENF+STR(NRSEQITEM,3)+;
STR(NRSEQUENC,3)+STR(CDOBSERV,3) TAG 001
INDEX on NOME TAG 002
INDEX on CODIGO TAG 003
Tem exemplos aqui no forum...
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Criar indices .fpt
Olá Laudelino,
Não é possível criar índices com campos Memo. Somente os campos com tipos: Caractere, Data, Numérico e Lógico podem ser criados índices.
Não é possível criar índices com campos Memo. Somente os campos com tipos: Caractere, Data, Numérico e Lógico podem ser criados índices.
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)
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)
-
Laudelino Scarmagnani
- Usuário Nível 3

- Mensagens: 303
- Registrado em: 07 Fev 2007 10:54
Criar indices .fpt
Quando crio um campo memo em um arquivo .DBF, é criado um arquivo com o nome da estrutura.fpt. Exemplo
NFAUX.DBF. Dentro dela tenho definido o campo XML tipo MEMO.
NFAUX.CDX ->Primeiro Indice
NFAUX1.CDX -> Segundo Indice.
NFAUX.FPT é criado pelo sistema. Se eu deletar este arquivo por algum motivo, da erro ao setar o arquivo.
Não sei como cria-lo novamente.
Laudelino
NFAUX.DBF. Dentro dela tenho definido o campo XML tipo MEMO.
NFAUX.CDX ->Primeiro Indice
NFAUX1.CDX -> Segundo Indice.
NFAUX.FPT é criado pelo sistema. Se eu deletar este arquivo por algum motivo, da erro ao setar o arquivo.
Não sei como cria-lo novamente.
Laudelino
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Criar indices .fpt
Você não pode deletar um arquivo seja FPT ou DBT, quando você faz isso, não consegue mais abrir o arquivo DBF é normal.
Se deseja apagar um arquivo FPT ou DBT, modifique a estrutura do DBF, apague a campo memo do DBF na estrutura via modi struct...
E ainda está errado sua forma de trabalhar com CDX.
Não fica vários indices CDX, apenas um CDX para cada DBF, e dentro do CDX que é uma sacola (BAG) ficam todos os indices.
Saudações,
Itamar M. Lins Jr.
Se deseja apagar um arquivo FPT ou DBT, modifique a estrutura do DBF, apague a campo memo do DBF na estrutura via modi struct...
E ainda está errado sua forma de trabalhar com CDX.
Não fica vários indices CDX, apenas um CDX para cada DBF, e dentro do CDX que é uma sacola (BAG) ficam todos os indices.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Criar indices .fpt
Tem que lembrar de duas coisas:
- Existe um limite para o tamanho da chave de índice
- A chave do índice precisa tamanho fixo. Ao usar campo memo, isso vai deixar o índice "doidão" e corrompido.
Então pra indexar por um campo memo, teria que fixar um tamanho.
- Existe um limite para o tamanho da chave de índice
- A chave do índice precisa tamanho fixo. Ao usar campo memo, isso vai deixar o índice "doidão" e corrompido.
Então pra indexar por um campo memo, teria que fixar um tamanho.
Código: Selecionar todos
INDEX ON PAD( campomemo, 200 ) TO INDEX
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Criar indices .fpt
Está errado também o raciocínio. Arquivos FPT ou DBT não são índices, mas sim arquivos literais. Quando você grava o XML no campo memo, esse XML não está no DBF mas sim no FPT. É possível recriar um arquivo FPT vazio para ter acesso ao DBF, mas o conteúdo do campo memo se perdeu ao apagar o arquivo.
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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Criar indices .fpt
Ok, vi a primeira mensagem, ele cita sobre indexar por um campo memo.
Em outra mensagem ele diz sobre ter perdido do FPT.
Se for pra indexar, é o que já mencionei.
Se for pra recuperar o FPT:
O conteúdo se perdeu, não há mais como recuperá-lo.
A única opção é criar uma estrutura com o memo, e copiar o FPT vazio pra ocupar o lugar do perdido.
Em outra mensagem ele diz sobre ter perdido do FPT.
Se for pra indexar, é o que já mencionei.
Se for pra recuperar o FPT:
O conteúdo se perdeu, não há mais como recuperá-lo.
A única opção é criar uma estrutura com o memo, e copiar o FPT vazio pra ocupar o lugar do perdido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
Criar indices .fpt
Olá José,
Minha mensagem anterior onde eu disse: "Está errado também o raciocínio", deu a impressão que eu estava me referindo a sua. Mas na verdade eu estava dando continuidade a uma citação do Itamar mais acima, o correto teria sido colocar essa citação ficando assim:
Já quanto também minha interpretação na primeira mensagem foi que ele pretendia criar um índice usando um campo Memo, e eu disse que não era possível. Porém, realmente é sim usando a função PAD(). Aprendi mais uma, valeu a dica:
Minha mensagem anterior onde eu disse: "Está errado também o raciocínio", deu a impressão que eu estava me referindo a sua. Mas na verdade eu estava dando continuidade a uma citação do Itamar mais acima, o correto teria sido colocar essa citação ficando assim:
Está errado também o raciocínio. [restante da msg].Itamar M. Lins Jr. escreveu:E ainda está errado sua forma de trabalhar com CDX.
Já quanto também minha interpretação na primeira mensagem foi que ele pretendia criar um índice usando um campo Memo, e eu disse que não era possível. Porém, realmente é sim usando a função PAD(). Aprendi mais uma, valeu a dica:
Código: Selecionar todos
REQUEST DBFCDX
PROC REC_estr // estrutura do arquivo RECADOS
Local aEstr := {;
{"codcli" ,"N", 5, 0},;
{"nomecli" ,"C", 40, 0},;
{"obs" ,"M", 10, 0};
}
RddSetDefault( "DBFCDX" )
DBCreate( "TestMemo", aEstr )
Use TestMemo Shared New
Append Blank
Replace Codcli With 3
Replace nomecli With "Cliente 1"
Replace obs With Repl( "3 Testar index em campo Memo - ", 20 )
Append Blank
Replace Codcli With 2
Replace nomecli With "Cliente 2"
Replace obs With Repl( "2 Testar index em campo Memo - ", 20 )
Append Blank
Replace Codcli With 1
Replace nomecli With "Cliente 3"
Replace obs With Repl( "1 Testar index em campo Memo - ", 20 )
DbCommit()
Index On codcli Tag Codigo To TestMemo
Index On nomecli Tag NomeCli To TestMemo
Index On Pad( obs, 20 ) Tag Obs To TestMemo
Set Order To Tag Codigo
Browse()
Set Order To Tag NomeCli
Go Top
Browse()
Set Order To Tag Obs
Go Top
Browse()
Return NilAbraç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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Criar indices .fpt
Sem problemas.
Tem também um erro básico... INDEX ON Trim( nome )
Isso também causaria problemas de índice, porque o tamanho da chave ficaria indefinido.
Mas acho que o mais comum pode ser mesmo o tamanho da chave.
Se não me engano, pra NTX o limite é 100 caracteres, e pra CDX 200.
Algo assim, estouraria o limite:
Num caso desses, um pedaço do nome + código pode ser útil.
Tem também um erro básico... INDEX ON Trim( nome )
Isso também causaria problemas de índice, porque o tamanho da chave ficaria indefinido.
Mas acho que o mais comum pode ser mesmo o tamanho da chave.
Se não me engano, pra NTX o limite é 100 caracteres, e pra CDX 200.
Algo assim, estouraria o limite:
Código: Selecionar todos
index on NomeDepto + NomeSecao + NomeCategoria + NomeGrupo + NomeProduto TO temp
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/