Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta sql - Unknown database alias (https://www.clubdelphi.com/foros/showthread.php?t=83988)

nefore 25-08-2013 02:54:34

Consulta sql - Unknown database alias
 
Hola, estoy aprendiendo a programar en Delphi y hasta ahora he aprendido conexiones de BD en Access y hacer ABM a sus tablas, ahora me surge la necesitad de generar una consulta en sql, para ello utilize el query (siguiendo unos pasos que encontre en la web), pero me salta un error de "Unknown database alias: bdt" (en donde bdt es el nombre de la Base de Datos)

Para que se entienda mejor, tengo un formulario (donde mostrar la consulta sql) tengo un datasource, un query y un dbgrid (ambos ligados al datasource) y un button para "ejecutar la consulta".

el procedimiento del button en el evento click es el sig.:

Código:

procedure TForm28.Button1Click(Sender: TObject);
var
  fecha_actual, fecha_pasada: TDateTime;
begin
  fecha_actual:= date();
  fecha_pasada:= date()-7;

  Query1.Params[0].AsDateTime:= fecha_pasada;
  Query1.Params[1].AsDateTime:= fecha_actual;

  Query1.Open;

end;

Código SQL [-]
PARAMETERS FECHA_ACTUAL DateTime, FECHA_PASADA DateTime;
SELECT Personas.CODIGO, Personas.DNI, Personas.APELLIDO_NOMBRES,  Inspeccion.ENFERMEDAD, Inspeccion.FECHA_INSPECCION
FROM (((Personas INNER JOIN Inspeccion ON Personas.CODIGO = Inspeccion.CODIGO_PERSONA)) INNER JOIN Incidentes ON (Inspeccion.CODIGO_INSPECCION = Incidentes.CODIGO_INSPECCION)
WHERE (((Inspeccion.FECHA_INSPECCION)> :param_fecha_pasada) AND ((Inspeccion.FECHA_INSPECCION)<:param_fecha_actual))
ORDER BY Propietarios.APELLIDO_NOMBRES;

(Entiendo que la consulta sql no la van a enteder, pero la coloco para que sepan que trato de hacer una consulta entre varias tablas)

En donde fecha_pasada y fecha_actual son parametros que utilizo en la consulta, despues en las propiedades del query DatabaseName coloque "bdt" que es el nombre de la base de datos.
Esto es todo lo que hecho (siguiendo la pagina web) y me salta el error que mencione arriba. Aclaro que no se nada sobre como usar el query asi que pido disculpas si el error muy obvio.

Desde ya muchas gracias por su tiempo

Galahad 25-08-2013 14:45:27

unknow database alias
 
Hola , buenas...

el componente tquery que estás utilizando está basado en bde, en la propiedad 'Databasename', tienes que indicar, no el nombre de la base de datos (bdt), sino el nombre de una conexión creada , o bien dinámicamente por código, o bien creada por ejemplo con la utilidad 'bdeadministrator'

, otra alternativa es utilizar un componente tadoquery, mas propio para conectar con acces.

Espero te sirva la indicación..

Saludos...

nefore 25-08-2013 17:32:20

Cita:

Empezado por Galahad (Mensaje 466013)
Hola , buenas...

el componente tquery que estás utilizando está basado en bde, en la propiedad 'Databasename', tienes que indicar, no el nombre de la base de datos (bdt), sino el nombre de una conexión creada , o bien dinámicamente por código, o bien creada por ejemplo con la utilidad 'bdeadministrator'

, otra alternativa es utilizar un componente tadoquery, mas propio para conectar con acces.

Espero te sirva la indicación..

Saludos...

Hola muchas gracias por tomarte tu tiempo para responder a mi problema. Podrias ponerme un ejemplo en codigo?, no tengo ni idea como manejar los componentes que me sugieres

nefore 25-08-2013 19:31:20

Cita:

Empezado por nefore (Mensaje 466014)
Hola muchas gracias por tomarte tu tiempo para responder a mi problema. Podrias ponerme un ejemplo en codigo?, no tengo ni idea como manejar los componentes que me sugieres

Me respondo a mi mismo con un codigo de ejemplo que encontre:

Código:

procedure TForm2.FormCreate(Sender: TObject);
const
  { Connection string }
  ConnString =
  'Provider=SQLOLEDB.1;Persist Security Info=False;' +
  'User ID=%s;Password=%s;Data Source=%s;Use Procedure for Prepare=1;' +
  'Auto Translate=True;Packet Size=4096;Use Encryption for Data=False;'+
  'Tag with column collation when possible=False';
 
  { SQL Query }
  SQLStr = 'SELECT * FROM customer WHERE customer_id = :AnId;';
 
  { User access }
  UserName = 'db_user_name';
  PassWord = 'db_pass_word';
  Server = 'my.db.server';
 
var
  ADOConn  : TADOConnection;
  ADOQuery : TADOQuery;
  DataSrc  : TDataSource;
  Param    : TParameter;
 
begin
  { Create an ADO connection. }
  ADOConn := TADOConnection.Create(Self);
  { Set up the provider engine }
 
  { Set up the connection string. }
  ADOConn.ConnectionString := Format(ConnString,
    [UserName, PassWord, Server]);
 
  { Disable login prompt. }
  ADOConn.LoginPrompt := False;
 
  try
    ADOConn.Connected := True;
  except
    on e: EADOError do
    begin
      MessageDlg('Error while connecting', mtError,
                  [mbOK], 0);
 
      Exit;
    end;
  end;
 
  { Create the query. }
  ADOQuery := TADOQuery.Create(Self);
  ADOQuery.Connection := ADOConn;
  ADOQuery.SQL.Add(SQLStr);
 
  { Update the parameter that was parsed from the SQL query: AnId. }
  Param := ADOQuery.Parameters.ParamByName('AnId');
  Param.DataType := ftInteger;
  Param.Value := 1;
 
  { Set the query to Prepared--it will improve performance. }
  ADOQuery.Prepared := true;
 
  try
    ADOQuery.Active := True;
  except
    on e: EADOError do
    begin
      MessageDlg('Error while doing query', mtError,
                  [mbOK], 0);
 
      Exit;
    end;
  end;
 
  { Create the data source. }
  DataSrc := TDataSource.Create(Self);
  DataSrc.DataSet := ADOQuery;
  DataSrc.Enabled := true;
 
  { Finally, initialize the grid. }
  DBGrid1.DataSource := DataSrc;
end;

Muchas gracias Galahad por tu tiempo para orientarme hacia donde buscar
Saludos!


La franja horaria es GMT +2. Ahora son las 15:01:19.

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