PDA

Ver la Versión Completa : Instalar un programa que usa Access


Rox77
23-05-2003, 10:28:46
Hola, tengo algunas dudas sobre programas de bases de datos que usan Access con Delphi. Yo programo pequeñas aplicaciones en Delphi 3 hasta ahora usando Paradox pero hace un año o así alguien me pidio un programita para manejar una bd Access 97. Yo no habia usado Access con Delphi y rebuscando encontre que se puede usar pero me volvi loco para realizar las conexiones, etc. Para empezar:

1. Uso el BDE (pues en Delphi 3 es lo unico que puedo hacer)
2. Uso driver nativo de Delphi MSACCESS.
3. Y descubri que con la DLL por defecto del BDE para MSACCESS la IDAO32.DLL no podia acceder a las bases de datos de access 97 pero por casualidad comprobe que con IDA3532.DLL si que podia.
Hasta aqui lo que yo hago para trabajar. Ahora mis problemillas.

Si quiero que una aplicacion mia que use access funcione un un pc distinto al mio tengo que: a) instalar el BDE b)copiar la dll IDA3532.dll que no viene por defecto c) ponerla como dll en la configuracion del driver usando BDEAdministrator o BDConfig. d) instalar MSJET4 y MDAC

Si en el pc ya existe BDE no se si puedo reinstalarlo a mi manera para poder poner el driver IDA3532 sin que esto afecte al resto de la configuracion de ese BDE o si puedo cambiar ese driver desde codigo (primera duda para que me ayuden).

Ademas me parece muy engorroso todo este proceso para una aplicacion a lo mejor sencillita, pero me gustaria saber usarlo correctamente ¿lo estoy haciendo bien o es mucho mas sencillo y me estoy complicando la vida?

¿Alguien usa bases de datos access97 a traves del BDE sin usar ADO ni nada como yo y me puede contar sus experiencias?

Cualquier cosilla que me podais contar seguro que me viene bien...el saber no ocupa lugar (o por lo menos las neuronas no se han quejado todabia ;-) ) Gracias por molestarse en leer todo esto. :-)

Saludos.

obiwuan
29-05-2003, 19:58:42
Posteado originalmente por Rox77
Si en el pc ya existe BDE no se si puedo reinstalarlo a mi manera para poder poner el driver IDA3532 sin que esto afecte al resto de la configuracion de ese BDE o si puedo cambiar ese driver desde codigo (primera duda para que me ayuden).

Solamente en el caso en que el ordenador que tenga el BDE, NO tenga ese fichero dll, deberías de copiarlo y reconfigurar luego el driver de Access. Si instalas de nuevo el BDE machacarás los alias que tenga definidos, con lo que los otros programas no podrán funcionar.

Ademas me parece muy engorroso todo este proceso para una aplicacion a lo mejor sencillita, pero me gustaria saber usarlo correctamente ¿lo estoy haciendo bien o es mucho mas sencillo y me estoy complicando la vida?

Pues así es, es un poco engorroso, pero por ende, es una aplicación no pirateable, ya que sólo el programador que la hace sabe lo que hace. Sería necesario alguien muy experto para poder "crakear" una aplicación de este estilo. Es un engorro tener que configurar todos los terminales en los que va correr tu aplicación a mano, pero te aseguras que la copia tal cual de la misma no funciona.

¿Alguien usa bases de datos access97 a traves del BDE sin usar ADO ni nada como yo y me puede contar sus experiencias?

Otra cosa añadida es que si el ordenador no tiene Access 97 instalado o preinstalado, tu aplicación tampoco funcionará. Es decir, con Access 2000 o XP tu aplicación no funciona.

Kafu
13-06-2003, 10:08:53
Tengo exactamente el mismo problema. No hay manera de hacer este cambio desde Delphi? Es decir una pequeña aplicación que se encargue de cambiar el driver.. Un saludo,





F.T.G.

Rox77
13-06-2003, 16:58:57
Hola:

He estado un poco perdido por ahi...jeje :D

Bueno bueno...gracias por contestar lo primero. Lo segundo, probando probando las cosas se van averiguando.

Vamos por partes YO SI HE CONSEGUIDO CAMBIAR EL DRIVER POR CODIGO :D ... pero no me se el codigo de memoria...jaja ...ya lo traere..prometido. Otra cosa yo tengo un instalador del BDE que reinstala el BDE y conserva los alias...por lo menos cuando lo he probado.

Uso el MSACCESS nativo de BDE y no necesito crear alias a mano.
Me he bajado el MDAC_type.exe y el MSjet40.exe de microsoft y no me hace falta tener instalado el access ni 97 ni 2000 para que funcionen las aplicadios D3+BDE+Access :D (siento la euforia pero me costo mucho averiguar todo esto). Aunque he conseguido probar ADO con Access 2000 y Delphi 7 y pufffff...tendre q ahorrar...jeje.

Aaaa (esto ya es regocijo lo siento) compilo toda la ruta de la bd access al arrancar la aplicacion asignando la ruta por parametros para asi poder mover la aplicacion de directorio y no de error. :p

Buffff...que retaila de cosas...en fin eso es todo. SALUDOS.

Kafu
13-06-2003, 18:34:55
Vamos por partes YO SI HE CONSEGUIDO CAMBIAR EL DRIVER POR CODIGO ... pero no me se el codigo de memoria...jaja ...ya lo traere..prometido.


Te lo agradecería encarecidamente...

Kafu
16-06-2003, 09:34:33
Bueno sólo por si alguien más está interesado, aquí hay un link más que interesante para hacer lo que pedía:

http://info.borland.com/devsupport/bde/bdeapiex/dbiopencfginfolist.html

Un saludo,




F.T.G.

Rox77
17-06-2003, 16:03:15
Hola:

Lo prometido es deuda (Kafu) asique aqui tienes...espero te sirva de algo.


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DBTables, BDE;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Session1: TSession;
Memo1: TMemo;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
function IsBDEExist : boolean;
begin
Result := (dbiInit(nil) = 0);
end;
begin
if IsBDEExist then showmessage('SI, BDE esta instalado')
// Existe
else showmessage('NO, BDE no esta instalado. Instalalo.');
// No existe
end;

procedure TForm1.Button2Click(Sender: TObject);
var
DriverParams: TStringList;
begin
DriverParams := TStringList.Create;
try
{ add the parameters that you want to change only. The default for
this param is 31. }
DriverParams.Add('DLL32=IDDA3532.DLL');

{ call modify driver with name of driver and list of params }
session1.ModifyDriver('MSACCESS',DriverParams);

{ call this if you want to save the changes in the BDE for all
applications to use, will only take affect after all BDE applications
have been unloaded on the system. }
session1.SaveConfigFile;
finally
DriverParams.Free;
end;
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;

end.



Saludos. :D

Kafu
23-06-2003, 12:31:01
Ah, mucho más sencillo de lo que tenía. Gracias y un saludo,



F.T.G.