11/01/2023 - fabio1974it ha scritto:
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.
Perfetto.
11/01/2023 - fabio1974it ha scritto:
Adesso che ho un po di esperienza in più, vorrei non dover avere un modello, ma creare un file da zero.
Scusa, ma qual è la differenza rispetto all'avere un file che parte da zero come modello?
11/01/2023 - fabio1974it ha scritto:
L'applicazione che sto facendo subisce delle modifiche in base alle esigenze e mi capita di dover fare delle tabelle diverse.
Come ho scritto nella mia risposta precedente, non è indispensabile che il “database modello” contenga già delle tabelle: quelle le puoi creare a runtime con zero sforzo. E' il file di database vuoto in sé il reale problema, ma ti basta usare un database vuoto come modello di partenza e il gioco è fatto.
11/01/2023 - fabio1974it ha scritto:
Non so se è meglio, ma volevo provare.
NON è senz'altro meglio, in quanto
- devi basarti su una dipendenza aggiuntiva,
- devi scrivere il codice necessario,
- non comporta alcun vantaggio evidente.
11/01/2023 - fabio1974it ha scritto:
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.
Per forza: come detto sopra, stai usando un oggetto “estraneo” al mondo .NET (DAO) per creare un database, operazione che peraltro - come dice la documentazione stessa - apre il database, ed è quindi normale che tu non possa intervenire con modifiche a un database creato e aperto in esclusiva. E' necessario chiudere il database prima di procedere (vedi l'apposito metodo, che tu non invochi).
Questo si porta dietro tante possibili problematiche: DAO deve essere presente, così come il driver per Access, la versione deve essere quella in uso sulla tua macchina, ecc. e il tutto per non creare banalmente la copia di un database vuoto su disco, operazione che potresti eseguire nativamente usando solo .NET senza bisogno di riferimenti esterni e obsoleti.
11/01/2023 - fabio1974it ha scritto:
Ho controllato lo stato della connessione, ma risulta chiusa
Stai controllando lo stato della connessione al database usando un oggetto diverso da quello che effettivamente sta aprendo la connessione.
Come detto sopra, c'è una commistione di due librerie, DAO (legacy) e ADO.NET, che agiscono su un database che viene creato ma non chiuso per eseguire nel modo più complesso una operazione che sarebbe banale, meno “error prone”, decisamente più rapida e anche portabile.
Contento tu! :)