Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-08-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
¿Como hago mi conexion por programacion?

Estoy aprendiendo con un ejemplo ya hecho y me gustaria que me dijerais como tengo que sustituir unos componente que tiene hechos por diseño y cambiarlos a programacion directa.
Mediante un boton en el form principal se llama a un form3 en en cual hay un un TDBGrid, un DataSource y 2 Tables. Por Diseño
Que codigo tengo que poner en
procedure TForm3.FormShow(Sender: TObject);
para que el DataSource y los 2 Tables esten presentes sin poner los componentes en el formulario.
y tambien que codigo tengo que hacer para poner las propiedades de los tables por codigo.
-----------------------------
En las propiedades del table1 tengo en
Active True
DatabaseName c:\ejemplo
Name Table1
TableName auxiliar.db
-----------------
En las propiedades del table2 tengo en
Active True
DatabaseName c:\ejemplo
Name Table2
TableName ventas.db
--------------------------
El DBGrid
DataSource DataSource1
Name DBGrid1

Y lo que quiero es quitar los componentes visuales del DataSource y los 2 tables y ponerlos por programacion directa.
Pero no se como se hace.
Gracias
Responder Con Cita
  #2  
Antiguo 06-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Pues necesitas 3 variables, una de cada tipo

Código Delphi [-]

TForm1 = class(Tform)

private
  ElDatasource:TDataSource;
  Tabla1:TTable;
  Tabla2:TTable;
  dbGrid2:Tdbgrid;
...
end;

implementation

procedure TForm1.FormShow(Sender: TObject);
begin
  Tabla1 := TTable.Create(Form1);
//Creo la tabla, y le asigno como dueño el Form1,
// al liberar el Form1, se libera de la memoria
// tambien la tabla1

//En las propiedades del table1 tengo en
with tabla1 do
begin
  DatabaseName := 'c:\ejemplo';
  Name := 'Table1';
  TableName :='Auxiliar.db';
  Active := True;
  // logicamente antes de poner en activo la tabla, todas
  // las propiedades deben estar establecidas.
end;

//El DBGrid
ElDatasource := Tdatasource.Create(Form1);
ElDatasource.Dataset := Tabla1;

// Hombre, ya puestos, tambien creamos el Grid;
DBGrid2 := TDBGrid.Create(Form1);
DBGrid2.SetBounds(0,40,Form1.Width, Form1.Height-40);
DBGrid2.Parent:= Form1;
DBGrid2.Visible:= True;


DBgrid2.Datasource := ElDatasource;
tabla1.Open;

end;

Yo he usado Form1, así que cambia las referencias a Form3

Un detalle: Si ya has puesto los Datsources y ttables en tu ventana, delphi ha añadido los uses automaticamente, por tanto, este ejemplo se compila sin problemas.

Si partes de un formulario totalmente vacio, cuando pongas :
tabla1 : TTable;
el compilador se quejará porque no sabe que es el TTable, entonces, haz clic sobre la palabra "TTable" pulsa F1 y la ayuda de delphi te dirá que se encuentra en:
Cita:
Empezado por Ayuda de delphi
Unit

DBTables
Por tanto ya sabes que tienes que poner "uses DBTables;" para poder continuar.

Edito: este mensaje ha sido comprobado en delphi.

Un saludo.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #3  
Antiguo 06-08-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
Muchas gracias

He creado este ejemplo con lo que tu me has dicho y me funciona.
Asi que me gustaria si algo esta mal me lo corrijas.

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBGrids, DB, DBTables;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
DataSource1:TDataSource;
Table1:TTable;
DBGrid1:TDBGrid;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
// Creo el DataSource, el Table y el DBGrid y lo asigno al Form1
Datasource1 := Tdatasource.Create(Form1);
Table1 := TTable.Create(Form1);
DBGrid1 := TDBGrid.Create(Form1);
//En las propiedades del table1 tengo en
with table1 do
begin
DatabaseName := 'e:\ejemplo';
Name := 'Table1';
TableName :='Clientes.dbf';
Active := True;
Datasource1.Dataset := Table1;
// logicamente antes de poner en activo la tabla, todas
// las propiedades deben estar establecidas.
end;
//En las propiedades del Grid1 tengo en
with DBGrid1 do
begin
DBGrid1.SetBounds(0,40,Form1.Width, Form1.Height-40);
DBGrid1.Parent:= Form1;
DBGrid1.Visible:= True;
DBgrid1.Datasource := DataSource1;
end;
// Abro el Table1
table1.Open;
end;
end.

