Ir para conteúdo
Fórum Script Brasil
  • 0

Exemplo Com Sql


Paulo Nobre

Pergunta

Estudando um exemplo do livro do Marcelo Leão, sobre consulta SQL deparei com o seguinte código:

procedure TFormSQL.BotaoOkClick(Sender: TObject);

Var

i: Integer;

Consulta: boolean;

declaracao: String;

begin

declaracao:='';

Consulta:= False;

for i:=0 to Memo1.Lines.Count - 1 do

If Pos('',Memo1.Lines[i+1])<>1 then

declaracao:= declaracao + Memo1.Lines

else

declaracao:= declaracao + Memo1.Lines+' ';

Query1.SQL.Clear;

Query1.SQL.Add(declaracao);

If Pos('Select',UpperCase(declaracao))>0 Then

Consulta:= True;

Try

If Consulta = True then

Query1.Open

else

Query1.ExecSQL;

except

Showmessage('Erro no código SQL');

end;

end;

o form possui um dbgrid um query e um datasource

digitando o que está abaixo no memo aparece um erro.

A principio o erro era de keyword depois apareceu o erro desconhecido database

alias dbdemos.

Select *

From country

Where

Continent = "South America"

Alguém sabe o que está errado no código.

A consulta acima está correta, pois colocando ela direto na propriedade SQL do Query1 funciona normalmente.

Paulo Nobre

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

se você resolveu o problema beleza,

mas acho que o erro não é as aspas (" "), mas sim você não fechou a alinha no SQL

no final da condição Where

veja:

Select *

From country

Where

Continent = "South America"

faça assim..

Select * From country

Where

Continent = "South America";

acho que é isso!!

beleza..

Link para o comentário
Compartilhar em outros sites

  • 0

hehehe!!! biggrin.gif

Nem um nem outro, fiz uma analise do seu código e vi algums erro.

1º: esse erro de keyword, tá nessa linha:

for i:=0 to Memo1.Lines.Count - 1 do

If Pos('',Memo1.Lines[i+1])<>1 then

declaracao:= declaracao + Memo1.Lines

else

declaracao:= declaracao + Memo1.Lines+' ';

essa variável (declaracao) ta recebendo o valor dessa forma:

Select * From countryWhere Continent = "South America"

não está colocando espaço entre o nome da tabela (country) e o Where, assim: country Where

sugiro que coloque assim: declaracao:= declaracao + Memo1.Lines+' ', igual a outra linha do else.

Outro erro:

If Pos('Select',UpperCase(declaracao))>0 Then

Consulta:= True;

Try

If Consulta = True then

Query1.Open

else

Query1.ExecSQL;

except

Showmessage('Erro no código SQL');

com esse código ta sende excultado o Query1.ExecSQL até mesmo pro select.

em vez disso , faça assim:

if UpperCase(Copy(declaracao,1,6)) = 'SELECT' Then

Consulta:= True;

Try

If Consulta = True then

Query1.Open

else

Query1.ExecSQL;

except

Showmessage('Erro no código SQL');

Não sei bem o porque desses erros, ainda não entendo bem o uso desse 'POS'

Abs. Progr'amador. wink.gif

Editado por Progr'amador
Link para o comentário
Compartilhar em outros sites

  • 0

Você acertou na mosca Prog'amador

Fiz as duas modificações que você disse que tinha erro e funcionou.

Como havia dito esse código foi copiado integralmente do livro Curso Completo Delphi 7 do Marcelo Leão. Como é que pode um código ser colocado sem ser testado.

Para mim que estou começando(principalmente em banco de dados) acaba me confundindo mais ainda.

Acho que essa pressa que os autores tem de fazer um livro por ano gera isso.

Achei não só esse erro mas, inúmeros outros.

Obrigado pela ajuda a você e a todos que tentaram colaborar. Esse forum só tem feras.

Abraços

Paulo Nobre

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...