Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Archivos .conf para asignar rutas de las tablas? (https://www.clubdelphi.com/foros/showthread.php?t=9672)

nefy 29-04-2004 02:33:35

Archivos .conf para asignar rutas de las tablas?
 
hola mi pregunta es la siguiente, se q con un archivo .conf se puede asignar la ruta de donde esta la base de datos, y asi q el usuario pueda mover las tablas y solo le asigna la ruta en dicho archivo hasta ahi todo bien. sin embargo yo le asigno la ruta de la linea del archivo .conf q corresponde a la ruta a cada uno de los TTables, y al ser bastantes quiero saber si existe alguna manera (Objeto, procedimiento, funcion, etc) con la cual le asigna en el menor numero de pasos posibles a las tablas la ruta en su propiedad DatabaseName y asi evitar la larga lista de asignar TTable por TTable el valor a DatabaseName.

Gracias
Salu2
Tecoman-Colima-Mexico

jachguate 29-04-2004 03:02:41

Hola. Supongo que trabajas con archivos planos (paradox, dbase o algo similar).
Si todos los TTable están ligados a un mismo TDatabase... te bastaria con almacenar una sola vez la ruta, y luego asignarla a su propiedad Directory. Si no usas un objeto TDatabase, te recomiendo su uso, pues tenes un mayor control de este tipo de cosas.

Otra opción es hacer un ciclo que recorra los componentes del owner, y asigne la propiedad correspondiente a las tablas.

Suponiendo que todas las tablas están en un mismo formulario, bastaria algo como:

Código Delphi [-]
Var
  i : Integer;

Begin
  for i := 0 to ComponentCount - 1 do
    try
      (components[i] as TTable).DatabaseName := LaRuta;
    except
      on EInvalidCast do ; // no hacemos nada, no es un TTable
    end;
end;

Hasta luego.

;)

nefy 29-04-2004 17:03:42

Perdon Juan Antonio piensi como tu sobre relacionar las TTable con TDatabase el punto es como pues buscando en las propiedades de los TTable no encontre ninguna propiedad q me permita enlazarme con la base de datos. Pense en la propiedad DataBaseName pero no se le puede relacionar de esa manera.

Asi como los relaciono?.

Nota: Ayuda mucho el ciclo de los objetos pero quisiera conocer el camino q se usa con un Database

Salu2
Tecoman-Colima-Mexico

jachguate 29-04-2004 18:37:17

Precisamente es con DatabaseName.

Primero a un TDatabase le asignas un valor en su propiedad DatabaseName. Digamos dbFactu. Luego a todos los TTable, TQuery o TStoredProc que ronden por tu aplicación, en su propiedad DatabaseName también les asignas (escribiendo o eligiendo del combo) dbFactu, y listo.

Para aprender algunas otras cosas importantes sobre el programar orientado a bases de datos, te recomiendo la lectura de un libro de delphi. Podes empezar con La cara oculta de delphi, que para delphi 4, Ian Marteens lo ha puesto gratuitamente a disposición del público en su página web.

Hasta luego.

;)

nefy 30-04-2004 16:58:27

Gracias Juan solo q eso q me mencionas ya lo habia intentado
(Primero a un TDatabase le asignas un valor en su propiedad DatabaseName. Digamos dbFactu. Luego a todos los TTable, TQuery o TStoredProc que ronden por tu aplicación, en su propiedad DatabaseName también les asignas (escribiendo o eligiendo del combo) dbFactu, y listo.)
Sin embargo como lo quiero hacer con Pdx no existen bases de datos como explicitas como en Firebird por ejemplo asi q a la propiedad databasename del TDatabase le asigno la ruta de donde estan las tablas y le asigno True a connected y si se conecta pero cuando le asigno a DatabaseName del TTable el TDatabase manda un mensaje de q es una base de datos desconocidas.

Y de hecho ya habia bajado Delphi 4 de la pagina de Marteens y lo estoy leyendo.

Gracias
Salu2

jachguate 30-04-2004 17:34:35

Pues hay algo que no has entendido bien. Yo me he conectado una sola vez a Paradox en mi vida (hace unos 6 años), pero lo hice de esta forma y me fue fenomenal....

De memoria:

Database.DatabaseName = dbFactu
Database.Directory = 'c:\pruebas\pdx\juan'

Table1.DatabaseName = dbFactu; (date cuenta que no es un apuntador al database... que ese el BDE lo encuentra y asigna internamente; es el mismo string que has puesto en el DatabaseName del DB).

Hasta luego.

;)

roman 30-04-2004 17:47:14

Cita:

Empezado por nefy
Sin embargo como lo quiero hacer con Pdx no existen bases de datos como explicitas

Pero existen Alias. Hay que establecer el Alias en la propiedad Alias de Database. En la propiedad DatabaseName de Database se pone el nombre que con que deseemos identificar a la base y en la propiedad DatabaseName e cada Table se pone dicho nombre.

// Saludos

jachguate 30-04-2004 17:59:35

bueno... de la forma descrita por mi, no es necesario el uso del alias...

roman 30-04-2004 18:08:43

Pues lo pruebo como dices y me marca error:

Cita:

Empezado por Manejador de excepciones
Unknown database.
Alias: dbFactu

:confused:

// Saludos

nefy 30-04-2004 18:11:17

A mi marca el mismo error al tratar de hacerlo como dijo Juan Antonio

jachguate 30-04-2004 18:24:53

bien... bien.

Me han obligado a abrir mi viejo y querido delphi 4 (por suerte ahora lo tengo a mano).

Lo que he hecho es lo siguiente:

He botado en la forma:

un TDatabase: Database1 y
un TTable: Table1.

Las propiedades mas relevantes son:

Código Delphi [-]
  object Database1: TDatabase
    DatabaseName = 'dbFactu'
    DriverName = 'STANDARD'
    Params.Strings = (
        'PATH=C:\Archivos de programa\Archivos comunes\Borland Shared\Dat' +
        'a'
      'DEFAULT DRIVER=PARADOX'
      'ENABLE BCD=FALSE')
    SessionName = 'Default'
  end
  object Table1: TTable
    DatabaseName = 'dbFactu'
    TableName = 'country.db'
  end

He puesto a true la propiedad connected del TDatabase, y al hacer doble clic sobre el TTable he podido añadir los campos sin problemas. Luego, para verificar, he puesto también a true la propiedad Active del Table1; he añadido un DataSource enganchado a este, y un dbGrid enganchado al DataSource.

y Pun, tengo los datos de muchos paises en mi vista de diseño...

Espero lo dicho sea de utilidad. En lo personal, preferiria este método, con el que no tengo que crear ningun alias en el BDE y tengo control "total" de donde estarán los datos de mi aplicación.

Hasta luego.

;)

nefy 30-04-2004 18:36:18

Probado y corroborado q si funciona (y) gracias de esta manera Juan

Gracias
Salu2
Tecoman-Colima-Mexico

roman 30-04-2004 18:40:26

Cita:

Empezado por jachguate
Código Delphi [-]
  object Database1: TDatabase
    DatabaseName = 'dbFactu'
    DriverName = 'STANDARD'
    Params.Strings = (
        'PATH=C:\Archivos de programa\Archivos comunes\Borland Shared\Dat' +
        'a'
      'DEFAULT DRIVER=PARADOX'
      'ENABLE BCD=FALSE')
    SessionName = 'Default'
  end
  object Table1: TTable
    DatabaseName = 'dbFactu'
    TableName = 'country.db'
  end

Notarás una pequeña, pero esencial, diferencia respecto a tu descripción original.

// Saludos


La franja horaria es GMT +2. Ahora son las 10:48:44.

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