Me falta ordenar la tabla. Supongo que lo sacare.
Habras visto que soy novato total
Pero me gusta esta forma de aprender.
Me puedes decir como hago para que el hilo salga bonito como el tuyo?
Responder Con Cita
  #4  
Antiguo 06-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por Firma de jachguate
Dale a esos enlaces. El 2do enlace te ense~a como hacerlo
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 06-08-2005 a las 21:04:35.
Responder Con Cita
  #5  
Antiguo 06-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Antuan, Tengo que comentar un fallo en el código que he posteado; Como yo no tengo tu tabla llamada Auxiliar, he usado una tabla que tenia a mano llamada 'Clientes.dbf', y se me olvídó modificarlo al pegar el mensaje.

Donde dice :

TableName := 'Clientes.dbf'

deberás cambiarlo por:
TableName := 'Auxiliar.db'

Con eso ya debería tirar de lujo, siento las molestias.

Por cierto, para el "código salga bonito" usa esto:

[ delphi ]
aqui vuestro codigo fuente
[ /delphi ]

(sin espacios dentro de los corchetes) Así consigues que respete el identado y aparezca las palabras reservadas en negrita y colores.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 07-08-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
Una cosa mas

Me va todo muy bien y gracias por tu atencion para que aprenda.
Solo me queda en este ejemplo y que no soy capaz de poder hacer que tome la base de datos la misma ruta donde tengo la aplicacion.
Código Delphi [-]
with table1 do
begin
  DatabaseName := 'ExtractFilePath(ParamStr(0))' //esto no lo se poner
  TableName :='Auxiliar.db';
  Name := 'Table1';
  Active := True;
  Datasource1.Dataset := Table1;
  // logicamente antes de poner en activo la tabla, todas
  // las propiedades deben estar establecidas.
end;
La base de datos esta en la misma carpeta que la aplicacion.
De nuevo muchas gracias por tu atencion.
Responder Con Cita
  #7  
Antiguo 07-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Puedes usar:

Código Delphi [-]
 

DatabaseName := ExtractFilePath(Application.ExeName);

Es otra forma, pero es exactamente lo mismo que paramstr(0)

Aunque yo te sugiero que las tablas las coloque en una SubCarpeta, ya que son muchos archivos los que se crean, ficheros de tablas, indices, validaciones, campos memos (si los utilizas), etc;
Crea la carpeta "tablas" dentro del .EXE, y despues añades esto:
Código Delphi [-]
DatabaseName := ExtractFilePath(Application.ExeName)+'tablas';

Advertencia: Ten cuidado con las rutas extremadamente largas, yo situaría el programa con esta estructura de carpetas:
Código:
 c:
  |-----Mi Programa
                |--------- Archivo .Exe
                |--------- Tablas
                              |---------  auxiliar.DB
                              |---------  Otratabla.DB

Edito: Acabo de probarlo con la ruta:

C:\Archivos de programa\Borland\Delphi6\Projects\tablas

y funciona, pero recuerdo que en algun momento usando muchos niveles de carpetas, el BDE se quejó.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 07-08-2005 a las 14:40:01.
Responder Con Cita
  #8  
Antiguo 07-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos
Cita:
Empezado por Antuan
Solo me queda en este ejemplo y que no soy capaz de poder hacer que tome la base de datos la misma ruta donde tengo la aplicacion.
Es Extra~o, Como sabes que no lo esta tomando? Te da algun Error? y si es asi, que error?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #9  
Antiguo 08-08-2005
Antuan Antuan is offline
Miembro
 
Registrado: jul 2005
Ubicación: Madrid
Posts: 73
Poder: 19
Antuan Va por buen camino
Funciona

Con esto funciona perfectamente
DatabaseName := ExtractFilePath(Application.ExeName)+'tablas';
Muchas gracias
Responder Con Cita
Respuesta



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 06:29:49.


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
Copyright 1996-2007 Club Delphi