GARANTIR DESCONTO

Fórum Todos os resultados de uma query em um memo como no msDOS #352364

23/01/2008

0

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?


Guilherme.camargo

Guilherme.camargo

Responder

Posts

23/01/2008

Edilcimar

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


Responder

Gostei + 0

24/01/2008

Guilherme.camargo

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!


Responder

Gostei + 0

24/01/2008

Paullsoftware

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:


Responder

Gostei + 0

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

Aceitar