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/