Fórum erro sql quot;Column Unknow xquot; #291139

08/08/2005

0

por que a consulta sql abaixo gera o erro ´Column Unknow x´ ????

// Tabela Alunos
                                      DM.Tbl_Usuarios.SelectSQL.Clear;
                                      DM.Tbl_Usuarios.SelectSQL.Add(´Select * From Usuarios ´+ ´WHERE ALUNO = ´ +´X´ );
                                      DM.Tbl_Usuarios.Close;
                                      DM.Tbl_Usuarios.Open;


eu só queria fazer com que fosse selecionado todos os registros da tabela usuario, onde o campo aluno tivesse X.

Abraços...


Mahdak

Mahdak

Responder

Posts

09/08/2005

Isabelct

// Tabela Alunos
    DM.Tbl_Usuarios.SelectSQL.Clear;
    DM.Tbl_Usuarios.SelectSQL.Add(´Select * From Usuarios ´+ ´WHERE ALUNO = ´ +´X´ );
    DM.Tbl_Usuarios.Close;
    DM.Tbl_Usuarios.Open;
eu só queria fazer com que fosse selecionado todos os registros da tabela usuario, onde o campo aluno tivesse X.


Pela forma como você está fazendo, uma concatenação simples, o banco está interpretando que X é uma coluna.

Sugiro a seguinte mudança:

    DM.Tbl_Usuarios.SelectSQL.Add(´Select * From Usuarios ´+ ´WHERE ALUNO = ´ + QuotedStr(´X´) );


O QuotedStr insere aspas ao redor da string ´X´, desta forma o banco interpreta como sendo uma cadeia de caracteres.

Mas com esta instrução, a consulta retornaria apenas os registros onde o campo aluno fosse ´X´. Para trazer os registros em que o campo contém a letra ´X´, você precisará utilizar o comando like, juntamente com o caracter curinga ´¬´. Veja um exemplo:

    DM.Tbl_Usuarios.SelectSQL.Add(´Select * From Usuarios ´+ ´WHERE ALUNO like ´ + QuotedStr(´X¬´) );

Assim você tem todos os registros que comecem com a letra ´X´

    DM.Tbl_Usuarios.SelectSQL.Add(´Select * From Usuarios ´+ ´WHERE ALUNO like ´ + QuotedStr(´¬X¬´) );

E assim você tem todos os registros que contenham a letra ´X´ em qualquer posição do campo.


Espero ter ajudado...


Responder

Gostei + 0

25/08/2005

Mahdak

isabelct, deu certo até ali, mas agora tenho que ir mais longe, e devido a issopintou ourto probleminha:


- o que eu quero que aconteça:
---------------------------------------

Selecione * de USUARIOS quando a coluna NOME for igual a variavel consulta(Edit´pesquisa.text), e a coluna ALUNO conter um ´X´, ordenado por nome.

código atual:
----------------
DM.Tbl_Usuarios.Close;
        DM.Tbl_Usuarios.SelectSQL.Clear;
        DM.Tbl_Usuarios.SelectSQL.Add(´Select * From Usuarios ´+´Where Nome Like:Consulta ´+ ´AND ALUNO =´+ QuotedStr(´X¬´) +´ Order By Nome´);
        DM.Tbl_Usuarios.Params[0].AsString;
        DM.Tbl_Usuarios.ParamByName(´Consulta´).AsString:=´´+´¬´+Edit_Pesquisa.Text+´¬´;
        DM.Tbl_Usuarios.Open;



Problema atual:
------------------
- a consulta nao está obedecendo a parte do código ( ´AND ALUNO =´+ QuotedStr(´X¬´) ) que diz respeito a condição que a coluna ALUNOS tem que conter um caractere ´X´.
Simplesmente aparece qualquer linha da tabela que nao obedeça a condição acima...


Abraços!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar