Zmiana wskazania lokalizacji bazy Access podczas uruchomienia programu.

Odpowiedz Nowy wątek
2014-12-28 18:38
0

Witam,
Mam prostą formatkę z DataGridView, która wyświetla dane z tabeli bazy Access.

Po dodaniu DataSource VS2012 sam wygenerował takie komponenty jak:
bazaDataSet, bazaBindingSource, bazaTableAdapter.
Utworzył też bazaDataSet (xsd), a w nim bazaTableAdapter.

Potrzebuję, aby podczas uruchomienia, program korzystał z bazy w innej lokalizacji np c:\baza.mdb (baza tak samo się nazywa i ma taką samą strukturę).
Umieściłem w Form1_Load:

this.bazaTableAdapter.Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\baza.mdb; User Id=; Password=";  

ale tak nie działa.

Jak podłączyć identyczną bazę danych, ale będącą w innym miejscu? Zależy mi na zachowaniu ww komponentów.
Jakie polecenia wpisać w Form1_Load, aby ww komponenty działały z nową bazą danych?
P.S.
W Delphi definiowało się to w jednym komponencie, z którego korzystały inne.


"Czego krzyczysz... co noga? A tamtemu głowę urwało i nie krzyczy, a ty o takie głupstwo." - JP

Pozostało 580 znaków

2014-12-28 21:45

Nie mam pod ręką Visuala ale czuję że problemem jest stan połączenia. W momencie zdarzenia Load obiekt TableAdapter działa na już otwartym połączeniu. Więc zmiana ConnectionString jest olewana. Sprawdź czy kod w, którym podstawiasz pod właściwość Connection świeże połączenie z bazą zadziała (pamiętaj o zamknięciu starego).


szogun

Pozostało 580 znaków

2014-12-28 23:07
0

Zrobiłem:

            this.bazaTableAdapter.Connection.Close();
            this.bazaTableAdapter.Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\baza.mdb; User Id=; Password=";
            this.bazaTableAdapter.Connection.Open();

i to samo, a jak zrobiłem

            this.bazaTableAdapter.Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\baza.mdb; User Id=; Password=";
            this.bazaTableAdapter.Connection.Close();

to DataGridView też wyświetla dane.
Ścieżka do bazy siedzi jeszcze w settings.settings i settings.designer.cs ...

W załączeniu programik w VS2012 z bazką Access.
:-|


"Czego krzyczysz... co noga? A tamtemu głowę urwało i nie krzyczy, a ty o takie głupstwo." - JP
edytowany 1x, ostatnio: mimirus, 2014-12-28 23:28

Pozostało 580 znaków

2014-12-28 23:42
0

Dzięki Szogun, zadziałało po ponownym Fill:

        private void Form1_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the bazaDataSet.Tabela' table. You can move, or remove it, as needed.
            this.bazaTableAdapter.Fill(this.bazaDataSet.BAZA);
 
            this.bazaTableAdapter.Connection.Close();
            this.bazaTableAdapter.Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\baza.mdb; User Id=; Password=";
            this.bazaTableAdapter.Fill(this.alert1DataSet.Tabela);
            this.bazaTableAdapter.Connection.Open();

Supcio
:-)


"Czego krzyczysz... co noga? A tamtemu głowę urwało i nie krzyczy, a ty o takie głupstwo." - JP

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0