Club Delphi  
    Paypal   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 Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 22
epuigdef Va por buen camino
Buenas!


Por lo que se refiere a la conexión con Access, fijate que en la propiedad connectionString tienes la ruta a la base de datos.

Lo que hago normalmente es guardarme en el registro de windows la ruta al servidor, cuando se ejecuta el programa voy a recogerla y concateno la connectionstring con el resto de parámetros. Entonces abro la conexión.

Te puedes montar una pequeña pantalla para configurar el valor que tienes guardado en el registro, por si alguna vez cambia de ubicación la base de datos.

Un saludo

Edu
Responder Con Cita
  #2  
Antiguo 13-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 21
Moises22 Va por buen camino
ok, es decir, editarlo como un fichero de texto cambiando la ruta en el caso de que quisiera cambiarla cierto???

Se me plantean dos preguntas:

¿Como manejan los registros de windows?

¿En lo referente a la conexion a MySQL alguien me puede ayudar?

Gracias por todo
Responder Con Cita
  #3  
Antiguo 13-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 22
epuigdef Va por buen camino
Buenas!


La idea es la siguiente:

Creas un DataModule y le colocas un TADOConnection (que llamaremos conexion) y un TOpenDialog.

El código de esta unidad es el siguiente:

Código Delphi [-]
unit UDataModule;
interface
uses
  SysUtils, Classes, DB, ADODB, Dialogs, Registry, Windows, Forms;
const
  bbdd1 = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
  bbdd2 = ';Persist Security Info=False;Jet OLEDBatabase Password=pepito';
type
  TDataMod = class(TDataModule)
    Conexion: TADOConnection;
    OpenDialog1: TOpenDialog;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
    fBBDD : String;
  public
    { Public declarations }
    property BBDD : String read fBBDD write fBBDD;
  end;
var
  DataMod: TDataMod;
implementation
{$R *.dfm}
procedure TDataMod.DataModuleCreate(Sender: TObject);
var Reg : TRegistry;
begin
    Reg := TRegistry.Create;
    try
        Reg.RootKey := HKEY_LOCAL_MACHINE;
        if Reg.OpenKey('SOFTWARE\EduP\pedidos', false) then
        Begin
            fBBDD := Reg.ReadString('BBDD');
        End
        else
        Begin
            if (Reg.OpenKey('\SOFTWARE\EduP\pedidos', true)) and
               (OpenDialog1.Execute) then
            Begin
                fBBDD := OpenDialog1.FileName;
                Reg.WriteString('BBDD', fBBDD);
            End
            else
            Begin
                Showmessage('Error en la instalación de la aplicación');
                Application.Terminate;
            End;
        End;
        if Conexion.Connected then
          Conexion.close;
        try
            Conexion.ConnectionString := bbdd1 + fbbdd + bbdd2;
            Conexion.Open;
        except
          if (Reg.OpenKey('\SOFTWARE\EduP\pedidos', true)) and
               (OpenDialog1.Execute) then
            Begin
                fBBDD := OpenDialog1.FileName;
                Reg.WriteString('BBDD', fBBDD);
                Conexion.ConnectionString := bbdd1 + fbbdd + bbdd2;
                conexion.Open;
            End
            else
            Begin
                Showmessage('Error en la instalación de la aplicación');
                Application.Terminate;
            End;
        end;
    finally
      reg.Free;
    end;
end;
end.
En la creación del DataModule el programa va a buscar en el registro de Windows la rama HKEY_LOCAL_MACHINE\software\EduP\Pedidos y recoge un valor de cadena que se llama BBDD. En este valor se almacena la ruta y el nombre de la base de datos.

Si la clave no existe se lanza el opendialog para que se seleccione la base de datos y guarda el valor.

Una vez tiene el valor concatena los textos para la connectionString y abre la conexión a la base de datos.

A partir de ahí cualquier TADOTable o TADOQuery necesita acceder al TADOConnection del DataModule y listo.

Espero que te sirva

Edu
Responder Con Cita
  #4  
Antiguo 13-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 21
Moises22 Va por buen camino
Me da un error de lectura.

Yo lo que hago es incluir UDataModule en el formulario principal y desde alli hago:

DataMod.DataModuleCreate(self);

La linea donde me da el error es esta:

Begin
if (Reg.OpenKey('\SOFTWARE\Gestorvvs\datos', true)) and
(OpenDialog1.Execute) then

...

Te pediria un ultimo favor y es que al no saber utilizar los DataModule me gustaria que me pusieses un ejemplo sobre como harias tu una sentencia SQL una vez obtenida la UDataModule.pas.

Supongo que una vez hecha esta unidad la puedo utilizar todas las veces que quiera.Muchas gracias por todo y un saludo

Última edición por Moises22 fecha: 13-12-2005 a las 15:03:50.
Responder Con Cita
  #5  
Antiguo 13-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 22
epuigdef Va por buen camino
Esta unidad va a ser común para todo el proyecto. En cualquier formulario que necesites acceder a la base de datos deberás incluirla en el uses. Después pinchas un TADOQuery en el formulario y miras la ventana de propiedades: Encontrarás una que se llama Connection. Si deslpiegas te va a aparecer la conexión del DataModule. Una vez seleccionada la conexión debes utilizar la propiedad SQL para escribir la sentencia, y desde código asignar los parámetros y abrir este TADOQuery. Mut fácil.


Edu
Responder Con Cita
  #6  
Antiguo 14-12-2005
Moises22 Moises22 is offline
Miembro
 
Registrado: sep 2005
Posts: 53
Poder: 21
Moises22 Va por buen camino
Unhappy

Sip correcto, pero mi problema es el siguiente.

He hecho lo que me has dicho y añado en el form que yo quiero lo siguiente:

ADOQuery1.SQL.Add('Select * from usadas');
ADOQuery1.Open;
ADOQuery1.Free;

Pues bien, me da un error que me dice "Missin connection or ConnectionString", parece que no pilla bien la conexion. El DataModule lo tengo exactamente = que el que me propusiste. Gracias por la ayuda de todas formas
Responder Con Cita
  #7  
Antiguo 14-12-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 22
epuigdef Va por buen camino
Te falta el ADOQuery1.connection := DataModule.Conexion

Si lo tienes pinchado en el formulario puedes ir a la página de propiedades y seleccionalo.

Un saludo

Edu
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 22:47:26.


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