Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   conexion a excel desde delphi!!! (https://www.clubdelphi.com/foros/showthread.php?t=52731)

MARLON1 29-01-2008 18:53:02

conexion a excel desde delphi!!!
 
hola espero y me puedan ayudar tengo una tabla en la bd llamada clientes y kiero ke desde el programa hecho en delphi pueda jalar informacion desde excel podrian ayudarme?:)

duilioisola 29-01-2008 19:29:31

No seas vago...:D

Busca en los foros.
Hay muchos ejemplos.

Lee la guía de estilo

poliburro 29-01-2008 19:41:59

Para eso nada mejor que ADO,

MARLON1 31-01-2008 18:40:47

hola
 
me podrias dar un ejemplo de como importar por favor y si tengo que usar algun componente.

Caral 31-01-2008 18:58:11

Hola
Aqui hay un ejemplo.
Saludos

duilioisola 31-01-2008 19:03:45

Tres minutos buscando en los foros y encontré

http://delphi.about.com/od/database/l/aa090903a.htm
http://www.djpate.freeserve.co.uk/AutoExcl.htm
http://dn.codegear.com/article/10126

que el usuario Neftali propone en esta discusión.

Además dice que en el FTP del club hay un ejemplo: "Ejemplo_Conectar_ADO_Excel.zip"

Un poco de iniciativa...

MARLON1 31-01-2008 21:04:09

Cita:

Empezado por duilioisola (Mensaje 262403)
Tres minutos buscando en los foros y encontré

http://delphi.about.com/od/database/l/aa090903a.htm
http://www.djpate.freeserve.co.uk/AutoExcl.htm
http://dn.codegear.com/article/10126

que el usuario Neftali propone en esta discusión.

Además dice que en el FTP del club hay un ejemplo: "Ejemplo_Conectar_ADO_Excel.zip"

Un poco de iniciativa...

gracias por la ayuda hice lo del ejemplo pero me sale un errror al querer importar, dice que no se encuentra el archivo de trabjo o bien esta siendo usado por otro usuario en modo exclusivo, me podrian ayudar por favor, llevo muy poco con delphi :confused:

duilioisola 01-02-2008 10:51:13

Cual de los ejemplos?
Postea parte del código donde ocurre el error.

De todos modos, puede ser que lo tengas abierto con excel y quieras acceder a él.
Cita:

dice que no se encuentra el archivo de trabjo o bien esta siendo usado por otro usuario en modo exclusivo
También puede ser que no estés pudiendo abrirlo, porque no pones la ruta correcta.
Cita:

dice que no se encuentra el archivo de trabjo o bien esta siendo usado por otro usuario en modo exclusivo

MARLON1 01-02-2008 16:50:34

gracias
 
gracias por la ayuda ya puede hacer la conexion a excel, ahora solo me falta buscar como hacer que esos datos se almacenen en mi bd muchas gracias.

MARLON1 05-02-2008 18:44:02

hola caral
 
Cita:

Empezado por Caral (Mensaje 262402)
Hola
Aqui hay un ejemplo.
Saludos

HOLA CARAL OJALA Y ME PUEDAS AYUDAR CON LA DUDA QUE TENGO:

PUDE HACER LA CONEXION CON EXCEL Y MOSTRAR TODOS LOS DATOS EN UN DBGRID, PERO QUIERO GUARDAR TODOS ESOS DATOS QUE ESTAN EN EL DBGRID EN MI BD MI DUDA ES ¿PUEDO ASOCIAR DE ALGUNA MANERA ESE DBGRID CON OTRO DARASORCE QUE TENGO CONECTADO CON UN QUERY?, PARA QUE PUEDA GUARDAR LOS DATOS DE ESE DBGRID.
ESPERO Y ENTIENDAS MI DUDA. GRACIAS Y SALUDOS :D

Caral 05-02-2008 19:06:32

Hola
Nunca he hecho nada parecido, en el enlace que te puse usan ADO para la conexión.
Lo que se me ocurre es usar la información que trae el dataset de ado y de ahí pasarla a la base de datos, otra forma seria usar las celdas del dbgrid, creo que esto depende de lo que se quisiera hacer, que datos incorporar en que orden etc.
No me hagas mucho caso, esperemos a ver si algún maestro nos ayuda.:)
Saludos

MARLON1 05-02-2008 20:47:49

guardar en la bd!!!!!
 
hola se que ya llevo mucho tiempo con este problema pero en verdad como les dije antes soy muy novato en delphi les pongo el codigo que tengo con este codigo ya puedo vizualizar los datos de un archivo .xls en un dbgrid pero nose como guardarlos en mi bd, tengo un pequeño codigo que encontre pero no me los guarda en la tabla, para la conexion a excel utiliza un adoconection,adotable y un data acces, y para guardar los datos estoy intentandolo hacer con un query espero y me puedan dar una solucion mil gracias....


unit Unit4;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls, DB, ADODB, Grids, DBGrids, DBTables;
type
TForm4 = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Button2: TButton;
SALIR: TBitBtn;
DBGrid2: TDBGrid;
ADOTable1: TADOTable;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
DataSource2: TDataSource;
Button1: TButton;
Query1: TQuery;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm4.Button2Click(Sender: TObject);
begin
// conectar y obtener datos
ADOTable1.Open;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
with form1 do
begin

if Form4.ModalResult = mrOK then begin
DBGrid2.DataSource.DataSet.First;While not (DBGrid2.DataSource.DataSet.Eof) Do
Begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO cliente (clavecliente, nombre, apellido,direccion,telefono,CP,RFC,clavemaquinaria)');
Query1.SQL.Add('VALUES (:cla, :nom, :ape, :dir, :tel, :c, :r, :ma)');
Query1.ParamByName('cla').Value:=DBGrid2.DataSource.DataSet.FieldByName('clavecliente').value;
Query1.ParamByName('nom').Value:=DBGrid2.DataSource.DataSet.FieldByName('nombre').value;
Query1.ParamByName('ape').Value:=DBGrid2.DataSource.DataSet.FieldByName('apellido').value;
Query1.ParamByName('dir').Value:=DBGrid2.DataSource.DataSet.FieldByName('direccion').value;
Query1.ParamByName('tel').Value:=DBGrid2.DataSource.DataSet.FieldByName('telefono').value;
Query1.ParamByName('c').Value:=DBGrid2.DataSource.DataSet.FieldByName('CP').value;
Query1.ParamByName('r').Value:=DBGrid2.DataSource.DataSet.FieldByName('RFC').value;
Query1.ParamByName('ma').Value:=DBGrid2.DataSource.DataSet.FieldByName('clavemaquinaria').value;
Query1.ExecSQL;
DBGrid2.DataSource.DataSet.Next;
End;
end;
end;
end;
end.
:)

Caral 05-02-2008 22:05:46

Hola
Y que te guarda, nada, una linea, te da algun error?
Te lo digo por que no entiendo el codigo, si dices que usas ado, como puedes hacer esto:
Código Delphi [-]
Query1.ParamByName('cla').Value:=DBGrid2.DataSource.DataSet.FieldByName('clavecliente').value;
Cuando seria esto:
Código Delphi [-]
ADOQuery1.parameters.ParamByName('cla').Value:=DBGrid2.DataSource.DataSet.FieldByName('clavecliente'  ).value;
o esto:
Código Delphi [-]
ADOQuery1.parameters[0].Value:=DBGrid2.DataSource.DataSet.FieldByName('clavecliente').value;
[/delphi]
La parte del dbgrid no la entiendo muy bien, se que se hace un recorrido al dataset pero no se si hara lo que quieres.
Sigue, no te desesperes ya aparecera alguien con la solucion.
Saludos

keyboy 05-02-2008 22:20:21

Yo comenzaría agregando alguna etiqueta al código de arriba porque así es ilegible. Después me olvidaría del DBGrid. Si lo que quieres es transferir datos de una hoja de Excel a alguna base de datos, el DBGrid sale sobrando: si lo tienes conectado al ADOTable, entonces nota que DBGrid.DataSource.DataSet no es más que un camino largo para referirte al mismo ADOTAble. Por último, ayudaría que dijeras cuál es la base destino. Por ejemplo, si es Access o Paradox, te conviene más usar un Table que un Query. Otro tipo de bases de datos, como MySQL, permiten inserciones múltiples en una sóla consulta SQL, por lo que te convendría más un sólo Exec. En fin, que si das más detalles, sería más fácil.

Bye

MARLON1 06-02-2008 16:21:59

hola
 
estoy usando mysql, el problema es que no puedo almacenar los datos de la hoja de excel en la bd, lo unico que eh podido hacer es que los datos de la hoja de excel se muestren en un dbgrid pero no los puedo almacenar ¿me puedes ayudar?:)
gracias a todos por lo anterior.

MARLON1 06-02-2008 16:59:16

Cita:

Empezado por keyboy (Mensaje 263646)
Yo comenzaría agregando alguna etiqueta al código de arriba porque así es ilegible. Después me olvidaría del DBGrid. Si lo que quieres es transferir datos de una hoja de Excel a alguna base de datos, el DBGrid sale sobrando: si lo tienes conectado al ADOTable, entonces nota que DBGrid.DataSource.DataSet no es más que un camino largo para referirte al mismo ADOTAble. Por último, ayudaría que dijeras cuál es la base destino. Por ejemplo, si es Access o Paradox, te conviene más usar un Table que un Query. Otro tipo de bases de datos, como MySQL, permiten inserciones múltiples en una sóla consulta SQL, por lo que te convendría más un sólo Exec. En fin, que si das más detalles, sería más fácil.

Bye

hola keyboy, mira el error que me sale al querer guardar los datos de la hoja de excel es:ADOTable.File"clave cliente" not found, pero nose a que se deba ojala y me puedas ayudar gracias.

MARLON1 06-02-2008 18:20:37

hola
 
Cita:

Empezado por poliburro (Mensaje 261937)
Para eso nada mejor que ADO,

ojala y puedas ayudarme,¿sabes como hacer que los datos de un dbgrid se almacenen en una tabla de mi bd?.Estoy intentando con este codigo pero me marca un error que en la ADOTable no se encuentra el archivo clavecliente, me podrias ayudar diciendome como debo de poner la sentencia para que ya no tome los datos de la ADOTable sino del dbgrid espero y me hayas entendido saludos.

Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('INSERT INTO cliente (clavecliente, nombre, apellido,direccion,telefono,CP,RFC,clavemaquinaria)');
Query1.SQL.Add('VALUES (:cla, :nom, :ape, :dir, :tel, :c, :r, :ma)');
--esta es la parte donde tengo el error--Query1.ParamByName('cla').Value:=DBGrid2.DataSource.DataSet.FieldByName('clavecliente').value;


La franja horaria es GMT +2. Ahora son las 18:13:02.

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