| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
gomarin Novato

Registrado: Segunda-Feira, 2 de Setembro de 2013 Mensagens: 4
|
Enviada: Qua Jul 23, 2014 11:49 am Assunto: SQL Dinâmico com Firedac e SQL Server |
|
|
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 |
|
 |
leocechet Novato

Registrado: Terça-Feira, 29 de Março de 2011 Mensagens: 20
|
Enviada: Qui Jul 24, 2014 9:31 am Assunto: |
|
|
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 |
|
 |
gomarin Novato

Registrado: Segunda-Feira, 2 de Setembro de 2013 Mensagens: 4
|
Enviada: Qui Jul 24, 2014 9:53 am Assunto: |
|
|
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 |
|
 |
leocechet Novato

Registrado: Terça-Feira, 29 de Março de 2011 Mensagens: 20
|
Enviada: Qui Jul 24, 2014 10:00 am Assunto: |
|
|
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 |
|
 |
gomarin Novato

Registrado: Segunda-Feira, 2 de Setembro de 2013 Mensagens: 4
|
Enviada: Qui Jul 24, 2014 11:58 am Assunto: |
|
|
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 |
|
 |
|