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

Dúvida Com Select


fajo

Pergunta

Olá,

tenho uma tabela com os seguintes campos:

n_req cod_orc entrega

1 25/07 sim

2 32/07 sim

3 25/07 <null>

4 45/07 sim

5 32/07 sim

sempre que uma requisição tá pronta, é colocado um sim no campo entrega;

onde cada orcamento pode ter várias requisições, gostaria que um select, só me retornasse os registros cuja entrega seja "sim" mas por orcamento, ou seja,

se aplicada na tabela acima, o retorno tem que ser:

2 32/07 sim

4 45/07 sim

5 32/07 sim

o orcamento 25/07 não deve aparecer pois uma de suas requisições está <null>;

Obrigado

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0
tenta isso:

with query1 do
begin
close;
sql.add('select * from Tabela1 where entrega like "Sim");
open;
end;

Pirambu!, apenas completando sua sugestão:

- observar que o colega armazena o texto "sim" em minúsculo (ao menos no exemplo). Neste caso é conveniente lembrar a questão da diferenciação de letras maiúsculos ou minúsculas. Talvez seja necessário o uso de UPPER (se for Paradox)

- como o texto é procurado em seu formato completo. Dê sempre preferência por utilizar o sinal de "=" no lugar de "LIKE"

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
tenta isso:

with query1 do
begin
close;
sql.add('select * from Tabela1 where entrega like "Sim");
open;
end;
eu acho que deste jeito a linha "1 25/07 sim" será listada, e isso não deve acontecer eu faria assim para resolver esse problema: primeiro verificaria os "nulls" armazenaria em uma variavel do tipo vetor e depois usaria essa variavel como referencia no SQL
with query1 do
begin
  close;
  sql.clear;
  sql.add('select * from tabela where entrega="null");
  open;
  last;
  first;
end;
for i:=0 to (query1.recordcount-1) do begin
  Nulls[i]:=query1.fields[1].asstring; //Nulls - variavel vetor do tipo string
  query1.next;
end;
query1.close;
query1.sql.clear;
query1.sql.add('select * from tabela ');
if i<2 then query1.sql.add('where cod_orc<>"'+Nulls[0]+'"')
else begin
  query1.sql.add('where cod_orc<>"'+Nulls[0]+'" ');
  for i1:=1 to (i-1) do
     query1.sql.add('and cod_orc<>"'+Nulls[i1]+'" ');  
end;
query1.open;

acho que assim vai dar certo, mas não testei ...

Link para o comentário
Compartilhar em outros sites

  • 0
tenta isso:

with query1 do
begin
close;
sql.add('select * from Tabela1 where entrega like "Sim");
open;
end;

eu acho que deste jeito a linha "1 25/07 sim" será listada, e isso não deve acontecer

procurar com entrega like "Sim" ou entrega = "sim", não tem como obter uma linha em que este campo (entrega) seja nulo - se é a isto que você se refere.

eu faria assim para resolver esse problema:

primeiro verificaria os "nulls" armazenaria em uma variavel do tipo vetor

e depois usaria essa variavel como referencia no SQL

na verdade, o ideal neste caso em que o campo tem a função de um flag/status, é que ele não seja nulo nunca. Se não é "sim", deveria conter "não" ou "não". É só inicializar o campo no evento OnNewRecord com o valor padrão.

Pode evitar muitas dores de cabeças.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --

eu faria assim para resolver esse problema:

primeiro verificaria os "nulls" armazenaria em uma variavel do tipo vetor

e depois usaria essa variavel como referencia no SQL

na verdade, o ideal neste caso em que o campo tem a função de um flag/status, é que ele não seja nulo nunca. Se não é "sim", deveria conter "não" ou "não". É só inicializar o campo no evento OnNewRecord com o valor padrão.

Pode evitar muitas dores de cabeças.

Abraços

é na verdade eu me expressei mal, eu quis me referir a "nulls" como uma string, e não como um campo vazio,

nesta linha:

sql.add('select * from tabela where entrega="null");

só pra exemplificar o que Micheus disse:

Se não é "sim", deveria conter "não" ou "não". É só inicializar o campo no evento OnNewRecord com o valor padrão.

Pode evitar muitas dores de cabeças.

é real, na sua query1, procure o evento OnNewRecord:

procedure Query1NewRecord(DataSet: TDataSet);
begin
  DataSet['entrega'] := 'não';
end;

abraço!!

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --

eu faria assim para resolver esse problema:

primeiro verificaria os "nulls" armazenaria em uma variavel do tipo vetor

e depois usaria essa variavel como referencia no SQL

na verdade, o ideal neste caso em que o campo tem a função de um flag/status, é que ele não seja nulo nunca. Se não é "sim", deveria conter "não" ou "não". É só inicializar o campo no evento OnNewRecord com o valor padrão.

Pode evitar muitas dores de cabeças.

Abraços

é na verdade eu me expressei mal, eu quis me referir a "nulls" como uma string, e não como um campo vazio,

nesta linha:

sql.add('select * from tabela where entrega="null");

só pra exemplificar o que Micheus disse:

Se não é "sim", deveria conter "não" ou "não". É só inicializar o campo no evento OnNewRecord com o valor padrão.

Pode evitar muitas dores de cabeças.

é real, na sua query1, procure o evento OnNewRecord:

procedure Query1NewRecord(DataSet: TDataSet);
begin
  DataSet['entrega'] := 'não';
end;

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,3k
    • Posts
      652,4k
×
×
  • Criar Novo...