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

Problemas com consulta


nicolasbraz

Pergunta

segue as duas imagens

http://img19.imageshack.us/img19/7655/imagemaex.jpg

http://img15.imageshack.us/img15/148/imagem2npz.jpg

O problema e que eu so posso fazer consulta dos campos que estao inseridos, o problema e que as vezes podem querer saber quantas funcionarios foram demitidos num certo tempo so que existem funcionarios que trabalham eles não teria uma data de demissao preenchida, então quando eu ativo o campo ele não localiza os funcionarios na empresa.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Como ficaria o codigo?

begin

with dmdados.SqlConFuncionario do

begin

dmdados.sqlconfuncionario.close;

dmDados.sqlconfuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConfuncionario.ParamByName('datademini').AsDate:=DatademIni.Date;

dmdados.SqlConfuncionario.ParamByName('datademfin').AsDate:=Datademfin.Date;

dmdados.sqlconfuncionario.open;

end;

end;

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

  • 0

select * from FUNCIONARIO

Where

(Func_NOME like :nome)

and

(FUNC_CIDADE like :cidade)

and

(FUNC_CARGO like :cargo)

and

(FUNC_CPF like :cpf)

and

(FUNC_DATAADM >= :dataadmini and FUNC_DATAADM <= :dataadmfin)

and

(FUNC_DATADEM >= :datademini and FUNC_DATADEM <= :datademfin )

tambem gostaria de saber o que posso colocar no lugar do "like" do cpf porque cpf não e string são so numeros.

Link para o comentário
Compartilhar em outros sites

  • 0

Amigo tenta joga este codigo dentro da procedure

se você estiver usando algum "radiogroup" para identificar se os funcionarios ativos ou não,

Begin
if ragiogroup1.itemindex = 0 then//Funcinários Demitidos
Begin

with dmdados.SqlConFuncionario do
Begin
Close;
Sql.clear;
Sql.add('select * from FUNCIONARIO ');
Sql.add('Where Func_NOME like :nome and FUNC_CIDADE like :cidade and FUNC_CARGO like :cargo');
Sql.add('and FUNC_CPF like :cpf  and FUNC_DATAADM >= :dataadmini and FUNC_DATAADM <= :dataadmfin');
Sql.add(' and FUNC_DATADEM >= :datademini and FUNC_DATADEM <= :datademfin and  FUNC_DATADEM not isnull');
ParamByName('nome').asstring:='%'+editnome.text+'%';
ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';
ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';
ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';
ParamByName('dataadmini').AsDate:=dataadmIni.Date;
ParamByName('dataadmfin').AsDate:=DataadmFin.Date;
ParamByName('datademini').AsDate:=DatademIni.Date;
ParamByName('datademfin').AsDate:=Datademfin.Date;
Open;
end else
Begin
Close;
Sql.clear;
Sql.add('select * from FUNCIONARIO ');
Sql.add('Where Func_NOME like :nome and FUNC_CIDADE like :cidade and FUNC_CARGO like :cargo');
Sql.add('and FUNC_CPF like :cpf  and FUNC_DATAADM >= :dataadmini and FUNC_DATAADM <= :dataadmfin');
Sql.add(' and FUNC_DATADEM isnull');
ParamByName('nome').asstring:='%'+editnome.text+'%';
ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';
ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';
ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';
ParamByName('dataadmini').AsDate:=dataadmIni.Date;
ParamByName('dataadmfin').AsDate:=DataadmFin.Date;
Open;
end;
end;

Link para o comentário
Compartilhar em outros sites

  • 0

coloquei esse codigo

Begin

if datademini.Date = 00/00/0000 then

begin

dmdados.sqlconfuncionario.close;

dmdados.SqlConFuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConFuncionario.Open;

end

else

dmdados.SqlConFuncionario.Close;

dmdados.SqlConFuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConFuncionario.ParamByName('datademini').AsDate:=datademini.Date;

dmdados.SqlConFuncionario.ParamByName('datademfin').AsDate:=datademfin.Date;

dmdados.SqlConFuncionario.Open;

end;

So que ele da erro de ponto flotuante.

O que pode estar dando de errado? :S

Link para o comentário
Compartilhar em outros sites

  • 0
So que ele da erro de ponto flotuante.

O que pode estar dando de errado? :S

Sempre coloque o erro como ele aparece na sua tela

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

if datademini.Date = 00/00/0000 then

esta rotina só será executada se voce digitar este valor de data ou uma data nula ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

procedure TFrmConFuncionario.FormCreate(Sender: TObject);

begin

dmdados.SqlConFuncionario.Open;

dmdados.tblFuncionario.Open;

end;

procedure TFrmConFuncionario.FormClose(Sender: TObject;

var Action: TCloseAction);

begin

action := CaFree;

frmconFuncionario := nil;

release;

dmdados.SqlConFuncionario.close;

end;

procedure TFrmConFuncionario.ImprimirClick(Sender: TObject);

var funcionario:TfrmRelConFuncionario;

begin

Funcionario:=TfrmRelConFuncionario.Create(self);

funcionario.QuickRep1.Preview;

end;

