SQLQUERY

Delphi

17/07/2009

Tenho um banco de dados em paradox.e estou comecando a usar o sql.tentei fazer uma consulta com o sql query mas nao esta dando certo.
quero que apareça só os nomes que contenham MARIA por exemplo em um DBGRID,consultando pelo edit (Edit1.text)
a rotina que fiz foi essa dentro do editchange, e no sql query tstrings somente coloque SELECT * FROM CLIENTES

A TABELA É TBCLIENTES E O DATASOURCE É DSCLIENTES.

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(´Select * FROM CLIENTES´);
Query1.SQL.Add(´where NOME like ´´+Edit1.Text+´¬´´);
Query1.Open;

GRATO


Andsantos

Andsantos

Curtidas 0

Respostas

Leufmt

Leufmt

17/07/2009

Dentro da Query deixe a consulta:
Select * FROM CLIENTES
where NOME like :c

No evento change do edite coloque:
Query1.Close;
Query1.Params[0].Value := (´¬´ + Edit1.Text + ´¬´);
Query1.Open;


GOSTEI 0
Andsantos

Andsantos

17/07/2009

SÓ UMA DUVIDA ESSE ´c´ SERIA O PARAMETRO ?

OBRIGADO PELA AJUDA.VALEU!!!


GOSTEI 0
Leufmt

Leufmt

17/07/2009

o c é um parametro.


GOSTEI 0
Andsantos

Andsantos

17/07/2009

ENTAO, QUANDO VOU ATIVAR O SQLQUERY DA UMA MENSAGEM TABLE1 FIELD ´C´ NOT FOUND. PRECISO APONTAR O DATASOURCE TB?
GRATO


GOSTEI 0
Leufmt

Leufmt

17/07/2009

esta com os dois pontos antes.
assim :c


GOSTEI 0
Andsantos

Andsantos

17/07/2009

ENTAO, O ERRO CONTINUA! QUANDO VOU ATIVAR O SQLQUERY APARECE A MENAGEM TABLE : FIELD ´C´ NOT FOUND.
GRATO


GOSTEI 0
Leufmt

Leufmt

17/07/2009

se tu for ativar em modo de projeto dá erro mesmo. agora se for quando o sistema estiver sendo executado ai é estranho


GOSTEI 0
Andsantos

Andsantos

17/07/2009

E ISSO MESMO, MAS QUANDO COLOCO NO EDIT POR EXEMPLO MARIA ELE NAO RETORNA NO DBGRID ESSES REGISTROS.
GRATO


GOSTEI 0
Leufmt

Leufmt

17/07/2009

tem que ver como esta no banco esta informação. Pois se no banco estiver tudo maiusculo e tu estiver mandando para o parametro em minusculo, ai realmente não deve retornar nada


GOSTEI 0
Andsantos

Andsantos

17/07/2009

DESDE JA OBRIGADO PELA PACIENCIA!!!!!
ENTAO NAO ESTA DANDO CERTO MESMO.COLOCO PARA PESQUISAR PARTE DO NOME NO CASO ANDRE ,MAS O DBGRID NAO RETORNA NADA.ESTOU DIGITANDO TUDO MAIUSCULO.NAO SERIA O CASO DE COLOCAR NENHUM BUTTON PARA REALIZAR ESSA CONSULTA? O EDITCHANGE JA FAZ ISSO?NAO SEI ONDE ESTA O ERRO?


GOSTEI 0
Leufmt

Leufmt

17/07/2009

não precisa de botão. no evento change já faz tudo

tu não esta esquecendo de dar um open na tabela?


GOSTEI 0
Martins

Martins

17/07/2009

DESDE JA OBRIGADO PELA PACIENCIA!!!!! ENTAO NAO ESTA DANDO CERTO MESMO.COLOCO PARA PESQUISAR PARTE DO NOME NO CASO ANDRE ,MAS O DBGRID NAO RETORNA NADA.ESTOU DIGITANDO TUDO MAIUSCULO.NAO SERIA O CASO DE COLOCAR NENHUM BUTTON PARA REALIZAR ESSA CONSULTA? O EDITCHANGE JA FAZ ISSO?NAO SEI ONDE ESTA O ERRO?


