DataGridView i wiele tabel

0

Witam,
Mam pytanie dotyczące komponentu DGV. Zauważyłem, że istnieje możliwość załadowania kontrolki z dwóch powiązanych tabel, jednak mam problem z dataAdapter.Update. Korzystałem do tej pory z SqlCommandBuilder. Niestety przy większej ilości powiązanych tabel W DGV nie mogę za jego pomocą wygenerować polecenia niezbędnego do aktualizacji źródła danych. Czy istnieje jakiś prosty sposób, aby dokonać update'a w takim właśnie przypadku?

0

Napisz własne polecenia Update. W przypadku łączenia wielu tabel z sobą automatyczne rozwiązania (SqlCommandBuilder) nie zdają egzaminu.

0

Dziękuję za szybką odpowiedź. Chciałbym zapytać czy do swojego update'a mogę jakoś wykorzystać dataAdapter, czy należy to zrobić w sposób standardowy, tzn. przelecieć pętlą wszystkie wiersze w tabeli i zastosować zwykłe zapytanie, które zaktualizuje mi konkretne wiersze w tabelach.
Ewentualnie, jeżeli jest jakiś efektywny sposób - mógłbym prosić o kilka linijek przykładowego kodu?

0

Żadnych pętli nie potrzeba :)

            SqlDataAdapter da = new SqlDataAdapter();
            da.UpdateCommand = /*polecenie uaktualnienia */

Dużo informacji i co najważniejsze przykładowy kod Update znajdziesz tu:
http://msdn.microsoft.com/en-[...]ataadapter.updatecommand.aspx

Pozdrawiam.

0

Dziękuję.
Jednak nie wiem czy nie obędzie się bez pętli. Otóż przy zmianach wprowadzonych w jednym wierszu, update aktualizuje mi wszystkie wiersze w danej kolumnie jedną i tą samą wartością. Warunek z update nie zmienia się niestety dla poszczególnych wierszy.

            SqlConnection conn = new SqlConnection(strCon);
            conn.Open();

            cmd = new SqlCommand(
                "UPDATE Programy SET skrot = @skrot WHERE id = @id; "+
                "UPDATE Linki SET link = @link, opis = @opis WHERE id_programu = @id", conn);

            cmd.Parameters.Add("@skrot", SqlDbType.NVarChar, 0, "skrot");
            cmd.Parameters.Add("@id", SqlDbType.Int, 0, "id");
            cmd.Parameters.Add("@link", SqlDbType.NVarChar, 0, "link");
            cmd.Parameters.Add("@opis", SqlDbType.NText, 0, "opis");

            dataAdapter.UpdateCommand = cmd;

            dataAdapter.Update(ds);
0

urucho sobie profilera i zobacz jakie zapytania leca do serwera
lub ustaw sie debugiem na dataAdapter.Update(ds); i zobacz jakie wartosci maja poszczegolne parametry, tylko nie jestem pewien czy w tym momencie juz sie podstawiaja

0

Dzięki, rzeczywiście chodziło o niedoprecyzowane zapytanie SQL :)

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