Creare un file db.accdb

di il
32 risposte

Creare un file db.accdb

Buongiorno, sto cercando di creare un file database (.accdb) da codice. Riesco a crearlo, ma poi quando cerco di creare al suo interno delle tabelle mi dice che è già occupato. Se poi chiudo l'applicazione e la riavvio il file si sblocca e riesco a crearle. Vi scrivo il codice che uso e grazie in anticipo

 Dim StrComando = ""

Dim LangGeneral As String = ";LANGID=0x0409;CP=1252;COUNTRY=0"
Dim DbNuovo_ As DBEngine = New DBEngine
DbNuovo_.CreateDatabase("c:\pippo.accdb", LangGeneral)  '''''creo il file
DbNuovo_ = Nothing

        If My.Computer.FileSystem.FileExists("c:\pippo.accdb") Then

            Try
                If ConnessioneFileDBn.State = ConnectionState.Open Then
                    ConnessioneFileDBn.Close()
                    ConnessioneFileDBn.Dispose()

                End If

                Me.Refresh()

                ConnessioneFileDBn = New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\pippo.accdb")
                ConnessioneFileDBn.Open()
                StrComando = "CREATE TABLE PARAMETRI 
                                    (Indice TEXT(25),
                                    Future_Moltiplicatore TEXT(50))"
                ComandoDB = New OleDb.OleDbCommand(StrComando, ConnessioneFileDBn)
                ComandoDB.ExecuteNonQuery()
                ComandoDB.Dispose()
                ConnessioneFileDBn.closed
            Catch ex As Exception
                MsgBox(ex.Message)
                Me.Close()
            End Try
         end if

32 Risposte

  • Re: Creare un file db.accdb

    Non riesco ad immaginare in quali circostanze può avere senso la creazione di un database a run-time. Il sospetto, derivante anche da un rapido sguardo al tuo codice, è che tu intenda usare un database in modo improprio, come se fosse un banale file di dati molto… vintage.

    Sarebbe utile qualche informazione di contesto in più.

    Ciao.

  • Re: Creare un file db.accdb

    Concordo. Il DB va creato una volta con gli strumenti propri e distribuito col programma. 

  • Re: Creare un file db.accdb

    10/01/2023 - grumpy ha scritto:


    Non riesco ad immaginare in quali circostanze può avere senso la creazione di un database a run-time. Il sospetto, derivante anche da un rapido sguardo al tuo codice, è che tu intenda usare un database in modo improprio, come se fosse un banale file di dati molto… vintage.

    Sarebbe utile qualche informazione di contesto in più.

    Ciao.

    Si in effetti è un datab. che funziona anche da archivio e mi è comodo avere gia i dati in determinate colonne. Solo che ogni applicativo deve puntare a un solo file e ogni file ha un nome diverso. Se il file non esiste perchè è la prima volta che fa il collegamento, lo crea. Attualmente ho un file base che copio e rinomino, ma è una cosa veramente brutta. Mi sembrava un modo comodo per conservare e modificare dei dati

  • Re: Creare un file db.accdb

    Scusa ma non ho capito niente della tua replica. Per esempio che vuol dire 

     in effetti è un datab. che funziona anche da archivio
  • Re: Creare un file db.accdb

    Se ci salvi dei dati di configurazione, usa un xml

  • Re: Creare un file db.accdb

    Mi spiego meglio. Uso un programma che apro più volte sullo stesso pc, che si collega tramite API e riceve dei dati. Una parte di questi dati li memorizzo e li riutilizzo ogni volta che riapro il programma. Se mi collego ad un nuovo conto, creo un nuovo file che ha come nome lo stesso numero di conto. Ogni volta che lancio il programma  carico dati e salvo dati a seconda delle circostanze. Ogni file ha 10 tabelle e ogni tabella ha una ventina di colonne diverse. In due di queste tabelle arrivo a inserire un migliaio di righe. Ho usato un file del genere per comodità nel gestire i dati. 

  • Re: Creare un file db.accdb

    Si capisce poco, purtroppo è difficile seguirti

  • Re: Creare un file db.accdb

    10/01/2023 - oregon ha scritto:


    Si capisce poco, purtroppo è difficile seguirti

    Comunque non capisco cosa centra il mio programma, vorrei sapere solo come risolvere un problema. Voi state facendo i professori sul mio programma, ma non dite se sapete quale è il problema. 

  • Re: Creare un file db.accdb

    Certo che so qual è il problema, volevo solo darti una mano in più. Evidentemente non la vuoi

  • Re: Creare un file db.accdb

    Io invece non vedo il problema.

    1. distribuisci il tuo programma con un database vuoto, o un database modello con tabelle già pronte, creato usando Access;
    2. se hai bisogno di un nuovo DB partendo da zero o dal modello, crea su disco una nuova copia del medesimo file, che è già pronto;
    3. se devi riutilizzare il database vuoto (o modello) con dati già presenti, il DB ce l'hai già, quindi ti basta agire sulla struttura (usando comandi DDL, tipo DROP TABLE, CREATE TABLE ecc.) e sui dati esistenti in quel DB (usando comandi DML, come INSERT, DELETE, UPDATE, ecc.).

    Così a prima vista non mi pare uno scenario complicato.

    Se lo è, o non coincide con le tue esigenze, spiega il perché.

  • Re: Creare un file db.accdb

    Lui non vuole “professori” ma che il codice che ha presentato, qualsiasi cosa faccia anche se senza senso, funzioni e che qualcuno scriva le correzioni. 

  • Re: Creare un file db.accdb

    11/01/2023 - Alka ha scritto:


    Io invece non vedo il problema.

    1. distribuisci il tuo programma con un database vuoto, o un database modello con tabelle già pronte, creato usando Access;
    2. se hai bisogno di un nuovo DB partendo da zero o dal modello, crea su disco una nuova copia del medesimo file, che è già pronto;
    3. se devi riutilizzare il database vuoto (o modello) con dati già presenti, il DB ce l'hai già, quindi ti basta agire sulla struttura (usando comandi DDL, tipo DROP TABLE, CREATE TABLE ecc.) e sui dati esistenti in quel DB (usando comandi DML, come INSERT, DELETE, UPDATE, ecc.).

    Così a prima vista non mi pare uno scenario complicato.

    Se lo è, o non coincide con le tue esigenze, spiega il perché.

    Ciao, io adesso faccio precisamente quello che hai descritto, ho un file modello vuoto che copio e rinomino, e va bene. Il file modello l'ho messo nelle risorse del programma. Questo l'ho fatto perché non sapevo gestire bene le tabelle e i campi. Adesso che ho un po di esperienza in più, vorrei non dover avere un modello, ma creare un file da zero. L'applicazione che sto facendo subisce delle modifiche in base alle esigenze e mi capita di dover fare delle tabelle diverse. Quindi invece di caricarmi il modello e modificarlo volevo provare a crearlo nuovo. Non so se è meglio, ma volevo provare. Ho usato il comando che sta nel codice, e riesco a crearlo, ma rimane in uno stato che non permette modifiche e quindi non riesco a creare le tabelle. Se poi chiudo il programma e lo riapro le modifiche riesco a farle. Ho controllato lo stato della connessione, ma risulta chiusa

  • Re: Creare un file db.accdb

    11/01/2023 - oregon ha scritto:


    Lui non vuole “professori” ma che il codice che ha presentato, qualsiasi cosa faccia anche se senza senso, funzioni e che qualcuno scriva le correzioni. 

    Io programmo da un paio di anni e mi sono creato un software che mi permette di gestire gli eseguiti che faccio in borsa, mi permette di andare a mercato e di leggere tutte le info che mi servono, non sarò esperto come voi, ma questo forum serve anche per chiedere aiuto a chi ha più esperienza. Il programma non avra funzioni particolari ma svolge egregiamente il suo lavoro, è formato da 10 form e un 8000 righe di codice. E cosa più importante mi fa guadagnare. Ora io ho chiesto aiuto perché non so se sbaglio qualcosa con il comando che ho usato per creare il file, e tu mi hai risposto che non so programmare. Non penso sia lo scopo del forum.

  • Re: Creare un file db.accdb

    Mai risposto che non sai programmare.

    Prima Grumpy, poi io ti abbiamo detto che quella che stai seguendo non è la strada giusta (proprio perché più esperti che danno consigli sul forum, esattamente quello a cui serve).  Ti abbiamo chiesto di spiegarci cosa fai esattamente (richiesta a cui si è unito Alka), sempre per darti la strada migliore, ma tu hai risposto “piccato” contro i “professori”.

    Beh, dato che poi ci guadagni, rivolgiti a dei professionisti a pagamento per risolvere i problemi, anche loro lavoreranno.

Devi accedere o registrarti per scrivere nel forum
32 risposte