Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Servers
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2007
roraclau roraclau is offline
Registrado
 
Registrado: ene 2007
Posts: 5
Poder: 0
roraclau Va por buen camino
Bicho

Hola ya te conteste, pero no supe como, no se manejar bien las respuestas enseguidita de lo que me contestan, y quien sabe a donde se fue lo que te conteste, porque no los veo.
Me podrás ayudar. Gracias.
Responder Con Cita
  #2  
Antiguo 12-01-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 25
Bicho Va por buen camino
Cita:
Empezado por Clau
Hola ya te conteste, pero no supe como, no se manejar bien las respuestas enseguidita de lo que me contestan, y quien sabe a donde se fue lo que te conteste, porque no los veo.
No se a que te refieres, pero bueno.

Cita:
Empezado por Clau
si, según creo es porque tenia el Componente ADODataSet en su propiedad active en True, pero ya lo deje en false y de todas maneras sigo con el error
Hice los pasos hasta el 9 y aquí puse un componente DbGrid para ver la info del archivo excel ligandolo con un componente DataSurce, corrir el proyecto y bolas el error aunque el en modo de diseño si puedo ver la info
Es lo que comenta Roman, que da muchos problemas si lo tienes activado en tiempo de diseño y no de ejecución. Procura tenerlo desactivado o desconectado y conectarlo al ejecutar la aplicación, en los eventos OnCreate o OnActivate o un Click de botón sino no necesitas la conexión desde el inicio de la ejecución de la aplicación.
Yo lo he estado probando, como te comenté. Y no he visto la manera en diseño de conectar el DBGrid a un AdoDataSet. Es decir, tenía que hacerlo "a mano", recorrer el DataSet y asignar los datos a un StringGrid.

Cita:
Empezado por Clau
si, el error que me marca es:
El motor de base de datos Microsoft Jet no puede abrir el archivo”. Está abierto en modo exclusivo por otro usuario o bien necesita permiso para ver sus datos.
Quizá sea por lo de tener activado en tiempo de diseño.

Cita:
Empezado por Clau
p.d. según yo intente activar así: puse un Botón para que en su evento OnClick activara el componente ADODataSet lo hice así:

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
TADODataSet.True;
end;


pero tambien me marco error: Undeclared identifier: True
este es mi problema no se como va la instrucción.
La forma correcta es así:

Código Delphi [-]
 ADODataSet1.Active := True; //ADODataSet1, es el name que aparece en eobjeto que has arrastrado en el formulario, mientras que TADODataSet es el nombre de la clase a la que pertenece ese objeto.
//Active es la propiedad que tiene el dataset para conectarse. y el ":=" es para realizar una asignación
  
//Seguramente tambien deberías hacer antes conectar el ADOConnection de la misma forma.
  AdoConnection1.Connected := True; //En este caso la propiedad para activar o conectar el AdoConnection es Connected

Espero te sirva para avanzar. Ya nos comentas que tal.

En cuanto a tu experiencia en los foros, cuando escribas un hilo tienes una barra arriba que te permite encerrar el texto y formatearlo para hacerlo más legible. Échales un vistazo te ayudarán mucho. Son etiquetas muy sencillas.
Tienes [quote] para envolver citas, para escribir lo que ha dicho alguien.
Y etiquetas [delphi] y [code] para encerrar el código que escribas.

Saludos y suerte.
Responder Con Cita
  #3  
Antiguo 12-01-2007
Avatar de oracle
oracle oracle is offline
Miembro
 
Registrado: feb 2005
Posts: 99
Poder: 22
oracle Va por buen camino
Bueno primero: Clau quizas no ves las respuestas nuevas porque hay mas de una pagina en la vista que tienes del foro y tienes que mirar en las otras para ver los nuevo mensajes u ordenarlos en otro orden.

Por lo otro, creo que la forma de conectar el DBgrid al AdoDataSet es a traves de un DataSource, al menos asi es como lo hago yo. O sea la propiedad "DataSource" de nuestro DBGrid debe tener el DataSource del que les hablo, y a su ves este DataSource, en su propiedad "DataSet" debe tener el ADODataSet y asi ya estan conectados. Lo de la coneccion en tiempo de diseño o en tiempo de ejecucion es a discricion de uds, igual funciona...

