ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

SQL Dinâmico com Firedac e SQL Server

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
gomarin
Novato
Novato


Registrado: Segunda-Feira, 2 de Setembro de 2013
Mensagens: 4

MensagemEnviada: Qua Jul 23, 2014 11:49 am    Assunto: SQL Dinâmico com Firedac e SQL Server Responder com Citação

Olá Pessoal,
Estou tentando fazer um select dinâmico com parâmetros utilizando Firedac e SQL Server, porém o componente do Firedac obriga a escolher o tipo de parâmetro que está no select. Fiz o mesmo teste com Firebird e funciona normal, porém no SQL Server dá este erro:

[FireDAC][Phys][MSSQL]-335. Parameter data type is unknown.
Hint: specify TADParam.DataType or assign TADParam value before Prepare/Execute call.


Eu sei que utilizando parâmetros em SQL Server deve-se passar o tipo de parâmetro, mas não tem como informar o tipo pq vai ser um select dinâmico que o próprio usuário irá montar.
Gostaria de saber se alguém já viu algo parecido e pode me ajudar.
Obrigado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leocechet
Novato
Novato


Registrado: Terça-Feira, 29 de Março de 2011
Mensagens: 20

MensagemEnviada: Qui Jul 24, 2014 9:31 am    Assunto: Responder com Citação

Antes de realizar o FDQuery.Open, vc deve passar o valor para os parâmetros. Exemplo:

Código:
FDQuery.Close;
FDQuery.SQL.Text := 'SELECT campos FROM Tabela WHERE campo1 = :pcampo1';
FDQuery.ParamByName('pcampo1').AsString := 'TESTE';
FDQuery.Open


Imagino que vc deve estar tentando executar seu SQL para testá-lo diretamente através do FireDAC Query Editor do TFDQuery. Então o erro irá ocorrer porque não foi definido o tipo de parâmetro.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gomarin
Novato
Novato


Registrado: Segunda-Feira, 2 de Setembro de 2013
Mensagens: 4

MensagemEnviada: Qui Jul 24, 2014 9:53 am    Assunto: Responder com Citação

leocechet, Obrigado por responder.

Mas isto eu já sei, acontece que meu caso é diferente, eu não posso passar o valor para os parâmetros até porque não tem como saber nem a qtde e nem os nomes deles, pois na verdade o Select é montado pelo usuário através de um campo Memo e o Firedac grava esta informação para depois executar este SQL.
É tipo um executador de SQL e ele não deixa passar por causa dos parâmetros.
Eu preciso saber se existe alguma propriedade ou algo do tipo para que o FireDac não exiba esta mensagem.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leocechet
Novato
Novato


Registrado: Terça-Feira, 29 de Março de 2011
Mensagens: 20

MensagemEnviada: Qui Jul 24, 2014 10:00 am    Assunto: Responder com Citação

Nós temos uma forma parecida em que o usuário monta uma tela personalizada e dá nome para os campos, parâmetros. Mas também na tela definimos o tipo de parâmetro, o usuário é obrigado a escolher.
É claro que o usuário que faz isto é uma pessoa de TI que tem noção do que está fazendo.

Acho que o caminho é fazer isto também. No mais de uma olhada:
http://docwiki.embarcadero.com/RADStudio/XE5/en/Executing_Commands_(FireDAC)
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
gomarin
Novato
Novato


Registrado: Segunda-Feira, 2 de Setembro de 2013
Mensagens: 4

MensagemEnviada: Qui Jul 24, 2014 11:58 am    Assunto: Responder com Citação

Pois é, estou achando que vou ter que fazer isto tbm.
No Firebird não precisei informar nada, ele pega os tipos de parâmetros automaticamente.
Deve ser alguma limitação do SQL Server mesmo, acho que vou fazer deste jeito que vc falou mesmo, vou pedir para o usuário escolher o tipo do parâmetro.
Caso eu encontre outra solução eu posto aqui.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB