Cambio DataBase da codice - Visual Basic Tips and Tricks - Forum - .NET Framework - Accesso Dati
Questo sito utilizza cookie tecnici e di terze parti. Continuando la navigazione sul nostro sito accetti l'uso dei cookie. Per saperne di più leggi l'informativa sui cookie.   


Cambio DataBase da codice
Ultimo messaggio: 27 feb 2018 08:05 di Giorgio Brausi. 15 Risposte.
Stampa gradevole
Solo gli utenti registrati possono rispondere ad una discussione.
Avatar
Nippur
Messaggi: 107
Iscritto dal: 30 apr 2012 09:11
Socio
Socio

21 feb 2018 23:28

Ciao,

come ho scritto nel sommario, ho fatto un programma per la visualizzazione dei dati in un Db, la difficoltà mia e che ho la necessita di cambiare Archivio, e purtroppo malgrado le mie prove non mi da errore, ma mi visualizza sempre il primo database che carico.

Posto il codice:

Public Class Form1



  Private dbCon As OleDb.OleDbConnection

  Private dbCmd As OleDb.OleDbCommand

  Private dbAdp As OleDb.OleDbDataAdapter

  Private Data As New DataSet

  Public Sub SqlSelect(ByVal SQL As String)

     dbCmd.CommandText = String.Format(SQL)

     dbAdp.SelectCommand = dbCmd

     Data.Clear()

     dbAdp.Fill(Data)

     DGVPerTutti.DataSource = Data.Tables(0)

   End Sub

   Private Sub BttStart_Click(sender As Object, e As EventArgs) Handles BttStart.Click



      Dim Database As String = Application.StartupPath & "\Dati\Archivio.dat"

      dbCon = New OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;DataSource="  & Database & ";Persist Security Info=True;Jet OLEDBatabase Password=Mettere")

       dbCon.Open()

       dbAdp = New OleDb.OleDbDataAdapter("SELECT * FROM Titolo", dbCon)

       Data.Clear()

       dbAdp.Fill(Data)

       dbCmd = New OleDb.OleDbCommand()

       dbCmd.Connection = dbCon

       Dim Table As DataTable = Data.Tables(0)

       DGVPerTutti.DataSource = Table

       DGVPerTutti.AutoResizeColumns()

       Me.SqlSelect("SELECT * FROM Titolo ORDER BY Data") 'Aggiorno la visualizzazione

   End Sub

End Class

 

Il codice sopra esposto funziona da dio, ma se io voglio cambiare il database, da Archivio ad DoppioArchivio, io non ci sono riuscito.

Qualcuno ha dei suggerimenti???