Y por el otro error, ademas de lo que comenta Bicho asegurate de tener la coneccion que estableciste con el Excel, (pasos 6-7 u 8) en la ventana donde te pide el modo de lectura tener marcado read solamente, a mi eso me dio ese error...

Saludos
__________________
El único hombre que no se equivoca es el que nunca hace nada.
Responder Con Cita
  #4  
Antiguo 02-02-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Retomando el tema

Hola compañeros

Estoy con el tema de abrir una hoja de excel con ADO, seguí las indicaciones que se mostraron en este tema y funciona perfectamente.

Resulta que este procedimiento se hace en tiempo de diseño y funciona muy bien, ahora el punto es que necesito hacerlo en tiempo de ejecución y abrir cualquier archivo excel y cualquier hoja dentro del archivo.

En este momento he logrado abrir un archivo excel cualquiera desde un OpenDialog, pero según las instrucciones proporcionadas en tiempo de diseño al momento que se indica al ADODataSet.CommandType = cmdTableDirect, automaticamente muestra en la propiedad CommandText las hojas que están dentro de ese archivo.

Mi pregunta es la siguiente:

Como puedo obtener en un ComboBox o un ListBox los nombres de las hojas que están dentro del archivo.

Aqui pego lo que ya he hecho, aún me faltan algunas validaciones que ya agregaré posteriormente.

Código Delphi [-]
 
unit ULeeSalientes;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, ADODB, Grids, DBGrids, ExtCtrls;
 
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    Panel2: TPanel;
    BitBtn1: TBitBtn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ADOConnection1BeforeConnect(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Archivo: String;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject);
begin
   ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
                                      'Data Source='+Archivo+
                                      ';Extended Properties=Excel 8.0;'+
                                      'Persist Security Info=False';
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  If OpenDialog1.Execute then begin
     Archivo := OpenDialog1.FileName;
     ADODataSet1.CommandText  := 'Dic 06$'; //Aqui estoy asignando el nombre de la hoja
     ADOConnection1.Connected := True;
     AdoDataSet1.Open;
  end;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  AdoDataSet1.Close;
  ADOConnection1.Connected := False;
end;
 
end.

Gracias anticipadas.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #5  
Antiguo 02-02-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.572
Poder: 27
egostar Va camino a la fama
Problema Resuelto

Pues actualizando la duda que tenia, ya encontré la manera de obtener el nombre de las hojas.

Código Delphi [-]
 
ADOConnection1.GetTablesNames(ComboBox1.Items,False);

Resulta que el archivo excel lo debía haber considerado como una base de datos y las hojas como las tablas que contiene.

Pues nada, creo que con esto ya quedó resuelto mi problema.

Aqui pego el código completo espero que sirva para alguien mas.

Código Delphi [-]
 
unit ULeeSalientes;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, DB, ADODB, Grids, DBGrids, ExtCtrls;
 
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADODataSet1: TADODataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    OpenDialog1: TOpenDialog;
    Panel1: TPanel;
    BitBtn1: TBitBtn;
    ComboBox1: TComboBox;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ADOConnection1BeforeConnect(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Archivo,Hoja: String;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ADOConnection1BeforeConnect(Sender: TObject);
begin
   ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
                                      'Data Source='+Archivo+
                                      ';Extended Properties=Excel 8.0;'+
                                      'Persist Security Info=False';
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  If OpenDialog1.Execute then begin
     Archivo := OpenDialog1.FileName;
     ADOConnection1.Connected := True;
     ADOConnection1.GetTableNames(ComboBox1.Items,False);
  end;
end;
 
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  ADODataSet1.CommandText  := ComboBox1.Text;
  AdoDataSet1.Open;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  AdoDataSet1.Close;
  ADOConnection1.Connected := False;
end;
 
end.

Saludos.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 06-02-2007
Dalmine Dalmine is offline
No confirmado
 
Registrado: ago 2006
Ubicación: Argentina Campana Buenos Aires
Posts: 19
Poder: 0
Dalmine Va por buen camino
que tal una pregunta se puede seguir agregando datos al archivo excel abierto y guardar los cambios


saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:48:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi