PESQUISA MSFLEXGRID DENTRO DE INTERVALO DE NUMEROS
Ola, bom dia amigos!
Mais uma vez solicito a ajuda dos companheiros aqui do fórum.
Tenho uma FlexGrid na qual faço um(a) filtro/pesquisa por Nome ou por Nº de documento.
A minha dificuldade ocorre porque os números dos documentos referem-se a documentos que se encontram em talões, ou seja, eu não cadastro cada número de documento mas sim o número do primeiro e do último documento que se encontram num determinado talão. Dessa forma o cadastro de um talão para um funcionário ocorre assim:
NOME DO Nº AO Nº
Jose 1000 1049
Nesse exemplo o funcionário Jose é responsável pelo talão que vai do número 1000 ao número 1049 (intervalo 1000 ao 1049).
O que necessito é fazer uma pesquisa/filtro de um determinado número de documento e o programa me dirá a qual intervalo de números ele pertence, ou seja, a qual talão esse número pesquisado pertence.
Já fiz algumas pesquisas mas não consegui compreender como poderia ser a dinâmica de tal pesquisa, se é que ela é possÃvel.
Não sei se fui claro ou repetitivo demais rsrs, enfim, se puderem me ajudar ficarei muito agradecido, pois este é um dos poucos problemas que me resta resolver para eu terminar meu programinha.
Muito obrigado e Feliz Ano Novo!!
PS: Segue anexa minha MSFlexGrid para uma melhor visualização.
Mais uma vez solicito a ajuda dos companheiros aqui do fórum.
Tenho uma FlexGrid na qual faço um(a) filtro/pesquisa por Nome ou por Nº de documento.
A minha dificuldade ocorre porque os números dos documentos referem-se a documentos que se encontram em talões, ou seja, eu não cadastro cada número de documento mas sim o número do primeiro e do último documento que se encontram num determinado talão. Dessa forma o cadastro de um talão para um funcionário ocorre assim:
NOME DO Nº AO Nº
Jose 1000 1049
Nesse exemplo o funcionário Jose é responsável pelo talão que vai do número 1000 ao número 1049 (intervalo 1000 ao 1049).
O que necessito é fazer uma pesquisa/filtro de um determinado número de documento e o programa me dirá a qual intervalo de números ele pertence, ou seja, a qual talão esse número pesquisado pertence.
Já fiz algumas pesquisas mas não consegui compreender como poderia ser a dinâmica de tal pesquisa, se é que ela é possÃvel.
Não sei se fui claro ou repetitivo demais rsrs, enfim, se puderem me ajudar ficarei muito agradecido, pois este é um dos poucos problemas que me resta resolver para eu terminar meu programinha.
Muito obrigado e Feliz Ano Novo!!
PS: Segue anexa minha MSFlexGrid para uma melhor visualização.
Olá, veja se isto resolve seu problema
StrSQL = [Ô]SELECT Código, Nome, Do, Ao FROM tbldocumento WHERE Nome Like [ô][Ô] & txtpesquisa & [Ô]%[Ô] & [Ô][ô] OR Do <= [ô][Ô] & txtpesquisa & [Ô][ô] AND Ao >= [ô][Ô] & txtpesquisa & [Ô][ô] ORDER BY Do[Ô]
Ola meu amigo GANDA_NICK!
Mais uma vez você aqui me ajudando...
Muito obrigado!
O código que você postou aqui me ajudou a ter uma idéia da dinâmica do filtro, porém, ao digitar o número do documento [Ô]1002[Ô] o programa exibe a mensagem de [Ô]Registro não encontrado[Ô], então clico no [Ô]OK[Ô] da mensagem e continuo digitando até completar o número [Ô]1002[Ô] e somente ai ele filtra certo, contudo, se continuar digitando além do número [Ô]1002[Ô] por exemplo [Ô]10023[Ô] ele ainda continua me dando o mesmo resultado e não deveria, certo? Tentei descobrir uma forma de impedir essa mensagem e a digitação [ô]extra[ô] mas não consegui. Se os números dos documentos fossem todos com quatro dÃgitos como no exemplo, resolveria o problema da digitação [ô]extra[ô] limitando a inserção de dÃgitos na caixa de texto para até quatro dÃgitos, porém tenho números de documentos com até cinco dÃgitos, então não poderia resolver dessa forma.
Será que você tem alguma idéia de como contornar esses problemas? Ou outra forma de conseguir fazer essa pesquisa sem ser necessariamente através da MSFlexGrid?
De qualquer forma agradeço muito sua resposta e aguardo qualquer outra ajuda.
Obrigado!
Mais uma vez você aqui me ajudando...
Muito obrigado!
O código que você postou aqui me ajudou a ter uma idéia da dinâmica do filtro, porém, ao digitar o número do documento [Ô]1002[Ô] o programa exibe a mensagem de [Ô]Registro não encontrado[Ô], então clico no [Ô]OK[Ô] da mensagem e continuo digitando até completar o número [Ô]1002[Ô] e somente ai ele filtra certo, contudo, se continuar digitando além do número [Ô]1002[Ô] por exemplo [Ô]10023[Ô] ele ainda continua me dando o mesmo resultado e não deveria, certo? Tentei descobrir uma forma de impedir essa mensagem e a digitação [ô]extra[ô] mas não consegui. Se os números dos documentos fossem todos com quatro dÃgitos como no exemplo, resolveria o problema da digitação [ô]extra[ô] limitando a inserção de dÃgitos na caixa de texto para até quatro dÃgitos, porém tenho números de documentos com até cinco dÃgitos, então não poderia resolver dessa forma.
Será que você tem alguma idéia de como contornar esses problemas? Ou outra forma de conseguir fazer essa pesquisa sem ser necessariamente através da MSFlexGrid?
De qualquer forma agradeço muito sua resposta e aguardo qualquer outra ajuda.
Obrigado!
Quanto ao seu código do projeto ele funciona de forma normal.
[txt-color=#e80000][Ô]Registro não encontrado[Ô], então clico no [Ô]OK[Ô] da mensagem e continuo digitando até completar o número [Ô]1002[Ô] e somente ai ele filtra certo, contudo, se continuar digitando além do número [Ô]1002[Ô] por exemplo [Ô]10023[Ô] ele ainda continua me dando o mesmo resultado e não deveria, certo? Tentei descobrir uma forma de impedir essa mensagem e a digitação[/txt-color].
Isto não acontece no seu projeto.Testei e não deu isto.
Quanto ao número de dÃgitos do documentos não tem nada a ver com quantidade.O que tem haver é se está registrado na tabela.A consulta SQL não limita número de quatro dÃgitos.
Pode ter documentos de
10 a 50
23 a 62
111 a 51
99956 a 99996
1234859 a 1234899
Modifica alguns registros e coloca com mais números e verás se como fica.
Este número 1002 não existe na sua tabela então vai aparecer a mensagem,isto está correto.
StrSQL = [Ô]SELECT Código, Nome, Do, Ao FROM tbldocumento WHERE Nome Like [Ô] & Criterio & [Ô] OR Do Like [Ô] & Criterio & [Ô] ORDER BY Do[Ô]
Se tiver muitos registros acho melhor o like,caso tenha o número do documento ai sim = [Ô]igual[Ô].
Seu código está correto,VOCÊ QUE ESTÀ ERRADO.Está é a função dele.
Valeu
[txt-color=#e80000][Ô]Registro não encontrado[Ô], então clico no [Ô]OK[Ô] da mensagem e continuo digitando até completar o número [Ô]1002[Ô] e somente ai ele filtra certo, contudo, se continuar digitando além do número [Ô]1002[Ô] por exemplo [Ô]10023[Ô] ele ainda continua me dando o mesmo resultado e não deveria, certo? Tentei descobrir uma forma de impedir essa mensagem e a digitação[/txt-color].
Isto não acontece no seu projeto.Testei e não deu isto.
Quanto ao número de dÃgitos do documentos não tem nada a ver com quantidade.O que tem haver é se está registrado na tabela.A consulta SQL não limita número de quatro dÃgitos.
Pode ter documentos de
10 a 50
23 a 62
111 a 51
99956 a 99996
1234859 a 1234899
Modifica alguns registros e coloca com mais números e verás se como fica.
Este número 1002 não existe na sua tabela então vai aparecer a mensagem,isto está correto.
StrSQL = [Ô]SELECT Código, Nome, Do, Ao FROM tbldocumento WHERE Nome Like [Ô] & Criterio & [Ô] OR Do Like [Ô] & Criterio & [Ô] ORDER BY Do[Ô]
Se tiver muitos registros acho melhor o like,caso tenha o número do documento ai sim = [Ô]igual[Ô].
Seu código está correto,VOCÊ QUE ESTÀ ERRADO.Está é a função dele.
Valeu
Agradeço muito a todos que responderam ao tópico, pricipalmente ao amigo GANDA_NICK que até o momento foi quem respondeu da forma mais objetiva possÃvel e quase solucionou todo o problema. Aos demais, informo que toda resposta é bem vinda. Peço apenas que leiam o tópico desde o inÃcio para que entendam as dúvidas antes de postarem as [Ô]respostas[Ô], assim a solução será breve. Lembrando que minhas dúvidas podem e provavelmente serão as dúvidas de outros usuários do fórum. Mais uma vez muito obrigado!
Só lembrando:
No meu projeto faço o cadastro de um talão para um funcionário e ocorre dessa forma:
NOME DO Nº AO Nº
Jose 1000 1049
Nesse exemplo o funcionário Jose é responsável pelo talão que vai do número 1000 ao número 1049 (intervalo 1000 ao 1049).
O que necessito é fazer uma pesquisa/filtro de um determinado número de documento e o programa me dirá a qual intervalo de números ele pertence, ou seja, a qual talão esse número pesquisado pertence.
Por exemplo: se eu pesquisar o documento de número [Ô]1002[Ô] o programa me retornará, através do controle MSFlexGrid, o intervalo [Ô]1000 ao 1049[Ô] pois o nº [Ô]1002[Ô] está contido nesse intervalo.
Fazer a pesquisa pelo número que inicia o talão (nesse exemplo o nº 1000) ou pelo nº que finaliza o talão (nesse exemplo o nº 1049) não é difÃcil, pois os mesmos constam na tabela do access. O problema está em pesquisar os números que estão nesse intervalo (nesse exemplo do nº 1000 ao nº 1049). Até porque quando eu for pesquisar um nº de documento qualquer não saberei se mesmo é o primeiro de um talão, se está no meio do talão ou se é o último do talão.
Será que é possÃvel fazer essa pesquisa através de um filtro no controle MSFlexGrid sem os problemas que eu citei na resposta anterior ou existe outra forma mais eficiente de fazer tal pesquisa?
Obrigado pela atenção de todos!
Feliz Ano Novo!
Só lembrando:
No meu projeto faço o cadastro de um talão para um funcionário e ocorre dessa forma:
NOME DO Nº AO Nº
Jose 1000 1049
Nesse exemplo o funcionário Jose é responsável pelo talão que vai do número 1000 ao número 1049 (intervalo 1000 ao 1049).
O que necessito é fazer uma pesquisa/filtro de um determinado número de documento e o programa me dirá a qual intervalo de números ele pertence, ou seja, a qual talão esse número pesquisado pertence.
Por exemplo: se eu pesquisar o documento de número [Ô]1002[Ô] o programa me retornará, através do controle MSFlexGrid, o intervalo [Ô]1000 ao 1049[Ô] pois o nº [Ô]1002[Ô] está contido nesse intervalo.
Fazer a pesquisa pelo número que inicia o talão (nesse exemplo o nº 1000) ou pelo nº que finaliza o talão (nesse exemplo o nº 1049) não é difÃcil, pois os mesmos constam na tabela do access. O problema está em pesquisar os números que estão nesse intervalo (nesse exemplo do nº 1000 ao nº 1049). Até porque quando eu for pesquisar um nº de documento qualquer não saberei se mesmo é o primeiro de um talão, se está no meio do talão ou se é o último do talão.
Será que é possÃvel fazer essa pesquisa através de um filtro no controle MSFlexGrid sem os problemas que eu citei na resposta anterior ou existe outra forma mais eficiente de fazer tal pesquisa?
Obrigado pela atenção de todos!
Feliz Ano Novo!
Não tenho o Access instalado, quais são o tipo dos campos de [Ô]Do[Ô] e [Ô]Ao[Ô] ? verifique se são NUMBER ou LONG ou qualquer coisa relacionada com numeros
tente tambem por [Ô]Val [Ô] antes do txtpesquisa
StrSQL = [Ô]SELECT Código, Nome, Do, Ao FROM tbldocumento WHERE Nome Like [ô][Ô] & txtpesquisa & [Ô]%[Ô] & [Ô][ô] OR Do <= [ô][Ô] & Val(txtpesquisa) & [Ô][ô] AND Ao >= [ô][Ô] & Val(txtpesquisa) & [Ô][ô] ORDER BY Do[Ô]
Bom dia meu amigo GANDA_NICK!
Mais uma vez lhe agradeço a grandessÃssima ajuda. Desculpe não responder antes. Precisei viajar uns dias ;)
Adaptei o código que você postou aqui e me serviu muito bem.
Muito obrigado!
Grande abraço e até mais
Mais uma vez lhe agradeço a grandessÃssima ajuda. Desculpe não responder antes. Precisei viajar uns dias ;)
Adaptei o código que você postou aqui e me serviu muito bem.
Muito obrigado!
Grande abraço e até mais
Tópico encerrado , respostas não são mais permitidas