Italian community of Lazarus and Free Pascal

Programmazione => Databases => Topic aperto da: aravagli - Gennaio 02, 2013, 11:22:15 am

Titolo: Firebird e SQLDb
Inserito da: aravagli - Gennaio 02, 2013, 11:22:15 am
Sono nuovo del gruppo e di Lazarus provenendo da Delphi
Mi scuso se la cosa sembra ovvia ma dopo la consultazione dei suggerimenti in rete mi rivolgo qui, trovandomi bloccato su questo punto di base.
Ho fatto un progettino di esempio per connettermi ad un database Firebird usando i componenti SQLDb: in IBConnection ho indicato il database, utente e password, ma quando cerco di impostare il connected dà l'errore: "cannot load Firebird clients (fbmbed.dll or gds32.dll)
La gds32.dll sta nel path, l'ho copiata anche nella cartella del progetto, nel search path di Lazarus ma nisba.
Dalla documentazione in rete che ho consultato non ho ricavato che gli ovvi suggerimenti per il path.
Qualche indicazione?

aravagli
Titolo: Re:Firebird e SQLDb
Inserito da: xinyiman - Gennaio 02, 2013, 11:26:42 am
Ciao innanzitutto benvenuto, potrà sembrare banale come domanda, ma tu hai installato sullo stesso pc anche la versione server?!
Inoltre consiglio spassionato installati le zeoslib, che ti permettono di essere (indipendente) dal tipo di db.
Titolo: Re:Firebird e SQLDb
Inserito da: Stilgar - Gennaio 02, 2013, 11:30:57 am
Ciao,
  dentro "InitialiseIBase60" c'è questo pezzetto di codice, che a te fallisce:

Codice: [Seleziona]
    If (TryInitialiseIBase60(fbembedlib)=0) and 
       (TryInitialiseIBase60(fbclib)=0) and
       (TryInitialiseIBase60(gdslib)=0) then
        Raise EInOutError.CreateFmt(SErrDefaultsFailed,[fbembedlib,gdslib,fbclib]);
    end;   
Dal messaggio d'errore che riporti penso tu stia lavorando su Windows. Ecco le definizioni.
Codice: [Seleziona]
{$IFDEF Windows}
  {$DEFINE extdecl:=stdcall}
  const
    gdslib = 'gds32.dll';
    fbclib = 'fbclient.dll';
    fbembedlib = 'fbembed.dll';
{$ENDIF}   
La dll che deve cercare ... come si chiama?
(O meglio, tu hai copiato la dll, ma quale dei tre nomi hai usato?)
Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 02, 2013, 11:49:52 am
dipende dalla versione installata:
Titolo: Re:Firebird e SQLDb
Inserito da: aravagli - Gennaio 02, 2013, 11:54:57 am
> La dll che deve cercare ... come si chiama?
> (O meglio, tu hai copiato la dll, ma quale dei tre nomi hai usato?)

Io ho copiato sia fbclient.dll che gds32.dll
Non uso la versione embed di Firebird ma il server normale
Titolo: Re:Firebird e SQLDb
Inserito da: Stilgar - Gennaio 02, 2013, 11:58:15 am
mmm, facciamo la prova del 9.
Prendi dal tuo path di sistema una cartella, copia la fbclient.dll (una sola però) dentro lì.
In questo modo la vedono "tutti" i programmi.

Stilgar
Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 02, 2013, 12:00:25 pm
se usi win7 a 64bit le librerie client dei programmi a 32 bit vanno anche in SysWOW64

Edit:
e controlla i permessi delle librerie... con win7 non si sa mai!
Titolo: Re:Firebird e SQLDb
Inserito da: aravagli - Gennaio 02, 2013, 12:09:03 pm
Prendi dal tuo path di sistema una cartella, copia la fbclient.dll (una sola però) dentro lì.
In questo modo la vedono "tutti" i programmi.

Ho nel path la cartella C:\Lazarus\librerie e dentro ho appunto inserito la fbclient.dll

se usi win7 a 64bit le librerie client dei programmi a 32 bit vanno anche in SysWOW64

Edit:
e controlla i permessi delle librerie... con win7 non si sa mai!


Infatti uso Win7 64 bit
Ho già copiato fbclient.dll anche in WOW64 e la cartella C:\Lazarus\librerie ha tutti i permessi di accesso (in lettura..)
Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 02, 2013, 12:35:30 pm
Prendi dal tuo path di sistema una cartella, copia la fbclient.dll (una sola però) dentro lì.
In questo modo la vedono "tutti" i programmi.

Ho nel path la cartella C:\Lazarus\librerie e dentro ho appunto inserito la fbclient.dll

Stilgar voleva dire di aprire una shell del dos, dare il comando "PATH" e vedere quali sono le cartelle. In una di queste dovresti mettere fbclient.dll.
Immagino però che WOW64 sia presente in PATH, puoi confermare?