Seguinte, vou te dá uma dica que eu repassei para o Marcelo, um programado colega meu. Só que para vc já vai mais detalhado.

Tente como está abaixo.

   Query1.Close; 
   Query1.SQL.Clear; 
   Query1.SQL.Add(´Select * FROM CLIENTES´); 
   Query1.SQL.Add(´Where NOME like :pNome´);
   Query1.ParamByName(´pNOme´).AsString :=  Edit1.Text+´¬´; 
   Query1.Open; 



GOSTEI 0
Andsantos

Andsantos

17/07/2009

ENTAO CARA,VALEU PELA DICA.O QUE ACONTECE , O SISTEMA NAO DA ERRO, MAS O DBGRID NAO RETORNA NENHUM VALOR DIGITADO.
GRATO


GOSTEI 0
Martins

Martins

17/07/2009

ENTAO CARA,VALEU PELA DICA.O QUE ACONTECE , O SISTEMA NAO DA ERRO, MAS O DBGRID NAO RETORNA NENHUM VALOR DIGITADO. GRATO


Em qual evento de qual componente vc está escrevendo o código?


Post o seu código para vermos.


GOSTEI 0
Andsantos

Andsantos

17/07/2009

ENTAO. VOU RESUMIR.TENHO UM CADASTRO CLIENTES TABELA DE NOME CLIENTES.DB FEITO EM PARADOX
COM UM DBGRID.COLOQUEI UM EDIT TEXT PARA FAZER A CONSULTA ATRAVES DO SQLQUERY.O SISTEMA NAO DA ERRO MAS A CONSULTA EM SI NAO RETORNA NENHUM RESULTADO NO DBGRID.
O SQLQUERY CONFIGUREI ASSIM:
NAME: QUERY1
SQL STRINGS: SELECT * CLIENTES WHERE NOME LIKE:PNOME
NO EDITCHANGE COLOQUEI O CODIGO QUE VC ME PASSOU.MAS NAO CONSEGUI RETORNAR NENHUM VALOR.
GRATO


GOSTEI 0
Andsantos

Andsantos

17/07/2009

ENTAO. VOU RESUMIR.TENHO UM CADASTRO CLIENTES TABELA DE NOME CLIENTES.DB FEITO EM PARADOX
COM UM DBGRID.COLOQUEI UM EDIT TEXT PARA FAZER A CONSULTA ATRAVES DO SQLQUERY.O SISTEMA NAO DA ERRO MAS A CONSULTA EM SI NAO RETORNA NENHUM RESULTADO NO DBGRID.
O SQLQUERY CONFIGUREI ASSIM:
NAME: QUERY1
SQL STRINGS: SELECT * CLIENTES WHERE NOME LIKE:PNOME
NO EDITCHANGE COLOQUEI O CODIGO QUE VC ME PASSOU.MAS NAO CONSEGUI RETORNAR NENHUM VALOR.
GRATO


GOSTEI 0
Martins

Martins

17/07/2009

ENTAO. VOU RESUMIR.TENHO UM CADASTRO CLIENTES TABELA DE NOME CLIENTES.DB FEITO EM PARADOX COM UM DBGRID.COLOQUEI UM EDIT TEXT PARA FAZER A CONSULTA ATRAVES DO SQLQUERY.O SISTEMA NAO DA ERRO MAS A CONSULTA EM SI NAO RETORNA NENHUM RESULTADO NO DBGRID. O SQLQUERY CONFIGUREI ASSIM: NAME: QUERY1 SQL STRINGS: SELECT * CLIENTES WHERE NOME LIKE:PNOME NO EDITCHANGE COLOQUEI O CODIGO QUE VC ME PASSOU.MAS NAO CONSEGUI RETORNAR NENHUM VALOR. GRATO


Certo

[color=blue:dae867b3be]TEdit
TSqlQuery
TDataSource
TDBGrid[/color:dae867b3be]

