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

Problemas com parametros no QUery


Ronaldo Lanhellas

Pergunta

Bom estou criando um parametro no componente TSQLQuery com as seguintes configurações:

DataType: ftdate

ParamType : ptInputOutput

Value Type: Date

passo os valores para o parametro da seguinte forma:

DM.queryConsulta.Params.ParamByName('Data').Value := (DateTimePicker1.Date);

ao executa o comando ele diz que o parametro Data não foi encontrado. Percebi que depois eu ia lá no meu Query no DataModule e o parametro Data tinha sumido, ele some sozinho !

o que fazer?

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

14 respostass a esta questão

Posts Recomendados

  • 0

não, o parametro que eu crio dentro do componente esta sumindo.

obs:

o codigo que estou usando é este:

DM.queryConsulta.Close;
DM.queryConsulta.SQL.Clear;
DM.queryConsulta.ParamByName('Data').Value := DateToStr(DateTimePicker1.Date);
DM.queryConsulta.SQL.Add('select PACIENTE.nome, CONSULTA.DATA, CONSULTA.HORA, MEDICO.nome from PACIENTE, CONSULTA, MEDICO WHERE CONSULTA.DATA =:Data');
DM.queryConsulta.Open;

Isto é, eu vou armazenar no parametro Data, o valor do componente DateTimePicker1.Date e depois jogar ele no comando sql, sendo que meu parametro é do tipo string por isso faço a conversão de Date para Str.

Link para o comentário
Compartilhar em outros sites

  • 0

veja a modificação ... o parametro tem que vir depois da sua criação

DM.queryConsulta.Close;
DM.queryConsulta.SQL.Clear;

DM.queryConsulta.SQL.Add('select PACIENTE.nome, CONSULTA.DATA, CONSULTA.HORA, MEDICO.nome from PACIENTE, CONSULTA, MEDICO WHERE CONSULTA.DATA =:Data');

DM.queryConsulta.ParamByName('Data').Value := DateToStr(DateTimePicker1.Date);
DM.queryConsulta.Open;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

certo funcionou perfeitamente..

agora uma duvida, no meu select estou usando o seguinte comando

DM.queryConsulta.SQL.Add('select PACIENTE.nome, CONSULTA.DATA, CONSULTA.HORA, MEDICO.nome from PACIENTE, CONSULTA, MEDICO WHERE CONSULTA.DATA =:Data');

percebe que tenho duas variaveis chamadas nome, o que aconteçe é que no dbgrid ele coloca a primeira como nome e a segunda como nome1, gostaria de por Nome do Paciente e Nome do Médico, mais lá na opção columns editor não me apareçe a opção para adicionar todas as colunas, afinal como faço essa mudança apenas de nome

Link para o comentário
Compartilhar em outros sites

  • 0
percebe que tenho duas variaveis chamadas nome, o que aconteçe é que no dbgrid ele coloca a primeira como nome e a segunda como nome1, gostaria de por Nome do Paciente e Nome do Médico, mais lá na opção columns editor não me apareçe a opção para adicionar todas as colunas, afinal como faço essa mudança apenas de nome

ele coloca a primeira como nome e a segunda como nome1

é extamente assim que funciona quando voce adiciona a instrução sql em tempo de execução

para ser da maneira que voce quer, a instrução sql deverá estar dentro do componente query em tempo de Design

( projeto ) e desta maneira pelo Editor de colunas voce pode alterar o nome

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

mais como vou por minha instrução query em tempo de design se preciso mudar o valor do parametro dinamicamente, por exemplo: se o usuario clicar na data 23/08/2010 o parametro da query terá que receber este valor, se ele clicar em outra data o valor já mudar !

Como vou definir isto em tempo de design ?

Link para o comentário
Compartilhar em outros sites

  • 0

Voce não esta usando assim ?

DM.queryConsulta.SQL.Add('select PACIENTE.nome, CONSULTA.DATA, CONSULTA.HORA, MEDICO.nome from PACIENTE, CONSULTA, MEDICO WHERE CONSULTA.DATA =:Data');
coloque somente a instrução select dentro da propriedade SQL da query e depois defina os parametros na propriedade PARAMS da propria query ou na properiedade PARAMS do ClientDataSet se estiver usando ele.

select PACIENTE.nome, CONSULTA.DATA, CONSULTA.HORA, MEDICO.nome from PACIENTE, CONSULTA, MEDICO WHERE CONSULTA.DATA =:Data

OBS: Leia o manual ou apostila do delphi ... vai encontrar as soluções para os seus problemas

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Se eu ponho o parametro no select da erro:

select MEDICO.NOME, PACIENTE.NOME, AGENDA.DATA, AGENDA.HORA, AGENDA.MEDICOID, AGENDA.PACIENTEID from

AGENDA, MEDICO, PACIENTE

where AGENDA.MEDICOID = MEDICO.MEDICOID

And AGENDA.PACIENTEID = PACIENTE.PACIENTEID AND AGENDA.DATA =: Data

Creiu eu que isto se dá pois o parametro ainda não tem valor, não sei se é isto !

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

  • 0

ótimo funcinou, agora como faço para passar o valor da data do Datetimepicker1 para o parametro e mostrar no dbgrid apenas a data que ele selecionar

tentei fazer assim mais não funciounou:

DsAgenda.DataSet.Close;

DM.sdsagenda.params.ParamByName('Data').Value := DateTimePicker1.Date;

DsAgenda.DataSet.Open;

Da um erro de Token unknow

Link para o comentário
Compartilhar em outros sites

  • 0

um exemplo:

Notas_IB.Active := false; // IBQuery

CDS_Notas.Active := false; // ClientDataSet

CDS_Notas.Params[0].AsDate := DateEdit1.Date; // Parametro

Notas_IB.Active := true;

CDS_Notas.Active := true;

não entendi o seu código

DsAgenda.DataSet.Close;

DM.sdsagenda.params.ParamByName('Data').Value := DateTimePicker1.Date;

DsAgenda.DataSet.Open;

ou seria

DsAgenda.DataSet.Close;

DSAgenda.params.ParamByName('Data').Value := DateTimePicker1.Date;

DsAgenda.DataSet.Open;

OBS: Se voce lesse o manual ou apostila do delphi não teria esse tipo de problema

tem apostilas no forum

https://www.scriptbrasil.com.br/apostilas/programas/delphi/

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

o meu codigo é o seguinte :

DsAgenda.DataSet.Close;

DM.sdsagenda.params.ParamByName('Data').Value := DateTimePicker1.Date;

DsAgenda.DataSet.Open;

meu DataSource (Dsagenda) está ligado ao meu ClientDataSet(cdsAgenda). Então primeiro fecho ele, depois coloco um valor do DateTimePicker no meu parametro que está no SQLDataSet (sdsAgenda), não tem como fazer DsAgenda.Params, pois não tem esta opção do meu DsAgenda, apenas se eu fizer DM.cdsAgenda.Params

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...