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 

Firebird não Realiza consulta

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


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Seg Ago 29, 2011 3:27 pm    Assunto: Firebird não Realiza consulta Responder com Citação

Olá galera resolvi mudar de banco de dados de Mdb para Firebird antigamente usava esse código e filtrava legal alguém pode me dizero que to fazendo de errado ou se há algo de errado na minha conexão ?

Código:

begin
DM.Q_CadAlunos.active := false;
DM.Q_CadAlunos.sql.clear;
DM.Q_CadAlunos.sql.add('select * from cadalunos where Transporte= "' + DBLookupComboBox1.Text+ '"'+'and tipoaluno= ''Ativo''');
DM.Q_CadAlunos.sql.add('ORDER BY nome ASC');
DM.Q_CadAlunos.active:= true;
if (DM.Q_CadAlunos.recordcount)= 0 then
begin
showmessage ( 'Nenhum Cadastro Encontrado!');
messageBox(handle,'Verifique o Motorista Selecionado!','ATENÇÃO!',MB_ICONERROR+mb_OK);
end
else
begin
if (DM.Q_CadAlunos.recordcount)>= 1 then
Frm_ResultadoTransporte.Showmodal;
Close;
end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
carbox
Colaborador
Colaborador


Registrado: Quarta-Feira, 3 de Março de 2010
Mensagens: 1471

MensagemEnviada: Seg Ago 29, 2011 3:33 pm    Assunto: Re: Firebird não Realiza consulta Responder com Citação

Seu problema está na passagem de parametros...

repleis escreveu:
Olá galera resolvi mudar de banco de dados de Mdb para Firebird antigamente usava esse código e filtrava legal alguém pode me dizero que to fazendo de errado ou se há algo de errado na minha conexão ?

Código:

begin
DM.Q_CadAlunos.active := false;
DM.Q_CadAlunos.sql.clear;
DM.Q_CadAlunos.sql.add('select * from cadalunos where Transporte= "' + DBLookupComboBox1.Text+ '"'+'and tipoaluno= ''Ativo''');
DM.Q_CadAlunos.sql.add('ORDER BY nome ASC');
DM.Q_CadAlunos.active:= true;
if (DM.Q_CadAlunos.recordcount)= 0 then
begin
showmessage ( 'Nenhum Cadastro Encontrado!');
messageBox(handle,'Verifique o Motorista Selecionado!','ATENÇÃO!',MB_ICONERROR+mb_OK);
end
else
begin
if (DM.Q_CadAlunos.recordcount)>= 1 then
Frm_ResultadoTransporte.Showmodal;
Close;
end;
end;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Ago 29, 2011 3:36 pm    Assunto: Responder com Citação

Experimente deixar o valor de DBLookupComboBox1.Text entre aspas simples e não aspas duplas, ou utilize uma query com parâmetros em vez de concatenar a instrução SQL.

Espero que ajude.

_________________
Assinatura: Imobiliarias em Guarulhos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Seg Ago 29, 2011 7:28 pm    Assunto: Responder com Citação

amigo já expeirmentou parametrizar isto:

QryTabela.SQL.Add(' select * from cadalunos where (Transporte = :combo) and (tipoaluno= :Ativo)' );
QryTabela.params[0].astring := combobox1.items[combobox1.ItemIndex];
QryTabela.params[1].astring := 'Ativo';
QryTabela.Open;

Desta maneira simplifica as coisas.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Ago 30, 2011 3:18 pm    Assunto: Responder com Citação

johnny-walker escreveu:
amigo já expeirmentou parametrizar isto:

QryTabela.SQL.Add(' select * from cadalunos where (Transporte = :combo) and (tipoaluno= :Ativo)' );
QryTabela.params[0].astring := combobox1.items[combobox1.ItemIndex];
QryTabela.params[1].astring := 'Ativo';
QryTabela.Open;

Desta maneira simplifica as coisas.


bye


Tentei dessa forma ai e não deu certo, o engraçado é que sempre fazia da maneira que citei e dava certo com o banco Ms Access Mdb.

Se alguem soube de alguma coisa que pode me ajudar por favor me ajude...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Ago 30, 2011 3:25 pm    Assunto: Responder com Citação

imex escreveu:
Experimente deixar o valor de DBLookupComboBox1.Text entre aspas simples e não aspas duplas, ou utilize uma query com parâmetros em vez de concatenar a instrução SQL.

Espero que ajude.

_________________
Assinatura: Imobiliarias em Guarulhos

Tentei tirar as aspas mais não deu Certo poderia me passar um exemplo completo com parametro é que sou iniciante... Desde já obrigado...
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Ago 30, 2011 4:36 pm    Assunto: Responder com Citação

repleis escreveu:
Tentei tirar as aspas mais não deu Certo poderia me passar um exemplo completo com parametro é que sou iniciante... Desde já obrigado...


O que sugeri foi substituir as aspas duplas (") por aspas simples ('), mas de qualquer forma concordo com o johnny-walker que fica melhor utilizando parâmetros, inclusive o código que ele postou está com parâmetros. Vou tentar adaptar o código que você postou no início:

Código:
DM.Q_CadAlunos.active := false;
DM.Q_CadAlunos.sql.clear;
DM.Q_CadAlunos.sql.add('select * from cadalunos');
DM.Q_CadAlunos.sql.add('where Transporte = :Transporte');
DM.Q_CadAlunos.sql.add('and tipoaluno = ' + QuotedStr('Ativo'));
DM.Q_CadAlunos.sql.add('ORDER BY nome ASC');
DM.Q_CadAlunos.ParamByName('Transporte').Value := DBLookupComboBox1.Text;
DM.Q_CadAlunos.active:= true;


Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
repleis
Profissional
Profissional


Registrado: Segunda-Feira, 5 de Abril de 2010
Mensagens: 582

MensagemEnviada: Ter Ago 30, 2011 4:46 pm    Assunto: Responder com Citação

imex escreveu:
repleis escreveu:
Tentei tirar as aspas mais não deu Certo poderia me passar um exemplo completo com parametro é que sou iniciante... Desde já obrigado...


O que sugeri foi substituir as aspas duplas (") por aspas simples ('), mas de qualquer forma concordo com o johnny-walker que fica melhor utilizando parâmetros, inclusive o código que ele postou está com parâmetros. Vou tentar adaptar o código que você postou no início:

Código:
DM.Q_CadAlunos.active := false;
DM.Q_CadAlunos.sql.clear;
DM.Q_CadAlunos.sql.add('select * from cadalunos');
DM.Q_CadAlunos.sql.add('where Transporte = :Transporte');
DM.Q_CadAlunos.sql.add('and tipoaluno = ' + QuotedStr('Ativo'));
DM.Q_CadAlunos.sql.add('ORDER BY nome ASC');
DM.Q_CadAlunos.ParamByName('Transporte').Value := DBLookupComboBox1.Text;
DM.Q_CadAlunos.active:= true;


Espero que ajude.

Opaaa, Funcionou Perfeitamente!!!
Muito Obrigado meu amigo.
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