Se così fosse ed ancora non va, prova ad installare firebird "as administrator".


Edit:
ho trovato questo link prova a vedere se ti risolve
http://comments.gmane.org/gmane.comp.ide.lazarus.general/63772 (http://comments.gmane.org/gmane.comp.ide.lazarus.general/63772)
Titolo: Re:Firebird e SQLDb
Inserito da: aravagli - Gennaio 02, 2013, 01:40:04 pm
Prendi dal tuo path di sistema una cartella, copia la fbclient.dll (una sola però) dentro lì.
In questo modo la vedono "tutti" i programmi.

Ho nel path la cartella C:\Lazarus\librerie e dentro ho appunto inserito la fbclient.dll

Stilgar voleva dire di aprire una shell del dos, dare il comando "PATH" e vedere quali sono le cartelle. In una di queste dovresti mettere fbclient.dll.


Confermo che la cartella c:\Lazarus\librerie è nel path e che nella stessa ho copiato fbclient.dll senza risultato.

Immagino però che WOW64 sia presente in PATH, puoi confermare?

Se così fosse ed ancora non va, prova ad installare firebird "as administrator".

[size=78%]ho trovato questo link prova a vedere se ti risolve[/size]
http://comments.gmane.org/gmane.comp.ide.lazarus.general/63772 (http://comments.gmane.org/gmane.comp.ide.lazarus.general/63772)
SYSWOW64 NON è nel path...
Provato a inserirla ma con lo stesso risultato deludente


Il link che hai suggerito l'ho già letto e seguito ma ancora senza risultati

Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 02, 2013, 03:39:35 pm
la cosa strana è che solitamente basta che la fbclient.dll sia nella cartella del programma che la usa,
quando è così è abbastanza disarmante...

prova a reinstallare come administrator
Titolo: Re:Firebird e SQLDb
Inserito da: aravagli - Gennaio 02, 2013, 04:05:48 pm
la cosa strana è che solitamente basta che la fbclient.dll sia nella cartella del programma che la usa,
quando è così è abbastanza disarmante...

prova a reinstallare come administrator
Infatti sono molto perplesso.
Ho reinstallato Firebird come amministratore ma il risultato non è cambiato


Per non impuntarmi inutilmente e troppo a lungo, ho scaricato e installato Zeos 7.0.3 stable
Impostando una ZConnection con il nome completo del database, utente e password, protocollo e in libraryLocation indicando il file c:\lazarus\librerie\gds32.dll
tentando di connettere il database, il risultato è il seguente messaggio: none of the dynamic libraries can be found or is not loadable: c:\lazarus\librerie\gds32.dll!
Sto sempre più perplesso!

Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 02, 2013, 04:19:45 pm
dove è che hai impostato " c:\lazarus\librerie\" nel progetto?
zeos è un bel po' che non lo uso ma se non ricordo male bisognava specificare solo il nome
Titolo: Re:Firebird e SQLDb
Inserito da: aravagli - Gennaio 02, 2013, 04:23:58 pm
dove è che hai impostato " c:\lazarus\librerie\" nel progetto?
zeos è un bel po' che non lo uso ma se non ricordo male bisognava specificare solo il nome


in opzioni progetto/opzioni compilatore/percorsi nel campo Librerie
Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 02, 2013, 05:02:51 pm
toglilo, lascia vuoto e riprova
probabilmente così va a cercare nei luoghi di default
Titolo: Re:Firebird e SQLDb
Inserito da: aravagli - Gennaio 06, 2013, 10:55:29 pm
Provato lo stesso progetto di test in un altro computer con XP SP3 Lazarus  1.0.4 fpc 2.6.0 con IBConnection e stesse impostazioni e la cosa ha funzionato al primo colpo.
Ricordo che l'ambiente che mi ha creato i problemi è win7 64 bit Lazarus 1.0.4 fpc 2.6.0 e firebird 1.5.0 (versione datata ma dovuta all'ambiente che ho in produzione e che dovrei riprodurre)
Le ho provate veramente tutte ma non sono riuscito in una operazione veramente banale come la connessione al database
Evidentemente il mix di 64 bit del SO, la versione di firebird e la versione di Lazarus hanno combinato la situazione impossibile.
Se qualcuno ha suggerimenti in proposito, sia il benvenuto!
Titolo: Re:Firebird e SQLDb
Inserito da: nomorelogic - Gennaio 07, 2013, 12:09:23 am
la 1.5.0 non è l'ultima versione della serie 1.5 di firebird, l'ultima è la 1.5.6.
non vorrei che nella .6 ci siano delle patch per win7 64bit.
a questo punto una prova toccherebbe farla, per quanto riguarda la compatibilità non ci dovrebbero essere problemi con la 1.5.0