DataSource lincado ao SqlQuery certo?

DBGrid -> DataSource

Instrução no SQLQuery:
Select * from CLIENTES


No evento OnChange do Edit.

   Query1.Close; 
   Query1.SQL.Clear; 
   Query1.SQL.Add(´Select * FROM CLIENTES ´); 
   Query1.SQL.Add(´Where NOME like :pNome´); 
   Query1.ParamByName(´pNome´).AsString :=  Edit1.Text+´¬´; 
   Query1.Open; 


Veja se está realmente da forma que te descrevo, se mesmo assim não funcionar, verei como posso disponibilizar um exemplo com com código fonte.

Boa Sorte!


GOSTEI 0
Andsantos

Andsantos

17/07/2009

CARA, DEU CERTO.NAO TINHA COLOCADO NO FORM O DATASOURCE PARA O SQLQUERY SO ESTAVA COM O DATASOURCE DA TABELA.
A UNICA DUVIDA E A SEGUINTE:

O DATASOURCE DO DBGRID É O DA TABELA OU É O DO SQLQUERY?
PORQUE SE EU COLOCAR O DS DO SQLQUERY O DBGRID NAO APARECE OS CAMPOS DA TABELA MAS A CONSULTA RETORNA O VALOR CORRETO, E SE EU COLOCAR O DS DA TABELA OS CAMPOS APARECEM MAS A CONSULTA NAO RETORNA NENHUM VALOR.
MAS MESMO ASSIM , RESOLVEU MEU PROBLEMA DO SQLQUERY.OBRIGADO PELAS DICAS.VALEU!!!


GOSTEI 0
Martins

Martins

17/07/2009

CARA, DEU CERTO.NAO TINHA COLOCADO NO FORM O DATASOURCE PARA O SQLQUERY SO ESTAVA COM O DATASOURCE DA TABELA. A UNICA DUVIDA E A SEGUINTE: O DATASOURCE DO DBGRID É O DA TABELA OU É O DO SQLQUERY? PORQUE SE EU COLOCAR O DS DO SQLQUERY O DBGRID NAO APARECE OS CAMPOS DA TABELA MAS A CONSULTA RETORNA O VALOR CORRETO, E SE EU COLOCAR O DS DA TABELA OS CAMPOS APARECEM MAS A CONSULTA NAO RETORNA NENHUM VALOR. MAS MESMO ASSIM , RESOLVEU MEU PROBLEMA DO SQLQUERY.OBRIGADO PELAS DICAS.VALEU!!!


Percebo que vc não tem muita afinidade com Delphi ou desenvolvimento a longo tempo.

Seguinte, aprenda que o DBGrid é um espelho do seu DataSet (Table ou SQLQuery), então ao vincular o seu DBGrid ao Ds do SQLQuery vc terá como retorno os campos q estiverem no SQLQuery, o mesmo acontecerá com Table, por isso, se vc pretende continuar com Table, procure usar o Locate, mas, vc pode continuar com SQLQuery e é até bom que o utilize em suas consultas, desde que vc insira na instrução todos os campos que desejar visualizar. OK!

Então mãos na massa, e vá condificando.

Boa sorte.


GOSTEI 0
Elip2008

Elip2008

17/07/2009

ADICIONA UM [b:8b55952eb8]TDATASOURCE[/b:8b55952eb8], EM SUA PROPRIEDADE [b:8b55952eb8]DATASET [/b:8b55952eb8]LIGUE AO [b:8b55952eb8]TQUERY[/b:8b55952eb8] CRIADO. AGORA NO [b:8b55952eb8]DBGRID[/b:8b55952eb8] EM SUA PROPRIEDADE [b:8b55952eb8]DATASOURCE[/b:8b55952eb8] SELECIONE O [b:8b55952eb8]DATASOURCE[/b:8b55952eb8] CRIADO. ACHO QUE COM ISSO VC CONSEGUE RESOLVER O SEU PROBLEMA.


GOSTEI 0
POSTAR