Edycja danych z MS SQL stored produre

0

Witam,
Chciałbym po pobraniu danych z sp wyświetlić je sobie w DBGridzie i edytować, następnie jedną transakcją zapisać w bazie poprzez dopisanie kursorem wiersz po wierszu.
Problem pojawia się na początku działania okienka, dane pobrane są wyświetlane ale nie są edytowalne.
Przy próbie wpisanie tekstu otrzymuję taki komunikat:
Niedostateczna informacja o kolumnie klucza w celu aktualizacji lub odświeżenia

Mój pomysł nieciekawy:
Pobrać dane do tablicy tymczasowej, ustawić dbgrida żeby z niego ciągnął dane a na zakończenie dopisać z tymczasowej w transakcji do tablicy docelowej.

Może jest lepszy sposób?
Pozdrawia
Piotr

0

Jeśli używasz delphi i firedac (lub darmowych zeoslib) to możesz "wrzucić" na formatkę obiekt TADUpdateSQL i tam wpisać treść insert/update/delete następnie do TADQuery w ObjectInspectorze podpinasz ten obiekt w UpdateObject i wykonując Insert/Edit/Post odpali się SQL, który masz w TADUpdateSQL.

0

Ja używam DataSource i ADOStoredProc -> jakis pomysł?
dziękuje

0
pdusp napisał(a):

Witam,
Chciałbym po pobraniu danych z sp wyświetlić je sobie w DBGridzie i edytować, następnie jedną transakcją zapisać w bazie poprzez dopisanie kursorem wiersz po wierszu.

Dlaczego kursorem?

Problem pojawia się na początku działania okienka, dane pobrane są wyświetlane ale nie są edytowalne.
Przy próbie wpisanie tekstu otrzymuję taki komunikat:
Niedostateczna informacja o kolumnie klucza w celu aktualizacji lub odświeżenia

To komunikat z ADO i tam to tak działa by design.

Mój pomysł nieciekawy:
Pobrać dane do tablicy tymczasowej, ustawić dbgrida żeby z niego ciągnął dane a na zakończenie dopisać z tymczasowej w transakcji do tablicy docelowej.

Matko i córo...
I dla każdego zestawu danych będziesz tak kombinował?

Może jest lepszy sposób?

Cała masa.
@woolfik napisałem o jednym, ale to wymaga zmiany komponentów na lepsze - np. FireDAC lub ZEOS, jeśli ma być za free.
Tak czy siak, to będzie najprostsze i najlepsze rozwiązanie. ADO to wcale nie jest fajna (w sumie to jest przestarzała technologia na dziś, z którą sam MS nie wie co zrobić. Chętnie by ja porzucił, ale utrzymuje, natomiast nie rozwija) technologia. OK, działa i da się to zmusić do poprawnego działania.

Da się to zrobić inaczej, ale to trochę rzeźby i to zupełnie niepotrzebnej.
Jeśli upierasz się na ADO, to musisz zaprzyjaźnić się z mechanizmem batch updates (który wszędzie indziej w Delphi jest znany jako CachedUpdates) i pokombinować ze zdarzeniami/filtrami
Tu trochę więcej:
http://etutorials.org/Programming/mastering+delphi+7/Part+III+Delphi+Database-Oriented+Architectures/Chapter+15+Working+with+ADO/Updating+the+Data/

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