Thread View: pl.comp.lang.vbasic
2 messages
2 total messages
Started by JacekD
Sun, 15 May 2011 19:10
problem z zapisem DataSet-u w bazie
Author: JacekD
Date: Sun, 15 May 2011 19:10
Date: Sun, 15 May 2011 19:10
46 lines
2849 bytes
2849 bytes
Witajcie,
Zaznaczam, że googlałem i szukałem na MSDN-ie, ale jakoś nie natrafiłem na
rozwiązanie mojego problemu. A więc opisuję, o co chodzi:
Mam aplikację, która sprawdza plik tekstowy i wyszukuje w nim błędy. Struktura
każdego rekordu jest identyczna. Stworzyłem klasę clLinia, której metody
szatkują linie z pliku na poszczególne pola, a następnie badają zawartość pól wg
jakiś tam reguł poprawności. Jeśli w jakimś polu wykryję błąd, to tworzę nową
instancję klasy clBlad, która ma za zadanie zapisać w bazie danych rekord z
parametrami znalezionego błędu.
Robię to następującym kodem:
przy starcie aplikacji tworzę dla zdefiniowanego wcześniej połączenia DataSet
(dsZIFC) i wypełniam go zawartością tablicy rejestr_bledow:
If myConnection.State <> ConnectionState.Open Then
myConnection.Open()
oledbAdapter = New OleDbDataAdapter(strSQL, myConnection)
oledbAdapter.Fill(dsZIFC, "rejestr_bledow")
oledbAdapter.Dispose()
End If
W klasie clBlad mam metodę add_blad, która wygląda mniej więcej tak:
Dim tbRejestrBledow As DataTable
Dim rwRekord As DataRow
tbRejestrBledow = dsZIFC.Tables("rejestr_bledow")
rwRekord = tbRejestrBledow.NewRow
rwRekord("id_importu") = _id_importu
rwRekord("id_wiersza") = _id_wiersza
rwRekord("id_bledu") = _id_bledu
rwRekord("id_pola") = _id_pola
rwRekord("opis_bledu") = _opis
rwRekord("wartosc") = _wartosc
tbRejestrBledow.Rows.Add(rwRekord)
dsZIFC.AcceptChanges()
I mimo użycia metody AcceptChanges dla DataSet-u, nie mam zapisów w bazie
danych. Czy ktoś z szanownych kolegów jest mi w stanie łopatologicznie
powiedzieć, co robię źle?
Z góry dzięki
Jacek
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Re: problem z zapisem DataSet-u w bazie
Author: ktos
Date: Mon, 16 May 2011 11:33
Date: Mon, 16 May 2011 11:33
32 lines
2086 bytes
2086 bytes
W dniu 2011-05-15 21:10, JacekD pisze:
> Witajcie,
>
> Zaznaczam, że googlałem i szukałem na MSDN-ie, ale jakoś nie natrafiłem na
> rozwiązanie mojego problemu. A więc opisuję, o co chodzi:
> rwRekord("wartosc") = _wartosc
> tbRejestrBledow.Rows.Add(rwRekord)
> dsZIFC.AcceptChanges()
>
> I mimo użycia metody AcceptChanges dla DataSet-u, nie mam zapisów w bazie
> danych. Czy ktoś z szanownych kolegów jest mi w stanie łopatologicznie
> powiedzieć, co robię źle?
>
> Z góry dzięki
> Jacek
>
wpisujesz w google: dataset acceptchanges
i drugi link:
http://social.msdn.microsoft.com/Forums/en/adodotnetdataset/thread/71a3d1e1-2588-499d-b603-c5c643f6fe50
wyjaśnia twój problem:
AcceptChanges only updates your rows in the (in memory) dataset, that is
- marks them as "not needed for actual database update". If you want to
update your rows to the database, call your tableadapter's Update
method................
A lot of people use AcceptChanges and wonder why their database was not
updated. you should not call accept changes ....
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads