Ir para conteúdo
Fórum Script Brasil
  • 0

Consulta Cnpj Raiz


Eder

Pergunta

Ola Boa noite

não estou conseguindo rodar esta consulta retorna todos os campos da tabela e não filtra O cnpj raiz cadastrado na tabela CLIDIFE.CNPJ_CPF_RAIZ

SELECT * FROM CTRCT, CLIDIFE
WHERE (CTRCT.DEST_CNPJ LIKE CLIDIFE.CNPJ_CPF_RAIZ+'%')       //CLIDIFE.CNPJ_CPF_RAIZ ARMAZENA CNPJ RAIZ
ORDER BY CTRCT.NUMERO_CTRC

mas se eu faço desta forma funciona perfeitamente:

SELECT * FROM CTRCT
WHERE CTRCT.DEST_CNPJ LIKE '53.258.117'+'%'
ORDER BY NUMERO_CTRC

estou usando o comando errado?? tentei like = mas nada..

Obrigado,

 

Editado por Eder
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

ERRO:

SELECT * FROM CTRCT, CLIDIFE
WHERE (CTRCT.DEST_CNPJ LIKE CLIDIFE.CNPJ_CPF_RAIZ+'%')       //CLIDIFE.CNPJ_CPF_RAIZ ARMAZENA CNPJ RAIZ
ORDER BY CTRCT.NUMERO_CTRC

OBS: Voce esta usando um campo da sua propria tabela que não terá valor algum quando o Select for executado

==========================================================

mas se eu faço desta forma funciona perfeitamente:

SELECT * FROM CTRCT
WHERE CTRCT.DEST_CNPJ LIKE '53.258.117'+'%'
ORDER BY NUMERO_CTRC

Veja que voce usou apostrofes para separar o numero ( string ) , então se no lugar do numero voce quer usar uma variavel ou um parametro, deve ser feito a mesma coisa.

======================================================

usando uma variável que receberá o valor do numero

CNPJ : string;

CNPJ := '53.258.117'

'SELECT * FROM CTRCT
WHERE CTRCT.DEST_CNPJ LIKE  '+ ''''+ CNPJ + '''' + '%'
ORDER BY NUMERO_CTRC

usando um parametro que receberá o valor do numero

'SELECT * FROM CTRCT
WHERE CTRCT.DEST_CNPJ LIKE  :CNPJ  '+ '%'
ORDER BY NUMERO_CTRC

Obs: Se voce usar parametro, o mesmo deve estar definido no componente ( TQuery ou ClientDataSet )  e deve receber o valor antes de executar o Select

abraço

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Ola, Jonas, Boa Tarde, Obrigado por ajudar

fiz um pequeno deste mas não funcionou, veja

procedure TForm1.Button1Click(Sender: TObject);
var
Txt1, CNPJ : string;
begin
CNPJ := '53.258.117';
Query1Cnpj.AsString:=Cnpj;
Txt1 := 'SELECT * FROM CTRCT WHERE CTRCT.DEST_CNPJ LIKE :cnpj+"%"';
   Query1.Close;
   Query1.SQL.Text := Txt1;
   Query1.Open;
end;

erro: query1 dataset not in edit or insert mod😉

Link para o comentário
Compartilhar em outros sites

  • 0

O erro é que o dataset não está em modo de edição ou inserção.

voce não pode fazer isso

Query1Cnpj.AsString:=Cnpj;
procedure TForm1.Button1Click(Sender: TObject);
var
Txt1, CNPJ : string;
begin
   CNPJ := '53.258.117';

   Query1.Close;
   Txt1 := 'SELECT * FROM CTRCT WHERE CTRCT.DEST_CNPJ LIKE :cnpj+"%"';
   Query1.SQL.Clear;
   Query1.SQL.Text := Txt1;
   Query1.Open;
end;

Obs: Faça o teste e poste o resultado

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

verdade...fiz o exemplo mas deu erro: image.png.99d90a97638232df6b48171b51787493.png


Mas Jonas o que eu precisava não é bem isto que você deve estar achando e sim trazer todos os dados da tabela Ctrct.DB a qual foi  cadastrado o cnpj raiz na tabela Clidife.
Tipo na CtrcT.db esta assim cadastrado o cnpj 77.777.777/0001-00 e na tabela Clidife.db assim 77.777.777 somente
como esta abaixo porem logico não da certo.

CTRCT.DEST_CNPJ LIKE CLIDIFE.CNPJ_CPF_RAIZ+'%'
Link para o comentário
Compartilhar em outros sites

  • 0

Tente assim

procedure TForm1.Button1Click(Sender: TObject);
var
Txt1, CNPJ : string;
begin
   CNPJ := '53.258.117';

   Query1.Active := false;;
   Txt1 := 'SELECT * FROM CTRCT WHERE CTRCT.DEST_CNPJ LIKE :cnp';
   Query1.SQL.Clear;
   Query1.SQL.Text := Txt1;
   Query1.Params(0).AsString := CNPJ + '%'; 
   Query1.Active := true;
end;

OBS: voce definiu o parametro ( cnp ) tipo string no componente Query ?

 

Link para o comentário
Compartilhar em outros sites

  • 0

Ok Jonas deu certo:

procedure TForm1.Button1Click(Sender: TObject);
var
Txt1, vCNPJ : string;
begin
   vCNPJ := '53.258.117';
   Query1.Active := false;;
   Txt1 := 'SELECT * FROM CTRCT WHERE CTRCT.DEST_CNPJ LIKE :Pcnp';
   Query1.SQL.Clear;
   Query1.SQL.Text := Txt1;
   Query1.ParamByName('Pcnp').AsString := vCNPJ + '%';
   Query1.Active := true;
