ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Exportar para excel DBgrid sem Query

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
felipethadeu
Novato
Novato


Registrado: Quarta-Feira, 17 de Julho de 2013
Mensagens: 16

MensagemEnviada: Qua Jul 31, 2013 11:29 am    Assunto: Exportar para excel DBgrid sem Query Responder com Citação

Ola,

Estou aqui novamente... Embarassed

Achei alguns topicos que dizem como exportar os itens do dbgrid para o excel, porem todos tem o Query.

Meu banco de dados é em Access e eu uso todas as conexoes do banco em ADO.

Não tenho a menor ideia de como mexer com Query...

Alguem teria alguma dica de como realizar a exportação sem o query?

Valeu!


Código:
var linha, coluna : integer;
var planilha : variant;
var valorcampo : string;
begin
 Query1.CachedUpdates := true;
 planilha:= CreateoleObject('Excel.Application');
 planilha.WorkBooks.add(1);
 planilha.caption := Exportando dados do dbGrid para o Excel';
 planilha.visible := true;

 Query1.ApplyUpdates;
 Query1.First;
 for linha := 0 to Query1.RecordCount - 1 do
 begin
   for coluna := 1 to Query1.FieldCount do
   begin
     valorcampo := Query1.Fields[coluna - 1].AsString;
     planilha.cells[linha + 2,coluna] := valorCampo;
   end;
   Query1.Next;
 end;
 for coluna := 1 to Query1.FieldCount do
 begin
   valorcampo := Query1.Fields[coluna - 1].DisplayLabel;
   planilha.cells[1,coluna] := valorcampo;
 end;
 planilha.columns.Autofit;
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Qua Jul 31, 2013 1:19 pm    Assunto: Responder com Citação

Boa tarde, Felipe.

Os dados da DBGrid estão ligados a uma DataSet.
Este DataSet provavelmente é uma Query.
Sendo assim, se você quer exportar dados de uma tabela para o Excel, de qualquer forma terá que utilizar um DataSet.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
felipethadeu
Novato
Novato


Registrado: Quarta-Feira, 17 de Julho de 2013
Mensagens: 16

MensagemEnviada: Qua Jul 31, 2013 1:25 pm    Assunto: Responder com Citação

Então, meu form tem 1 ADOConnection1 depois 1 ADOTable1 depois 1 DataSource1 e por fim o DBgrid.

Tem mesmo a necessidade de adicionar um ADOquery? se sim, o Code que mandei funciona , né!? ou nao rs.

Porque quando eu adiciono o ADOquery ele da erro de SQL quando vai ativar "missing Sql property"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Batera
Colaborador
Colaborador


Registrado: Quarta-Feira, 23 de Julho de 2008
Mensagens: 4899
Localização: Maringá

MensagemEnviada: Qua Jul 31, 2013 1:36 pm    Assunto: Responder com Citação

Ah, agora entendi sua pergunta.

No lugar da Query, utilize o seu ADOTable.
O código que você postou é só um exemplo utilizando Query.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
mhgsimoes
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 7 de Dezembro de 2007
Mensagens: 142
Localização: Belo Horizonte / MG

MensagemEnviada: Qua Jul 31, 2013 1:37 pm    Assunto: Responder com Citação

Tente substituir "Query1" do código que você mandou por "ADOTable1" que deve funcionar.
Tanto a "Query", quanto "Table" são "DataSets".
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felipethadeu
Novato
Novato


Registrado: Quarta-Feira, 17 de Julho de 2013
Mensagens: 16

MensagemEnviada: Qua Jul 31, 2013 2:13 pm    Assunto: Responder com Citação

Pessoal, fiz aqui o code.
ficou assim:

Código:
procedure TConsulta.Button1Click(Sender: TObject);
var linha, coluna : integer;
var planilha : variant;
var valorcampo : string;
begin
 ADOTable1.CachedUpdates := true;
 planilha:= CreateoleObject('Excel.Application');
 planilha.WorkBooks.add(1);
 planilha.caption := Exportando';
 planilha.visible := true;

 ADOTable1.ApplyUpdates;
 ADOTable1.First;
 for linha := 0 to ADOTable1.RecordCount - 1 do
 begin
   for coluna := 1 to ADOTable1.FieldCount do
   begin
     valorcampo := ADOTable1.Fields[coluna - 1].AsString;
     planilha.cells[linha + 2,coluna] := valorCampo;
   end;
   ADOTable1.Next;
 end;
 for coluna := 1 to ADOTable1.FieldCount do
 begin
   valorcampo := ADOTable1.Fields[coluna - 1].DisplayLabel;
   planilha.cells[1,coluna] := valorcampo;
 end;
 planilha.columns.Autofit;
end;


Porem ele não reconhece o "CachedUpdates" e "ApplyUpdates" do ADOTable1 como valido.

Acho que não rola usar este code.... vou ter que pesquisar um especifico de ADO Crying or Very sad
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
mhgsimoes
Aprendiz
Aprendiz


Registrado: Sexta-Feira, 7 de Dezembro de 2007
Mensagens: 142
Localização: Belo Horizonte / MG

MensagemEnviada: Qua Jul 31, 2013 3:00 pm    Assunto: Responder com Citação

Pode remover essas linhas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
felipethadeu
Novato
Novato


Registrado: Quarta-Feira, 17 de Julho de 2013
Mensagens: 16

MensagemEnviada: Qua Jul 31, 2013 4:21 pm    Assunto: Responder com Citação

mhgsimoes escreveu:
Pode remover essas linhas.


Muito obrigado!

Funcionou direitinho!

Vlw vlw! Very Happy
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB