Todos os resultados de uma query em um memo como no msDOS
olá, procurei mas não achei como pegar todos os resultados de uma query e mostrar em um memo, como se estivesse fazendo a consulta no banco pelo DOS, será que alguem poderia me ajudar?
Por exemplo:
Estou fazendo uma aplicação e qndo o cara aperta ctrl+alt+F11 abre uma janela com um edit e um memo, ai o cara só escreve no edit os comandos sql e no memo eu quero que apareça igual foce pelo DOS, é possivel?
(Eu tratei a primeira palavra que sai do edit para saber se é uma consulta ou uma excução que a query vai fazer (qry.open ou qry.exec) pelas 6 primeiras letras (que já serve para os principais ( Delete, insert, update (6 letras));
detalhe importante: Não consigo fazer as strings que eu add no memo (memo1.lines.add) aparecerem no memo de baixo para cima, e não de cima para baixo como vem de padrão. ALguem sabe isso tambem?
Por exemplo:
Estou fazendo uma aplicação e qndo o cara aperta ctrl+alt+F11 abre uma janela com um edit e um memo, ai o cara só escreve no edit os comandos sql e no memo eu quero que apareça igual foce pelo DOS, é possivel?
(Eu tratei a primeira palavra que sai do edit para saber se é uma consulta ou uma excução que a query vai fazer (qry.open ou qry.exec) pelas 6 primeiras letras (que já serve para os principais ( Delete, insert, update (6 letras));
detalhe importante: Não consigo fazer as strings que eu add no memo (memo1.lines.add) aparecerem no memo de baixo para cima, e não de cima para baixo como vem de padrão. ALguem sabe isso tambem?
Guilherme.camargo
Curtidas 0
Respostas
Edilcimar
23/01/2008
jogue o resultado da query em variáveis, pegue-as e jogue no memo, quanto a vir em ordem invertida isto ainda não vi, mostre o código
GOSTEI 0
Guilherme.camargo
23/01/2008
no keypreview do form eu coloquei aquele esquema comum de quando o cara aperta o enter eu jogo o comando sql q ele digitou em uma query e, a parte que eu não peguei ainda é de como retornar TODO o resultado para o memo.
procedure TfrmSQL.FormKeyPress(Sender: TObject; var Key: Char);
var comando, Scomando: string;
i: integer;
begin
if key = #13 then
begin
Memo1.Lines.Add(Edit1.text);
Scomando:= Edit1.Text;
Edit1.Text:= ´´;
comando:= copy(Scomando, 0, 6);
with dmDados.qryDataVida do
begin
close;
sql.clear;
sql.add(Scomando);
end;
if ((comando = ´update´ or comando = ´delete´) or comando = ´insert´) then
dmDados.qryDataVida.ExecSQL
else
dmDados.qryDataVida.Open;
end;
// AQUI SERIA A PERTE EM QUE EU COLETO TUDO O QUE A QUERY RETORNO E JOGO NO MEMO, IGUAL COMO APARECE POR EXEMPLO NO DOS QUANDO EU FAÇO UM SELECT, UM DESCRIBE SEI LAH, QUALQUER COISA.
end;
Obrigado!
procedure TfrmSQL.FormKeyPress(Sender: TObject; var Key: Char);
var comando, Scomando: string;
i: integer;
begin
if key = #13 then
begin
Memo1.Lines.Add(Edit1.text);
Scomando:= Edit1.Text;
Edit1.Text:= ´´;
comando:= copy(Scomando, 0, 6);
with dmDados.qryDataVida do
begin
close;
sql.clear;
sql.add(Scomando);
end;
if ((comando = ´update´ or comando = ´delete´) or comando = ´insert´) then
dmDados.qryDataVida.ExecSQL
else
dmDados.qryDataVida.Open;
end;
// AQUI SERIA A PERTE EM QUE EU COLETO TUDO O QUE A QUERY RETORNO E JOGO NO MEMO, IGUAL COMO APARECE POR EXEMPLO NO DOS QUANDO EU FAÇO UM SELECT, UM DESCRIBE SEI LAH, QUALQUER COISA.
end;
Obrigado!
GOSTEI 0
Paullsoftware
23/01/2008
no keypreview do form eu coloquei aquele esquema comum de quando o cara aperta o enter eu jogo o comando sql q ele digitou em uma query e, a parte que eu não peguei ainda é de como retornar TODO o resultado para o memo.
procedure TfrmSQL.FormKeyPress(Sender: TObject; var Key: Char);
var comando, Scomando: string;
i: integer;
begin
if key = #13 then
begin
Memo1.Lines.Add(Edit1.text);
Scomando:= Edit1.Text;
Edit1.Text:= ´´;
comando:= copy(Scomando, 0, 6);
with dmDados.qryDataVida do
begin
close;
sql.clear;
sql.add(Scomando);
end;
if ((comando = ´update´ or comando = ´delete´) or comando = ´insert´) then
dmDados.qryDataVida.ExecSQL
else
dmDados.qryDataVida.Open;
end;
// AQUI SERIA A PERTE EM QUE EU COLETO TUDO O QUE A QUERY RETORNO E JOGO NO MEMO, IGUAL COMO APARECE POR EXEMPLO NO DOS QUANDO EU FAÇO UM SELECT, UM DESCRIBE SEI LAH, QUALQUER COISA.
end;
Obrigado!
eu creio que você pode fazer um laço while not eof para varrer a query e jogar os campos dentro da query mais ou menos assim..:
procedure TfrmSQL.FormKeyPress(Sender: TObject; var Key: Char); var comando, Scomando: string; i: integer; begin if key = #13 then begin Memo1.Lines.Add(Edit1.text); Scomando:= Edit1.Text; Edit1.Text:= ´´; comando:= copy(Scomando, 0, 6); with dmDados.qryDataVida do begin close; sql.clear; sql.add(Scomando); end; if ((comando = ´update´ or comando = ´delete´) or comando = ´insert´) then dmDados.qryDataVida.ExecSQL else with dmDados do begin qryDataVida.Open; First; I := 0; while not qryDataVida.Eof do begin (* Aqui você faz um for para inserir todos os campos da Query dentro do Memo com a Estrutura Nome_do_Campo: Dados do Campo *) for i := 0 qryDataVida.FieldsCount-1 do Memo1.Lines.Add(qryDataVida.Fields[i].FieldName + ´: ´+qryDataVida.Fields[i].AsString + ´ | ´); (* se você quizer somente os dados do campo, sem o nome do mesmo, basta eliminar a primeira parte da linha no add... *) // Memo1.Lines.Add(qryDataVida.Fields[i].AsString + ´ | ´); QryDataVida.Next; end; end;
pelo que entedi era mais ou menos isso que vc quer, espero ter ajudado :wink:
GOSTEI 0