Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Asignar parametros al TSession y al TDataBase por codigo me da error (https://www.clubdelphi.com/foros/showthread.php?t=13733)

images 28-08-2004 19:42:29

Asignar parametros al TSession y al TDataBase por codigo me da error
 
Hola :)

Siguiendo algunos tutoriales me he decidido a asignar los valores de mi base de datos paradox en tiempo de ejecucion.

En el OnCreate del DataModule pongo el siguiente codigo q es el q saque de un articulo:

Código Delphi [-]
  With SesionServer Do   // TSession
  Begin
   NetFileDir:=CamTextoIni.ReadString('SESIONSERVER','NetFileDir','');
   PrivateDir:=CamTextoIni.ReadString('SESIONSERVER','PrivateDir','');
  End;
 
 With SERVER Do    //TDabaBase
  Begin
   DatabaseName:='SERVER';
   Params.Clear;
   Params.Add('PATH='+CamTextoIni.ReadString('SERVER','PATH',''));
   Params.Add('DEFAULT DRIVER=PARADOX');
   Params.Add('ENABLE BCD=FALSE');
   Connected:=True;
  End;

Despues, con cada tabla hago esto:

Código Delphi [-]
 Try
      Tpv.DatabaseName:='SERVER';       // TPV
      Tpv.SessionName:='SessionServer';
      Tpv.Active:=True;
    Except
      ShowMessage('NO SE PUDO ABRIR LA TABLA TPV')
    End;
    FormSplash.ProgressBar.StepIt;
    FormSplash.update;

Me da el error:

"UnNkow DataBase
Alias: Server"

Antes cuando lo tenia en el programa el TDabaBase le puse el Alias q cree. Pero metiendo los parametros a mano no hace falta el alias ¿no?

moesis 28-08-2004 20:18:31

Saludos,

Mi estimado iniciado en Delphi, el error que estás cometiendo es que no has definido un alias en le utilidad SQLExplorer en el menú de Borland Delphi 7.

Cuando hayas abierto la aplicación has de crear un nuevo 'Alias' que apunte al directorio donde residen tus tablas de Paradox.

Esperando haberte ayudado,
un saludo,

images 28-08-2004 21:03:09

Gracias :)

Pero no me rula :(

Ya tengo los Alias Creados y con ellos funcionaba bien asignando los parametros en la aplicacion.
Pero al asignarle los parametros en tiempo de ejecucion leyendolos de un .ini me da el error q dicho antes. Antes de leer tu respuesta al hacerlo con el .ini le quite el parametro Alias al TDabaBase, por que pense q al asignarle la ruta y demas parametros no hacia falta el Alias.
Al leer tu respuesta he puesto el Alias otra vez pero tampoco rula :(

__cadetill 29-08-2004 09:25:27

Está bien que se quieran poner ciertas cosas por código, pero si no es necesario, tampoco hay que ser más papitas que el papa ;)

Creo (no se como tienes la aplicación) que la mayoría de esos parámetros son fijos "esté donde esté" la aplicación, por lo que yo los configuraría en el Inspentor de Objetos.

Otra história es, por ejemplo, la ruta de la base de datos (si no queremos usar alias), que eso sí puede cambiar de instalación a instalación. Para ello puedes hacer algo así (si suponemos que están en el mismo Path que la app.):
Código Delphi [-]
  if Database1.Connected then Database1.Connected := false;

  Database1.Params.Clear;
  Database1.Params.Add('DEFAULT DRIVER=PARADOX');
  Database1.Params.Add('ENABLE BCD=FALSE');
  Database1.Params.Add('PATH=' + ExtractFilePath(Application.ExeName));
  Database1.Connected := true;

Espero que te sirva

Raptor 29-08-2004 18:47:03

holas a todos


images : tu problema consiste en que tu le esta asignando el tsession a los table , no se los asigne , deja que el TDatabase tome la seccion por default.

Este lo que hace es si no existe un TSession entonces crea una en tiempo de ejecucion..

todos tus parametros estan bien.. a excepcion de esto.:
Try
Tpv.DatabaseName:='SERVER'; // TPV
Tpv.SessionName:='SessionServer';
Tpv.Active:=True;
Except
ShowMessage('NO SE PUDO ABRIR LA TABLA TPV')
End;
FormSplash.ProgressBar.StepIt;
FormSplash.update;

o sea no le asite el tsession a nadie..


suerte...

luigidean 07-09-2004 00:23:01

a mi tambien me paso lo mismo
 
Yo también tuve un problema parecido, vereis, os cuento: Al igual que el compañero que hace la pregunta, yo tambien queria conectar mi BD por codigo, intenté hacerlo en el evento OnCreate del formulario con este codigo(decir que no tengo alias, solo queria poner el path de la BD):

Código:

//lo pongo en el evento Activate porque en el Create da error
DataModule1.dbNoteLinks.DatabaseName:=ExtractFilePath(Application.ExeName) + 'bd';
DataModule1.dbNoteLinks.Connected:=true;
DataModule1.tblCategorias.Open;
DataModule1.tblLinks.Open;

Pero no me funcionó, me daba un error que ahora mismo no recuerdo, entonces se me ocurrió ponerlo en el evento OnActivate del formulario y entonces ya todo fue bien. Para controlar el tema del evento OnActivate os pongo el codigo completo:

Código:


if activo=false then begin
                self.Top:=self.Top-10;
                //lo pongo en el evento Activate porque en el Create da error
                DataModule1.dbNoteLinks.DatabaseName:=ExtractFilePath(Application.ExeName) + 'bd';
                DataModule1.dbNoteLinks.Connected:=true;
                DataModule1.tblCategorias.Open;
                DataModule1.tblLinks.Open;
        end;
        activo:= true;



La franja horaria es GMT +2. Ahora son las 05:05:25.

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