vms Postado Julho 17, 2007 Denunciar Share Postado Julho 17, 2007 seguinte pessoal:estou tentando fazer um gerenciador de arquivos salvos em cdstenho uma tabela(paradox)nome |A | |*| (nome do Cd)conteudo |M |10| | (nome dos arquivos)queria fazer uma busca de um arquivo especifico dentro do campoconteúdo usando um edit e um buttonobs:a busca seria em toda a tabela e não so apenas no memo que estarasendo mostrado no momento. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Julho 18, 2007 Denunciar Share Postado Julho 18, 2007 Cara, Tenta isso:Cria um string dentro da procedure, e depois usa o código abaixoproced...bitbtn1click.. var x: string; begin x:=''; if inputquery('Procurar','NomeCampo',x) then if not tabela1.Locate('NomeCampo',x,[])then Showmessage('Campo pesquisado não Encotrada'); end;ve se é isso pode ajudar? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 20, 2007 Denunciar Share Postado Julho 20, 2007 Apenas complementado a sugestão do Pirambú!. Quando utilizar Locate, é possível que seja conveniente utilizar as opções de localização: - loCaseInsensitive; (não diferenciação de maiúscula/minúscula)- loPartialKey. (procura por palavra parcial - tipo substring)Tabela1.Locate('NomeCampo', x, [loCaseInsensitive])Mas, dependendo de como você queira fazer esta pesquisa, pode não lhe atender:1) se você não utilizar loPartialKey, terá que digitar o texto exato ao cadastrado para que localize o mesmo;2) se você utilizar loPartialKey, a pesquisa encontrará apenas o campo em que seu conteúdo inicia com o texto digitado, ou seja, não acha o texto quando ele aparece no meio.Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE.Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada.Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Julho 20, 2007 Autor Denunciar Share Postado Julho 20, 2007 Fiz dessa forma procedure TForm1.BitBtn2Click(Sender: TObject);varx: string;beginx:='';if inputquery('Procurar','comentario',x) thendatamodule1.table1.Locate('comentario',x,[loPartialKey]);Showmessage('arquivo não Encontrado');end;e apresenta os seguintes erros[Error]UGerenciador_Arquivos.pas(94): Undeclared identifier: 'loPartialKey'[Error] UGerenciador_Arquivos.pas(94): Incompatible types: 'TLocateOption' and 'Integer'Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE.Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada.a intençao é encontrar uma palavra dentro do memo(no inicio, meio, fim)Michels, existe uma forma que você tem certeza que dar certo?outro tipo de banco? (sem ser o paradox, porque esse é o unico que tenho noçao, se for o caso vou tentar aprender outro)valeu!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 20, 2007 Denunciar Share Postado Julho 20, 2007 procedure TForm1.BitBtn2Click(Sender: TObject); var x: string; begin x:=''; if inputquery('Procurar','comentario',x) then datamodule1.table1.Locate('comentario',x,[loPartialKey]) else Showmessage('arquivo não Encontrado'); end;e apresenta os seguintes erros[Error]UGerenciador_Arquivos.pas(94): Undeclared identifier: 'loPartialKey'[Error] UGerenciador_Arquivos.pas(94): Incompatible types: 'TLocateOption' and 'Integer'É que como você utiliza o datamodule para colocar seu table, no form não existe a declaração, na cláusula uses, da unit DB. Faça isso - acrescente DB na cláusula uses do seu form.Para estas situações, acredito que você teria que utilizar um componente TQuery com um SQL contendo LIKE.Mas, ainda pode haver outro problema. Eu não tenho certeza, mas localizar um substring dentro de um campo Memo no Paradox, pode ser um pouco incerto. Se não me engano, não dá para utilizar a função UPPER ou LOWER com o campo memo no SELECT de modo a tornar a consulta Case-Insensitive. Tem que dar uma verificada.a intençao é encontrar uma palavra dentro do memo(no inicio, meio, fim)Micheus, existe uma forma que você tem certeza que dar certo?outro tipo de banco? (sem ser o paradox, porque esse é o unico que tenho noçao, se for o caso vou tentar aprender outro)essa resposta vai me tomar mais tempo. Faça os testes para confirmar ou não o que mencionei. Quem sabe, alguém tenha uma alternativa. (logo mais eu volto a esta questão)Mas para adiantar: este memo você guarda a lista dos nomes dos arquivos certo? Não poderiam ser itens? você teria um arquivo de CD's e outro de nome de arquivos, relacionados por um campo código do CD. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Julho 20, 2007 Autor Denunciar Share Postado Julho 20, 2007 copila normalmente, mas apresenta este erro quando digito o nome do arquivo para procuraro nome do arquivo que digitei foi corel drawProject Gerenciador_Arquivo.exe raised exception class EDatabaseError with message 'Constant is not correct type Corel Draw'. Process stopped. Use Step or Run to continue Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 25, 2007 Denunciar Share Postado Julho 25, 2007 copila normalmente, mas apresenta este erro quando digito o nome do arquivo para procurar o nome do arquivo que digitei foi corel drawProject Gerenciador_Arquivo.exe raised exception class EDatabaseError with message 'Constant is not correct type Corel Draw'. Process stopped. Use Step or Run to continuemensagem estranha. Como está o código onde este erro ocorre? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Pirambu! Postado Julho 25, 2007 Denunciar Share Postado Julho 25, 2007 Micheus, talvez ele esteja fazendo a consulta no campo do Dbmemo, isso pode ter erro na hora de fazer uma consulta?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Agosto 1, 2007 Autor Denunciar Share Postado Agosto 1, 2007 o codigo é esse mesmo, apenas acrescentei DB na USESprocedure TForm1.BitBtn2Click(Sender: TObject);varx: string;beginx:='';if inputquery('Procurar','comentario',x) thendatamodule1.table1.Locate('comentario',x,[loPartialKey]);Showmessage('arquivo não Encontrado');end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Agosto 1, 2007 Denunciar Share Postado Agosto 1, 2007 vms, estive verificando e o problema é que o Locate não é aplicado a campos Memo.Via query, você poderia utilizar o LIKE, mas a consulta é case-sensitive (difere maiúscula de minúscula) e não dá para utilizar a função UPPER sobre o memo:select *from tabelawhere comentario like '%corel draw%'Acho que você teria que utilizar outra abordagem. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
vms
seguinte pessoal:
estou tentando fazer um gerenciador de arquivos salvos em cds
tenho uma tabela(paradox)
nome |A | |*| (nome do Cd)
conteudo |M |10| | (nome dos arquivos)
queria fazer uma busca de um arquivo especifico dentro do campo
conteúdo usando um edit e um button
obs:a busca seria em toda a tabela e não so apenas no memo que estara
sendo mostrado no momento.
Link para o comentário
Compartilhar em outros sites
9 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.