Paulo Nobre Postado Outubro 31, 2004 Denunciar Share Postado Outubro 31, 2004 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 datasourcedigitando o que está abaixo no memo aparece um erro. A principio o erro era de keyword depois apareceu o erro desconhecido databasealias dbdemos.Select *From countryWhereContinent = "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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 1, 2004 Denunciar Share Postado Novembro 1, 2004 Olá Paulo.Use aspas simples(' ') em vez de aspas duplas(" "), assim : Continent = 'South America'Abs. Progr'amador. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DELPHI-Man32 Postado Novembro 1, 2004 Denunciar Share Postado Novembro 1, 2004 se você resolveu o problema beleza, mas acho que o erro não é as aspas (" "), mas sim você não fechou a alinha no SQLno final da condição Whereveja:Select *From countryWhereContinent = "South America"faça assim..Select * From countryWhereContinent = "South America";acho que é isso!!beleza.. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Progr'amador Postado Novembro 1, 2004 Denunciar Share Postado Novembro 1, 2004 (editado) hehehe!!! 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 doIf Pos('',Memo1.Lines[i+1])<>1 thendeclaracao:= declaracao + Memo1.Lineselsedeclaracao:= 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 Wheresugiro 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. Editado Novembro 1, 2004 por Progr'amador Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Nobre Postado Novembro 1, 2004 Autor Denunciar Share Postado Novembro 1, 2004 Você acertou na mosca Prog'amadorFiz 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çosPaulo Nobre Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Paulo Nobre
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
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.