Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 29-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 29-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 29-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #5  
Antiguo 30-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 30-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 30-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
Responder Con Cita
  #8  
Antiguo 30-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
bueno... de la forma descrita por mi, no es necesario el uso del alias...
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 30-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Pues lo pruebo como dices y me marca error:

Cita:
Empezado por Manejador de excepciones
Unknown database.
Alias: dbFactu


// Saludos
Responder Con Cita
  #10  
Antiguo 30-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
A mi marca el mismo error al tratar de hacerlo como dijo Juan Antonio
Responder Con Cita
  #11  
Antiguo 30-04-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 30-04-2004
Avatar de nefy
nefy nefy is offline
No confirmado
 
Registrado: nov 2003
Posts: 171
Poder: 0
nefy Va por buen camino
Probado y corroborado q si funciona (y) gracias de esta manera Juan

Gracias
Salu2
Tecoman-Colima-Mexico
Responder Con Cita
  #13  
Antiguo 30-04-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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
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 07:39:37.


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