Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Delphi 2007] Connessione a database access

    Salve a tutti,
    sono novizio nel delphi e sto muovendo ora i primi passi, quindi non bastonatomi subito

    Devo affrontare una connessione ad un database Access, usando come driver Microsoft.Jet.OLEDB.4.0.

    Dunque le operazione che eseguo sono queste:

    1. Creo una TADOConnection ed imposto il percorso del database, i driver, e setto "connected = true"

    2. Creo una TADOTable, a Linkage > Connection imposto la mia TADOConnection ed imposto la tabella da visualizzare del mio database aggiungendo anche i campi che voglio visualizzare

    3. Credo un TDatasource dove imposto come Dataset la mia TADOTable

    4. Creo una TDbGrid, imposto come datasource il mio TDatasource e aggiungo le varie colonne

    Ecco, adesso se eseguo il programma mi da su "Application.Run;" il seguente errore:

    "Operazione non consentita nel contesto corrente".

    Se però elimino la TADOConnection dal form allora parte e va tutto bene. Da cosa dipende ? ieri sera ci sono riuscito, poi per un crash di winzoz ho perso tutto, ma non riesco a capire dove ho sbagliato.

    Rimango in attessa di una vostra risposta e vi ringrazio in anticipo per la disponibilità,
    Neptune.
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  2. #2
    Un'altra domanda, per gli oggetti TADO delphi cosa fa? richiama il framework?

    Ad ogni modo, per un oggetto x che mi utilizzi le funzioni del framework, alla compilazione del programma tali funzioni vengono compilate dentro? su un computer senza framework installato questo programma funzionerà?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  3. #3
    Un'altra domanda, per gli oggetti TADO delphi cosa fa? richiama il framework?
    Parli del .NET Framework?

    Perché dovrebbe? La tecnologia ADO è precedente al .NET, infatti esiste sia ADO sia ADO.NET.

  4. #4
    Originariamente inviato da pallinopinco
    Parli del .NET Framework?

    Perché dovrebbe? La tecnologia ADO è precedente al .NET, infatti esiste sia ADO sia ADO.NET.
    Le varie funzioni TADO quindi non fanno parte del .net?

    Io ho il compilatore della borland 2007 for win32, ci sono funzioni che dipendono dal framework? e se ci sono compilano tutto dentro o sulla macchina finale dovrò avere il framework installato?

    Sarebbe spiacevole provare un programma su una macchina virtuale ora e vedere che va senza framework, poi ne faccio uno più complesso per un cliente, non mi preoccupo di installargli il framework e non mi parte o mi da errore
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Io verificherei che la proprietà Connected del componente che implementa la connessione sia impostato a False prima di lanciare l'applicazione, e farei in modo di aprirla a runtime tramite codice, nel momento in cui viene creato il rispettivo "contenitore" del componente.

    Non vorrei che il problema fosse dovuto all'accesso simultaneo ad una risorsa di cui forse si nega la condivisione (il file database di Access).

    ADO è comunque un'architettura/piattaforma nativa, quindi del tutto slegata dal .NET Framework, il quale include semplicemente classi che consentono di colloquiare con tale piattaforma.

    Quando compili l'applicazione, includi nell'eseguibile (se non fai uso dei runtime package) il codice dei componenti ADO, ma le librerie che implementano ADO in quanto tale provengono dal pacchetto MDAC di Microsoft, sono esterne e così rimangono; tant'è che è consigliabile assicurarsi che MDAC sia installato sul PC in cui verrà eseguita l'applicazione.

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

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

  6. #6
    Originariamente inviato da alka
    Io verificherei che la proprietà Connected del componente che implementa la connessione sia impostato a False prima di lanciare l'applicazione, e farei in modo di aprirla a runtime tramite codice, nel momento in cui viene creato il rispettivo "contenitore" del componente.

    Non vorrei che il problema fosse dovuto all'accesso simultaneo ad una risorsa di cui forse si nega la condivisione (il file database di Access).

    ADO è comunque un'architettura/piattaforma nativa, quindi del tutto slegata dal .NET Framework, il quale include semplicemente classi che consentono di colloquiare con tale piattaforma.

    Quando compili l'applicazione, includi nell'eseguibile (se non fai uso dei runtime package) il codice dei componenti ADO, ma le librerie che implementano ADO in quanto tale provengono dal pacchetto MDAC di Microsoft, sono esterne e così rimangono; tant'è che è consigliabile assicurarsi che MDAC sia installato sul PC in cui verrà eseguita l'applicazione.

    Ciao!
    Allora ho risolto: praticamente quando mettevo su "active = true" l'ADOTable, mi veniva cambiato automaticamente il parametro "mode" dell'ADOConnection. Mi veniva impostato su "cmsharedenynone" che non era stato settato tra i parametri possibili della connessione ed ovviamente si bloccava.

    Un'altra domanda, io carico tutti i dati ottenuti su un TDBGrid, per rendere attive le modifiche dei dati modificati ho un pulsante che cliccato avvia la seguente funzione

    codice:
    ADOTable1.UpdateBatch();
    C'è un modo per far si che l'update del database avvenga in tempo reale senza dover cliccare un tasto? e come faccio per far apparire la classica riga vuota sotto per aggiungere un'altro campo? ho notato che devo cliccare tab e scorrermi tutto per far apparire la riga nuova
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

  7. #7
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    Originariamente inviato da Neptune
    Un'altra domanda, io carico tutti i dati ottenuti su un TDBGrid, per rendere attive le modifiche dei dati modificati ho un pulsante che cliccato avvia la seguente funzione [...]
    Non dovrebbe essere necessario: ogni Post salva le modifiche sul database, a meno che non hai abilitato gli aggiornamenti in modalità batch (fai riferimento anche alla Guida in linea).

    Originariamente inviato da Neptune
    e come faccio per far apparire la classica riga vuota sotto per aggiungere un'altro campo? ho notato che devo cliccare tab e scorrermi tutto per far apparire la riga nuova
    Usa il controllo TDBNavigator.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  8. #8
    Originariamente inviato da alka
    Non dovrebbe essere necessario: ogni Post salva le modifiche sul database, a meno che non hai abilitato gli aggiornamenti in modalità batch (fai riferimento anche alla Guida in linea).


    Usa il controllo TDBNavigator.

    TDBNavigator è la fine del mondo. Con questo presente non c'è bisogno di fare nessun salvataggio, fa tutto lui. Senza di questo però non salve nisba, dove devo controllare se gli aggiornamenti in modalità batch sono attivi?
    "Estremamente originale e fantasioso" By darkiko;
    "allora sfiga crepuscolare mi sa che e' meglio di atmosfera serale" By NyXo;
    "per favore, già è difficile con lui" By fcaldera;
    "se lo apri te e invece di "amore" ci metti "lavoro", l'effetto è lo stesso" By fred84

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.