end;

Mas ai voltei naquela situação que comentei ali em cima e baixo agora, como buscar a informação da tabela CLIDIFE aonde esta cadastradas os cnpj raiz?

" trazer todos os dados da tabela Ctrct.DB a qual foi  cadastrado o cnpj raiz na tabela Clidife.
Tipo na CtrcT.db esta assim cadastrado o cnpj 77.777.777/0001-00 e na tabela Clidife.db assim 77.777.777 somente
como esta abaixo porem lógico não da certo."

CTRCT.DEST_CNPJ LIKE CLIDIFE.CNPJ_CPF_RAIZ+'%'
Link para o comentário
Compartilhar em outros sites

  • 0

Tente dessa maneira

procedure TForm1.Button1Click(Sender: TObject);
var
Txt1, vCNPJ : string;
begin
   vCNPJ := '53.258.117';
   Query1.Active := false;;
   Txt1 := 'SELECT * FROM CTRCT WHERE CTRCT.DEST_CNPJ LIKE :Pcnp';
   Query1.SQL.Clear;
   Query1.SQL.Text := Txt1;
   Query1.ParamByName('Pcnp').AsString := '%' + vCNPJ;
   Query1.Active := true;
end;

Obs: Dessa maneira voce vai inverter a busca pelos primeiros numeros do CNPJ

E se voce quiser buscar outros valores, faça isso:

vCNPJ := Edit1.Text

Dessa maneira, joga o CNPJ em um Edit, e passa o valor para a variavel  vCNPJ

exemplo: se voce digitar somente o numero 7, a busca na tabela será em cima de todos os CNPJs que começam com o numero 7

--------------------------------------------------------------

trazer todos os dados da tabela Ctrct.DB a qual foi  cadastrado o cnpj raiz na tabela Clidife.
Tipo na CtrcT.db esta assim cadastrado o cnpj 77.777.777/0001-00 e na tabela Clidife.db assim 77.777.777 somente

Não sei porque voce está usando 2 tabelas com os mesmos dados ( duplicidade de informação ).... voce pode buscar os CNPJs pelos numeros iniciais e se não quiser o valor restante depois da barra, voce pode tirar

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jonas, respondendo a sua pergunta até para você entender, talvez foi erro meu não ter colocado:

trazer todos os dados da tabela Ctrct.DB a qual foi  cadastrado o cnpj raiz na tabela Clidife.
Tipo na CtrcT.db esta assim cadastrado o cnpj 77.777.777/0001-00 e na tabela Clidife.db assim 77.777.777 somente

sua resposta: Não sei porque voce está usando 2 tabelas com os mesmos dados ( duplicidade de informação ).... voce pode buscar os CNPJs pelos numeros iniciais e se não quiser o valor restante depois da barra, voce pode tirar

explicação:

criei outra tabela justamente CLIDIFE.db PARA dizer que aqueles clientes cadastrados com cnpj raiz são para gerar uma condição tipo pagar um percentual de comissão diferenciado, inclusive nesta tabela tem o campo: CNPJ_CPF_RAIZ, PERCENTUAL etc...
cada cnpj raiz cadastrado e o percentual diferenciado para cada um deles cadastrado, então na consulta na tabela CTRCT-DB faz a busca de todos os faturamentos por cliente analisando os cnpj_cif_raiz cadastrado na tabela CLIDIFE.db

Não sei se fui claro, mas este é o objetivo principal e explicação de ter duas tabelas e fazer esta consulta, não sei se fui claro.

Poderia até usar a sua dica acima, mas toda vez que precisaria pagar uma condição especial para um cnpj_raiz teria que alterar o código fonte, assim para facilitar criei a tabela clidife.db e ai o próprio usuário cadastra nela os cnpj_raiz sem precisar que  eu altere o código.

se tiver uma ideia de como fazer ...

Obrigado, Eder


 

Link para o comentário
Compartilhar em outros sites

  • 0

Poderia até usar a sua dica acima, mas toda vez que precisaria pagar uma condição especial para um cnpj_raiz teria que alterar o código fonte, assim para facilitar criei a tabela clidife.db e ai o próprio usuário cadastra nela os cnpj_raiz sem precisar que  eu altere o código.

então na consulta na tabela CTRCT-DB faz a busca de todos os faturamentos por cliente analisando os cnpj_cif_raiz cadastrado na tabela CLIDIFE.db

se tiver uma ideia de como fazer ...

amigo, para facilitar, voce pode criar um campo a mais na sua tabela ( CTRCT ), que passaria a ser o seu controle ( condição especial ) ... aí no seu select bastaria apenas voce informar o valor desse controle para trazer todos os CNPJs nessa condição e pronto. ( Isso vai fazer voce eliminar boa parte do código )

Voce pode fazer o que está querendo, usando apenas uma tabela...basta apenas criar campos de controle.

Se o seu programa já está rodando em algum lugar, voce pode implementar um código ( em algum lugar do programa ... tipo no evento OnDblClick de um Label para que o usuário clique nele apenas uma unica vez para alterar a tabela ) para adicionar os campos que voce quer na sua tabela, sem alterar os dados existentes que estão nela. Depois voce modifica o seu código fonte e pouca coisa no seu formulário e envia o executável para o seu cliente.

Isso pode até dar um pouco de trabalho, mas no fim compensa.

abraço

 

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...