procedure TFrmConFuncionario.BitBtn2Click(Sender: TObject);

Begin

if datademini.Date = 00/00/0000 then

begin

dmdados.sqlconfuncionario.close;

dmdados.SqlConFuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConFuncionario.Open;

end

else

dmdados.SqlConFuncionario.Close;

dmdados.SqlConFuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConFuncionario.ParamByName('datademini').AsDate:=datademini.Date;

dmdados.SqlConFuncionario.ParamByName('datademfin').AsDate:=datademfin.Date;

dmdados.SqlConFuncionario.Open;

end;

procedure TFrmConFuncionario.FormKeyPress(Sender: TObject; var Key: Char);

begin

if key = #13 then

bitbtn2.Click;

if key = #27 then

FrmConFuncionario.Close;

end;

end.

Pronto ...

Link para o comentário
Compartilhar em outros sites

  • 0

O unico lugar que poderia dar esse erro ( operação invalida com ponto flutuante ) seria nesta linha de código

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

voce esta colocando mascara no cpf ? tipo 123.432.456-90 ?

como voce definiu este campo no banco de dados ? string com mascara ?

verifique

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
O unico lugar que poderia dar esse erro ( operação invalida com ponto flutuante ) seria nesta linha de código

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

voce esta colocando mascara no cpf ? tipo 123.432.456-90 ?

como voce definiu este campo no banco de dados ? string com mascara ?

verifique

abraço

Jhonas não estou usando mascara.

No banco de dados ele esta assim .: " FUNC_CPF VARCHAR(14) CHARACTER SET NONE"

Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0
Jhonas não estou usando mascara.

No banco de dados ele esta assim .: " FUNC_CPF VARCHAR(14) CHARACTER SET NONE"

Aparentemente não estou vendo erro algum no código que voce postou... ou o erro pode estar em outro lugar .... tente usar o debugger do delphi para achar onde está o erro

(operação invalida com ponto flutuante ) pode ser um calculo, ou uma conversão de string para numero

verifique com calma todo o seu código

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas o erro esta aqui .:

if datademini.Date = 00/00/0000 then

Se eu remover essa parte ele funciona.

Eu estava pensando Jhonas em criar um radioGroup no formulario de Consulta com 2 opçoes.

Funcionario = item 1 ativo, item 2 inativo.

Se ela selecionar o 1 ele cancela o campo e o ignora, se selecionar o 2 ele continua e busca funcionarios demitidos.

O que acha?

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

  • 0
Os outros não compilam o meu campo esta como "TimeStamp" no banco de dados seria isso causa do problema?

Veja como a falta de informação prejudica .... agora é que voce está informando como foi definido o seu campo e nem informou qual é o banco de dados que voce utiliza.

É importante fixar que o campo TIMESTAMP é formado por data e hora e o TIMESTAMP é internamente uma espécie de FLOAT, onde a parte inteira é a data e a parte decimal representa as horas.

portanto if datademini.Date = strtodate('00/00/0000') then estaria incorreto

veja as principais diferenças entre DATE, TIME e TIMESTAMP

http://edn.embarcadero.com/article/33724

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Tentei o codigo :

procedure TFrmConFuncionario.BitBtn2Click(Sender: TObject);

Begin

if datademini.Date = strtoDate ('00/00/0000') then

begin

dmdados.sqlconfuncionario.close;

dmdados.SqlConFuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConFuncionario.Open;

end

else

dmdados.SqlConFuncionario.Close;

dmdados.SqlConFuncionario.ParamByName('nome').asstring:='%'+editnome.text+'%';

dmdados.SqlConFuncionario.ParamByName('cidade').AsString:='%'+EditCidade.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cargo').AsString:='%'+ComboBox1.Text+'%';

dmdados.SqlConFuncionario.ParamByName('cpf').AsString:='%'+EditCpf.Text+'%';

dmdados.SqlConFuncionario.ParamByName('dataadmini').AsDate:=dataadmIni.Date;

dmdados.SqlConFuncionario.ParamByName('dataadmfin').AsDate:=DataadmFin.Date;

dmdados.SqlConFuncionario.ParamByName('datademini').AsDate:=datademini.Date;

dmdados.SqlConFuncionario.ParamByName('datademfin').AsDate:=datademfin.Date;

dmdados.SqlConFuncionario.Open;

end;

Ele da o seguinte erro

http://img217.imageshack.us/img217/4529/problemasdata.jpg

mas se eu colocar alguma data valida no codigo ele vai so que ai eu preciso ter 1 data final <_<

E a ideia e se o funcionario for demitido coloca a data se não for não coloca.

O codigo da Query.

select * from FUNCIONARIO

Where

(Func_NOME like :nome)

and

(FUNC_CIDADE like :cidade)

and

(FUNC_CARGO like :cargo)

and

(FUNC_CPF like :cpf)

and

(FUNC_DATAADM >= :dataadmini and FUNC_DATAADM <= :dataadmfin)

and

(FUNC_DATADEM >= :datademini and FUNC_DATADEM <= :datademfin)

Todos os campos que são para datas estao do tipo DATE.

Editado por nicolasbraz
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...