Grazie in Anticipo

 

 

    Avatar
    Diego Cattaruzza [exMVP]
    Messaggi: 7197
    Iscritto dal: 08 set 2012 11:22
    Team
    Team

    22 feb 2018 10:37

    in base a cosa il codice dovrebbe sapere che vuoi cambiare il database?

    (e questo tralasciando che hai sbagliato il percorso del file, poiché non si mettono file di dati nel percorso dell'applicazione)

     

      Diego Cattaruzza
      ex MVP Visual Basic .Net
      blog: Uncensured
      Avatar
      Nippur
      Messaggi: 107
      Iscritto dal: 30 apr 2012 09:11
      Socio
      Socio

      22 feb 2018 14:39

      Ciao,

      Scusa, ho creato un secondo tasto, che cambia il db. Il problema, magari mi sono espresso male io prima, è che la DataGridView mi mostra i dati, dove le colonne hanno la stessa intestazione li sostituisce, (almeno sembra.. devo verificare che non li mischi.. essendo date..) dove le colonne sono diverse, le aggiunge, lasciando vuote quelle del precedente archivio.io come si può notare ho messo 2 comandi per DGV.. ma che non funzionano.. forse è li che sbaglio??

       Private Sub BttStart2_Click(sender As Object, e As EventArgs) Handles BttStart2.Click

          DGVPerTutti.DataSource = ""

             DGVPerTutti.Columns.Clear()



             Dim Database As String = Application.StartupPath & "\Dati\Archivio2.dat"



             dbCon = New OleDb.OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;DataSource="  & Database & ";Persist Security Info=True;Jet OLEDBatabase Password=Mettere")



             dbCon.Open()



             dbAdp = New OleDb.OleDbDataAdapter("SELECT * FROM Titolo2", dbCon)



             Data.Clear()



             dbAdp.Fill(Data)



             dbCmd = New OleDb.OleDbCommand()



             dbCmd.Connection = dbCon



             Dim Table As DataTable = Data.Tables(0)



             DGVPerTutti.DataSource = Table



             DGVPerTutti.AutoResizeColumns()



             Me.SqlSelect("SELECT * FROM Titolo2 ORDER BY Data") 'Aggiorno la visualizzazione



         End Sub

       

       

        Avatar
        Nippur
        Messaggi: 107
        Iscritto dal: 30 apr 2012 09:11
        Socio
        Socio

        22 feb 2018 14:40

        dimenticavo, la scelta della posizione del DGV è solo momentanea :-)

         

          Avatar
          Nippur
          Messaggi: 107
          Iscritto dal: 30 apr 2012 09:11
          Socio
          Socio

          22 feb 2018 16:10

          ho fatto delle prove ulteriori, nel secondo tasto ho messo questi comandi:

              DGVPerTutti.DataBindings.Clear()

            DGVPerTutti.DataSource = Nothing

            DGVPerTutti.DataMember = Nothing

             DGVPerTutti.Rows.Clear()

             DGVPerTutti.Columns.Clear()

             DGVPerTutti.Refresh()

          Ma ovviamente nulla è cambiato :-(

           

            Avatar
            Nippur
            Messaggi: 107
            Iscritto dal: 30 apr 2012 09:11
            Socio
            Socio

            23 feb 2018 09:55
            nessuno ha idee???
              Avatar
              Giorgio Brausi
              Messaggi: 5907
              Iscritto dal: 29 apr 2012 23:52
              Utente
              Utente

              23 feb 2018 13:38
              Inviato da Nippur su 23 feb 2018 10:55
              nessuno ha idee???

              L'istruzione

              Dim Database As String = Application.StartupPath & "\Dati\Archivio2.dat"
              a quale percorso corrisponde?
              Cioè, quale valore contiene la variabile Database ?

              Perché l'estensione è .dat se tu stai aprendo un file di Access?


                Giorgio Brausi (aka gibra)
                DNA Codebook 2001
                VB.NET Command+Parametri ADO.NET
                Office Automation in NET: VS2010 - Early-Late Binding: con Excel - con Word
                VB6: Command+Parametri
                Office Automation in VB6: Early-Late Binding: con Excel - con Outlook
                VS/VB 6.0 Installer wizard v5.0 29/10/2017: install VS6/VB6 (Ent/Pro) on Windows 2000/XP/Vista/7/8/10 (32/64 bit)
                See YouTube video
                Avatar
                Nippur
                Messaggi: 107
                Iscritto dal: 30 apr 2012 09:11
                Socio
                Socio

                23 feb 2018 18:51

                Si il db è un db di acces, l'estensione non fa differenza, io li chiamo dat, ma potrei chiamarli dbf, non cambia il risultato.

                il percorso è quello dell'applicazione, entrambi i db sono li, sono così composti,

                Archivio:

                Data, Posizione, Q.ta

                Archivio2:

                Data, Valore,Differenza

                Quando esegui il primo tasto, DGVpertutti mi visualizza correttamente Data, Posizione, Q.tà,

                poi se clicco il secondo tasto, mi visualizza: Data, Posizione, Q.tà, Valore, Differenza ...

                il campo data ho controllato, contiene le date del 2° archivio, le colonne Posizione e Q.tà sono vuote, ma ci sono.. ecco non vorrei caricarle!!

                Non capisco come resettare completamente la DataGridView, ho letto di tutto e provato tanto.. ma niente!! 

                  Avatar
                  Giorgio Brausi
                  Messaggi: 5907
                  Iscritto dal: 29 apr 2012 23:52
                  Utente
                  Utente

                  23 feb 2018 20:06
                  1°. Certo che puoi usare l'estensione che ti pare, ma è sbagliato.

                  2°. Tu vuoi essere aiutato o no?
                  Ti ho fatto una semplice domanda. Non hai risposto.

                  E' inutile che chiedi se qualcuno ha idee, se poi scrivi/rispondi quello che ti pare.





                   
                    Giorgio Brausi (aka gibra)
                    DNA Codebook 2001
                    VB.NET Command+Parametri ADO.NET
                    Office Automation in NET: VS2010 - Early-Late Binding: con Excel - con Word
                    VB6: Command+Parametri
                    Office Automation in VB6: Early-Late Binding: con Excel - con Outlook
                    VS/VB 6.0 Installer wizard v5.0 29/10/2017: install VS6/VB6 (Ent/Pro) on Windows 2000/XP/Vista/7/8/10 (32/64 bit)
                    See YouTube video
                    Avatar
                    Nippur
                    Messaggi: 107
                    Iscritto dal: 30 apr 2012 09:11
                    Socio
                    Socio

                    23 feb 2018 21:28

                    rispondo in ordine,

                    si so che è sbagliato, ma visto che non fa differenza il nome, ho dato estensione dat  da dati.. , ma posso cambiarla se è quello che da l'errore.

                    la variabile Database contiene il percorso completoed il nome del db,nel formato c:\provadb\bin\Debug\Dati\Archivio.dat il primo, c:\provadb\bin\Debug\Dati\Archivio2.dat  il secondo, a me comunque sembra che il problema non sia nel percorso, visto che li carica correttamente .. se caricati singolarmente.

                    Certo che voglio essere aiutato, se no non scrivevo .. scusate se ho dato un'impressione diversa ...

                    aggiungo, se può essere utile alla soluzione, o meglio, a capire il problema, che se io avvio prima Archivio2 (tasto2), funziona perfettamente, poi come detto, se io clicco il tasto uno, vedo l'archivio (l'altro), ma con le colonne del precedente vuote quindi i dati ci sono, ed anche corretti, ma ho le colonne dell'altro archivio vuote..  .

                    Praticamente mi vengono visualizzate le colonne vuote dell'archivio precedentemente caricato.

                    Ho letto in un altro forum, un problema simile, dicevano di cancellare Fill(data), ma non ho capito come cancellarlo dalla datagridview, perché secondo me con

                       DGVPerTutti.DataBindings.Clear()

                      DGVPerTutti.DataSource = Nothing

                      DGVPerTutti.DataMember = Nothing

                       DGVPerTutti.Rows.Clear()

                       DGVPerTutti.Columns.Clear()

                       DGVPerTutti.Refresh()

                    avrei dovuto cancellare totalmente la datagridview, ma presumo non sia così.

                    spero di essermi espresso bene, e di aver risposto alle domande.. se dimentico qualcosa non è per scarsa collaborazione.. anzi .. grazie a chi prova a darmi una mano

                      Avatar
                      Giorgio Brausi
                      Messaggi: 5907
                      Iscritto dal: 29 apr 2012 23:52
                      Utente
                      Utente

                      23 feb 2018 22:33
                      Dunque, se non sbaglio, mi pare di capire che hai usato il Wizard per collegare il database?

                      Se così, verifica nella finestra Proprietà del file di database come è impostata l'opzione Copia nella cartella di output...

                      A parte questo, sarebbe utile se tu potessi condividere un progetto di test (zippato) che riproduca il problema.

                      Magari, prima, puoi dare un'occhiata a questa procedura:
                      https://docs.microsoft.com/it-it/dotnet/framework/winforms/controls/how-to-bind-data-to-the-windows-forms-datagridview-control


                        Giorgio Brausi (aka gibra)
                        DNA Codebook 2001
                        VB.NET Command+Parametri ADO.NET
                        Office Automation in NET: VS2010 - Early-Late Binding: con Excel - con Word
                        VB6: Command+Parametri
                        Office Automation in VB6: Early-Late Binding: con Excel - con Outlook
                        VS/VB 6.0 Installer wizard v5.0 29/10/2017: install VS6/VB6 (Ent/Pro) on Windows 2000/XP/Vista/7/8/10 (32/64 bit)
                        See YouTube video
                        Avatar
                        Nippur
                        Messaggi: 107
                        Iscritto dal: 30 apr 2012 09:11
                        Socio
                        Socio

                        24 feb 2018 18:33

                        No, io collego il Database da codice,

                        Vorrei allegare il progetto, ma non riesco a farlo.. ho anche messo le note nelle righe di codice.

                        Ho visto la procedura, e simile alla mia.. :-(

                         

                         

                          Avatar
                          Giorgio Brausi
                          Messaggi: 5907
                          Iscritto dal: 29 apr 2012 23:52
                          Utente
                          Utente

                          24 feb 2018 20:36
                          Usa uno dei tanti siti pubblici di condivisione. oppure condividi con DropBox, o altro servizio analogo.
                            Giorgio Brausi (aka gibra)
                            DNA Codebook 2001
                            VB.NET Command+Parametri ADO.NET
                            Office Automation in NET: VS2010 - Early-Late Binding: con Excel - con Word
                            VB6: Command+Parametri
                            Office Automation in VB6: Early-Late Binding: con Excel - con Outlook
                            VS/VB 6.0 Installer wizard v5.0 29/10/2017: install VS6/VB6 (Ent/Pro) on Windows 2000/XP/Vista/7/8/10 (32/64 bit)
                            See YouTube video
                            Avatar
                            Nippur
                            Messaggi: 107
                            Iscritto dal: 30 apr 2012 09:11
                            Socio
                            Socio

                            25 feb 2018 18:31

                            http://www.filedropper.com/provadb

                            da qui si può scaricare il file, ho solo accorciato i db


                              Avatar
                              Nippur
                              Messaggi: 107
                              Iscritto dal: 30 apr 2012 09:11
                              Socio
                              Socio

                              26 feb 2018 15:02
                              idee? suggerimenti?
                                Avatar
                                Giorgio Brausi
                                Messaggi: 5907
                                Iscritto dal: 29 apr 2012 23:52
                                Utente
                                Utente

                                27 feb 2018 08:05
                                Inviato da Nippur su 26 feb 2018 16:02
                                idee? suggerimenti?


                                Non ho ancora avuto modo di esaminarlo.
                                Sono un po' incasinato sul lavoro.
                                  Giorgio Brausi (aka gibra)
                                  DNA Codebook 2001
                                  VB.NET Command+Parametri ADO.NET
                                  Office Automation in NET: VS2010 - Early-Late Binding: con Excel - con Word
                                  VB6: Command+Parametri
                                  Office Automation in VB6: Early-Late Binding: con Excel - con Outlook
                                  VS/VB 6.0 Installer wizard v5.0 29/10/2017: install VS6/VB6 (Ent/Pro) on Windows 2000/XP/Vista/7/8/10 (32/64 bit)
                                  See YouTube video
                                  Solo gli utenti registrati possono rispondere ad una discussione.