AJUDA EM ROTINA SQL
Caros estou tento problemas numa rotina SQL onde tenho um campo chamado Número da Nota Fiscal que está como caracter e estou pedindo no meu filtro o seguinte:
select * from tabela where numerodanota >= "100" And numerodanota <= "102"
o filtro esta me retornaldo além das notas 100 a 102 também notas com números 101150,101897,101547,102636, etc.
tem q identificar algo na função sql para campos caracter
select * from tabela where numerodanota >= "100" And numerodanota <= "102"
o filtro esta me retornaldo além das notas 100 a 102 também notas com números 101150,101897,101547,102636, etc.
tem q identificar algo na função sql para campos caracter
select * from tabela where numerodanota >= CLNG("100") And numerodanota <= CLNG("102")
Para access, se for oracle, então terá que usar o TO_NUMBER
Para access, se for oracle, então terá que usar o TO_NUMBER
Caro amigo estou usando o Acess e fazendo teste diretamente nele pelo modo SQL mais mesmo usando o CLNG não resolveu.
Olha, uma coisa é certa. Se é um campo indexado, o correto era que fosse uma chave numérica, e não alfa. Pense, número de NF, deveria ser um campo tipo numero. Porque está usando tipo texto?
Então! a maioria dos meus campos que formam Ãndices realmente são numéricos com excessão do Número da Nota que posso ter letras Ex: Nota 101254, 101254A.
Numero repétido de NF? To perguntado apenas para entender a regra de negócio.
Número repetido do mesmo fornecedor seria quase impossÃvel né, mais isso envolve também lançamento de notas frias onde o usuário lançara o q for com nota e o sem nota lança com caracter na frente. etc.
Realmente era o que eu imaginava. Mas uma coisa: este procedimento é passÃvel de fiscalização. EM uma auditoria, a duplicidade de um número de NF fatalmente gera para o fiscal a impressão de sonegação. Acredite, já vi isto acontecer. Proponho que separe o caracter em um campo diferenciado, passando assim a ter dois campos, um numerico (NumeroNF) e outro alfa (IDNF). Poderia fazer depois sua busca segundo concatenação dos dois campos.
Ok.mais de urgência tenho esse relatório para entregar ainda hoje, então de momento necessito da expressão em SQL funcionando corretamente e com certeza depois estarei estudando sua idéia para que possa colocar em prática.
Agradeço seus comentários e sugestões.
Agradeço seus comentários e sugestões.
Olá Huber,
Com relação à  expressão SQL, vc poderá tentar o seguinte:
select * from tabela where val(numerodanota) >= val("100") And val(numerodanota) <= val("102")
Com relação aos números duplicados não seriam os números de faturas para serem recebidas ?
Exemplo:
Nota Fiscal número: 1000
Fatura 1: Número: 1001A, Vencimento: xx/xx/xxxx, Valor: R$ 0,00 ?
Fatura 2: Número: 1001B, Vencimento: xx/xx/xxxx, Valor: R$ 0,00 ?
Tenho um sistema que o número de nota não é duplicado (e acredito que não possa ser mesmo, pois implica numa série de problemas de multas, fiscalização, etc) mas as faturas geradas para o recebimento dos valores das notas seguem essa normatização para saber num módulo de contas a receber os recebimentos do cliente.
Espero poder tê-lo ajudado,
Boa Sorte,
Daniel
Com relação à  expressão SQL, vc poderá tentar o seguinte:
select * from tabela where val(numerodanota) >= val("100") And val(numerodanota) <= val("102")
Com relação aos números duplicados não seriam os números de faturas para serem recebidas ?
Exemplo:
Nota Fiscal número: 1000
Fatura 1: Número: 1001A, Vencimento: xx/xx/xxxx, Valor: R$ 0,00 ?
Fatura 2: Número: 1001B, Vencimento: xx/xx/xxxx, Valor: R$ 0,00 ?
Tenho um sistema que o número de nota não é duplicado (e acredito que não possa ser mesmo, pois implica numa série de problemas de multas, fiscalização, etc) mas as faturas geradas para o recebimento dos valores das notas seguem essa normatização para saber num módulo de contas a receber os recebimentos do cliente.
Espero poder tê-lo ajudado,
Boa Sorte,
Daniel
Caro amigo Daniel, sua opção de usar o comando val parcialmente deu certo mais ainda deu um probleminha, rs. alguns números de nota fiscal estão digitados com "." sendo assim esses registros ainda estão vindo. ex: expressão SQL >= 101 And <= 102 ok. ele ainda me traz o registro 101.486, tem alguma maneira de consertar isso também.
Tópico encerrado , respostas não são mais permitidas