Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25
  1. #1

    [DELPHI]condivisione in rete intranet di un applicativo

    Ho provato a condividere in una rete intranet un applicativo funzionante che utilizza le librerie DBExpress ma ottengo questo messaggio di errore:
    dbExpressError: [0x0015]:Connection Failed Database Server Error: operating system directive createfile failed - Accesso Negato.
    I due computer in rete hanno sistema operativo winXp home e winXp professional: l'applicativo non richiede installazione perché costituito da un eseguibile, un db Firebird e alcune librerie. A cosa potrebbe essere dovuto l'errore visto che se inserisco l'applicativo su di un dvd questo funziona perfetteamente in tutti e due i computer?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da vicky
    Ho provato a condividere in una rete intranet un applicativo funzionante che utilizza le librerie DBExpress ma ottengo questo messaggio di errore
    Cosa intendi precisamente con "condividere in rete"? Hai copiato l'applicazione su una locazione diversa dal computer locale e stai eseguendo l'applicativo da quella posizione?

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Si, penso che si possa dire così. In pratica devo poter condividere l'applicativo in una rete formata da tre computer. L'applicativo è copiato all'interno di uno dei tre computer; è stato condiviso e vorrei accedervi anche dagli altri due computer.

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da vicky
    Si, penso che si possa dire così. In pratica devo poter condividere l'applicativo in una rete formata da tre computer. L'applicativo è copiato all'interno di uno dei tre computer; è stato condiviso e vorrei accedervi anche dagli altri due computer.
    Bisogna tenere conto del fatto che, se non ricordo male, l'applicativo accede a dati memorizzati in locale; lanciando il file direttamente dalla rete, il programma tenterà quindi di aprire queste risorse nella locazione di rete da cui proviene, e non tutte le operazioni di questo tipo sono concesse.

    Infatti, l'errore proviene proprio dal dbExpress: supponendo che il tuo programma acceda ad un database per cercare un nome tra 1000000 di nominativi, nel caso in esame questa operazione dovrebbe essere portata a termine facendo viaggiare in rete locale tutti i nominativi, quindi 1000000 di record, per trovare quello giusto.

    Questo vale per qualsiasi database di tipo "file based", come lo è FireBird (limitatamente alla sua edizione "Embedded").
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Ne deduco che non ci sia niente da fare se non cambiare la struttura dell'applicativo: cosa dovrei usare per accedere ai dati memorizzati sul database da qualsiasi computer presente nella rete locale? (parlo sempre di intranet)
    Sparo: non potrebbe invece trattarsi di un problema di "permessi" di lettura da un computer all'altro?

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da vicky
    Ne deduco che non ci sia niente da fare se non cambiare la struttura dell'applicativo: cosa dovrei usare per accedere ai dati memorizzati sul database da qualsiasi computer presente nella rete locale? (parlo sempre di intranet)
    Dovresti installare FireBird SuperServer e modificare la configurazione della libreria dbExpress affinchè non usi la DLL "fbembed.dll" ma la DLL del client di FireBird, da installare su ogni macchina, cioè "fbclient.dll", e modificare il percorso del database affinchè contenga il nome del server a cui collegarsi e il percorso del file del database su quella macchina.

    Non dovresti cambiare nient'altro, sia a livello di "logica" del programma, sia a livello di componenti, nulla di nulla.

    In sostanza, devi solo fare uso del client vero e proprio di FireBird, non Embedded, per andare su un server invece di aprire un file in locale.

    Originariamente inviato da vicky
    Sparo: non potrebbe invece trattarsi di un problema di "permessi" di lettura da un computer all'altro?
    Può darsi, però non rischierei comunque se la mole di dati da trasferire è ingente.

    Vista l'esiguità delle modifiche, considerando gli enormi vantaggi che ci sono, io installerei FireBird Server, metterei il file del database su quella macchina e, sulle singole macchine, installando il client, farei accedere l'applicazione a quel DB modificandola così come indicato sopra.

    Cerca in questo forum, perché ne abbiamo parlato in modo più approfondito.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Dovresti installare FireBird SuperServer... e modificare il percorso del database affinchè contenga il nome del server a cui collegarsi e il percorso del file del database su quella macchina.
    Dov'è che devo modificare il percorso del database? Nel codice del programma il percorso è:
    codice:
    DBPath := ExtractFilePath(Application.ExeName) + 'DB\db1.fdb';
    Devo forse agire a livello della registrazione del database con IBExpert ?

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da vicky
    Dov'è che devo modificare il percorso del database? Nel codice del programma il percorso è:
    codice:
    DBPath := ExtractFilePath(Application.ExeName) + 'DB\db1.fdb';
    Il percorso deve essere espresso in questo modo:
    codice:
    NOMESERVER:PERCORSODB
    dove NOMESERVER designa l'indirizzo IP o il nome della macchina su cui risiede il file GDB/FDB a cui collegarsi, mentre PERCORSODB rappresenta il percorso del file GDB/FDB sul server stesso.

    Ovviamente, sulla macchina server deve essere installato e in esecuzione FireBird SuperServer.

    Originariamente inviato da vicky
    Devo forse agire a livello della registrazione del database con IBExpert ?
    No, le informazioni di registrazione presenti in IB Expert sono solo scorciatoie utili al solo tool di manipolazione dei database: non hanno alcuna relazione, attinenza o influenza con il mondo esterno, cioè non devi registrare un DB su IB Expert per poterlo vedere in Delphi, non c'entra nulla.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Ho provato a scrivere così:
    codice:
    DBPath:='Portatilevicky:'+ ExtractFilePath(Application.ExeName) + 'DB\bzpd.fdb';
    E' giusto? Perché il computer in cui tento l'apertura del programma mi dice che non riconosce l'host PortatileVicky come appartenente al dominio. Potrei postare anche tutto il messaggio di errore se fosse necessario.

  10. #10
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da vicky
    Ho provato a scrivere così:
    codice:
    DBPath:='Portatilevicky:'+ ExtractFilePath(Application.ExeName) + 'DB\bzpd.fdb';
    E' giusto? Perché il computer in cui tento l'apertura del programma mi dice che non riconosce l'host PortatileVicky come appartenente al dominio. Potrei postare anche tutto il messaggio di errore se fosse necessario.
    PortatileVicky è il nome della macchina su cui sta girando il server di FireBird?
    La macchina deve essere ovviamente attiva e raggiungibile, altrimenti non è possibile stabilire la connessione. Per quanto riguarda, invece, il percorso del DB, nella maggior parte dei casi sarà fisso o comunque non determinato dal percorso dell'applicazione poiché quando la connessione avverrà su un altro PC che non è quello corrente, usare come riferimento il percorso dell'applicazione è inutile, visto che occorre indicare il percorso del file del DB sulla macchina a cui ci si collega. Al massimo, se si vuole parametrizzare in qualche modo l'impostazione, si potrà mettere in un file INI esterno o qualcosa del genere per poterlo caricare e usare, ma anche modificare con semplicità.

    Ricordati che non puoi usare fbembed.dll: quella è la libreria che simula il server, è il server "embedded"; devi usare fbclient.dll oppure gds32.dll, due librerie che ottieni installando FireBird Server sulla tua macchina (selezionando solo i componenti client). Queste librerie sono quelle che materialmente possono dialogare con un server FB che può risiedere nella stessa macchina che usi o in una macchina differente.

    Il nome della libreria va indicato nella proprietà VendorLib del componente SQLConnection.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.