Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150

    Gestione Database In Rete Con Il Visual Basic

    Prima cosa un buongiorno a tutti e un grazie anticipato per l'aiuto ke spero mi darete quindi passiamo al mio problema . . .
    Mi è stato commissionato un software ,che scriverò sicuramente in visual basic,per la gestione di un database e fin qui nessun problema ma l'intoppo arriva quando mi viene detto ke tale software dovrà lavorare in rete con altri calcolatori sul quale è installato lo stesso applicativo ed ora mi trovo in alto mare xkè nn so' proprio come risolvere il problema .Inizialmente ho pensato di dare ad ogni singolo applicativo la Path di un database precedentemente locato in una cartella comune a tutti i pc ma poi mi sono cominciati a sorgere i primi dubbi sia sul funzionamento dell'applicativo,non ho mai provato ad aprire un unico db con più applicativi vb ed inoltre se sul mio computer cerco di avviare due volte il prg quest'ultimo mi fornisce un errore dicendomi ke il file è gia aperto,inoltre se pure funzionasse l'idea di condividere il db e dare ai vari applicativi una path comune cosa accadrebbe se due utenti provano a salvare contemporaneamente un record??? vi è perdita di dati??? BOH quindi se c'è qualkuno di voi ke kon molta pazienza mi spiega come risolvere il rpoblema allora saro' molt felice di ringraziarlo altrimenti grazie lo stesso .Per ora un grandissimo

    PS.:Mi accontento anke di un eventuale link dove poter trovare materiale inerente al problema.Cmq ho sempre usato le librerie DAO e quindi vorrei continuare ad usarle a tal proposito non proponetemi di imparare linguaggi del tipo MySQL o roba varia xkè nn ho tempo per farloin quanto studio .arrivederci a tutti . . .
    Carlo Carbone

  2. #2
    Utente di HTML.it L'avatar di JamesD
    Registrato dal
    Oct 2001
    Messaggi
    415
    Operare su una copia del database su presente su ogni computer è impensabile perchè le modifiche che apporta un utente non sarebbero visibili agli altri utenti. Ti consiglio comunque di passare dal DAO all' ADO, che permette la gestione di db tramite internet. Comunque per l'accesso al database di più utenti in contemporanea l'apertura dei recordset tramite ADO ti permette di indicare il tipo di blocco più appropriato. In più se utilizzi le transazioni il rischio di pedita di dati si riduce di molto.

    Ciaoz

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150
    Si ma come si usa ADO ?? questoi è il problema è simile ad DAO o no??? bisogna istallare qualcosa ???? dove posso reperire delle info + dettagliate?????
    Carlo Carbone

  4. #4
    Utente di HTML.it L'avatar di Mychy
    Registrato dal
    Oct 2000
    Messaggi
    794
    Per usare ADO devi far riferimento alla libreria Microsoft ActiveX Data Objects (credo che l'ultima versione sia la 2.6).
    Se cerchi nella guida di visual studio trovi qualcosa.

    Purtroppo riguardo le applicazioni in rete non ti so dire molto.
    L'unica "applicazione" che ho fatto per una rete era fatta totalmente in access, un file mdb (residente nel server) contenente i dati che condividevo con più file mde (uno per ogni computer della rete) i quali contenevano l' interfaccia.
    Ho avuto alcuni problemi riguardo l'aggiornamento contemporaneo dei dati e le stampe contemporanee.
    Per la connessione ai dati ho fatto in modo che dovesse essere configurata alla prima apertura .

  5. #5
    innanzi tutto ti consiglio di passare da DAO ad ADO, che per la gestione di db è più potente e più funzionale, oltre che più comodo per quanto mi riguarda. non ti preoccupare, non è difficile cambiare...
    poi ti dico che io ho fatto un software mutiutente e ho gestito questa multiutenza con i metodi BeginTrans, CommitTrans e RollbackTrans della connessione ADO; io mi sono trovata bene(anche se sebamix -- non è dello stesso parere). in pratica con quei metodi blocchi i dati nel momento in cui un utente inizia un'operazione sui dati. cmq, fatti una ricerchetta anche su questo...



    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    150

    risposta db in rete

    Ok ddevo gestire le transazioni ma la questione è cosa è 1 transazione vorrei sapere solo poke kosa ed ora ti spiego :

    1 connetto il db ,come ho gia fatto,con ADO ok
    2 i pc cominciano a collegarsi ok
    3 due pc vogliono salvare contemporaneamente 1 recod,cosa difficile ma da prevedere, cosa accade si salvano i dati o 1 dei due si perde o ambedue si perdono o si perdono tutti e due??
    4 due pc vogliono modificare lo stesso record cosa accade boh
    mistero
    5 due pc voglio semplicemente scorrere il db o ricercare 1 valore cosa accade ??? cosa accade se le rikieste nn partono in contemporanea ??? cosa avviene se le rikieste partono in contemporanea???boh
    6 Aver gestito il mio prg con ado mi ha gia risolto dei problemi?? se si QUALI???

    ti prego spiegami tu krazie
    Carlo Carbone

  7. #7
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    per gestire la concorrenza degli accessi al DB tra più client puoi usare, o i tipi di blocchi, o le transazioni (sono sicure però anche loro cozzano tra loro).

    I blocchi in pratica bloccano i/l record che stai utilizzando, in differenti momenti, a seconda del tipo di blocco che utilizzi.
    Se il record è bloccato le altre connessioni che tentano di eccedervi lo troveranno bloccato e genereranno un errore (che poi va gestito)!!

    Prova a documentarti su msdn per i blocchi!!

    Questo vale per gli inserimenti aggiornamenti e cancellazioni, se più client fanno contemporaneamente un SELECT non penso ci siano problemi di sorta!


  8. #8
    Oppure invece di settare i "LOCK" dei cursori (che rallentano "notevolmente" il programma) occupando un gran numero di risorse...

    Puoi sempre utilizzare un escamotage <--(non so cosa ho scritto )

    e utilizzi un FILE FITTIZIO che farà da flag!!!

    es:

    2 pc (CLIENT) potrebbero accedere ad un database contemporaneamente
    e quindi alterare il risultato di una query...

    Tu potresti fare in modo che il Client1

    prima di connettersi al database, controlla se in una directory
    CONDIVISA sul server sia presente il file FLAG

    Se il file esiste vuol dire che il Client2 è connesso
    al database...

    quindi

    metti in attesa il Client1 per tot secondi

    e aspetti che il Client2 termini la connessione al database.

    Ovviamente il Client2 appena chiusa la connessione al db
    cancella il file FLAG...

    Così facendo il Client1 (in attesa) dopo tot. secondi
    effettua un nuovo controllo nella cartella condivisa
    e se non trova il file (FLAG)
    (capisce che nessun PC è connesso al database)
    e quindi crea il file FLAG e si connette al DB.

    POI, quando finisce di interrogare il DB, si disconnette
    e cancella il file FLAG

    In questo semplice modo... eviti di effettuare connessioni
    contemporanee e ti assicuro che la routine è molto più veloce.
    ...Terrible warlords, good warlords, and an english song

  9. #9
    Utente di HTML.it L'avatar di Gigi84
    Registrato dal
    May 2001
    Messaggi
    569
    Secondo me (il mio parere è + che modestissimo), non è una bella soluzione..
    nel senso, se ci sono 2 tentativi di connessione per fare 2 select, non nascono problemi, no?!
    Mi sembra un prezzo troppo alto da pagare il fatto che 1 solo utente possa fare un'operazione sul DB.
    Allora, io aggiungerei alle tabelle che sono modificabile dai client, un campo 'disponibile', nel quale, quando un client utilizza quel record esso viene riempito con il proprio nome (o un ID univoco), finita l'operazione resetta il campo; ogni volta che un client deve fare operazioni sui record controlla prima che il campo 'disponibile' sia vuoto, altrimenti si mette in coda e aspetta.
    ..è solo la mia idea, smentitemi pure!
    (io comunque sono propenso ai blocchi)

    Ciao a tutti!

  10. #10
    Orig. Inviato da Gigi84
    Mi sembra un prezzo troppo alto da pagare il fatto che 1 solo utente possa fare un'operazione sul DB
    Immagina di trovarti in una biglietteria
    di una stazione e di dover prenotare un biglietto
    (con prenotazione obbligatoria per un treno eurostar)

    Come tu saprai i posti a sedere sono numerati...

    Ora, se per pura FATALITA' (ma può accadere e quindi va calcolato durante la fase di progettazione del software...)
    2 (o meglio N) clienti in 2 (o N) stazioni differenti stanno prenotando un posto a sedere sullo stesso treno
    e supponiamo che cli operatori FS stiano interrogando CONTEMPORANEAMENTE il database che assegna un posto UNIVICO ad ogni cliente...
    SI RISCHIA di assegnare a più clienti lo stesso posto.

    Quindi, quando si sviluppano questo tipo di applicativi
    è buona norma non rischiare,
    utilizzando:

    1) I LOCK-TYPE (o blocchi) CURSORE

    2) un FLAG (che secondo me e stando anche a quello che dice
    un tizio molto meno modesto di noi, di nome Francesco Balena)
    rende il processo molto più performante.
    ...Terrible warlords, good warlords, and an english song

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 © 2025 vBulletin Solutions, Inc. All rights reserved.