autouzupełnianie - Wersja do druku +- Forum QGIS (http://forum.quantum-gis.pl) +-- Dział: Desktop GIS (http://forum.quantum-gis.pl/forum-4.html) +--- Dział: QGIS (http://forum.quantum-gis.pl/forum-5.html) +--- Wątek: autouzupełnianie (/thread-1322.html) |
autouzupełnianie - wojsa - 06-05-2016 Czy jest taka możliwość żeby w atrybutach zapisywała się data ostatniej edycji obiektu? RE: autouzupełnianie - cogito94 - 08-05-2016 Cześć, Ja przyłączam się do wątku. Nie wiem jak to zrobić ale może to się przyda. W QGIS jest funkcja now() dzięki której pobieramy dane o dacie. Mam małe pytanie. Czy da się ustawić dla nowej kolumny pewną wartość. Czyli tworzę nową kolumnę data_zmiany (type:data) i ustawiam aby domyślnie dla data_zmiany = now(). RE: autouzupełnianie - Binko - 08-05-2016 W shapefile łatwo da się to zrobić dodając nowe pole, nazwijmy je "dt", ustawiając typ jako Date (jeśli chcemy samą datę), lub Text (jeśli chcemy datę i czas - wtedy długość pola należy ustawić tak, żeby nam odpowiadało, czyli w zależności od formatu zapisu daty i czasu, jaki chcemy uzyskać, domyślnie proponuję 20 ). Potem w QGIS, we właściwościach warstwy, wystarczy ustawić rodzaj edytora dla tego pola jako "Data/czas", jak na rysunkach poniżej. [attachment=301] [attachment=300] Ustawienia można zostawić domyślne, można też w zależności od potrzeb wybrać sobie format zapisu czasu, i tak dalej. Po postawieniu jakiegoś punktu, zakończeniu edycji jakiejś linii bądź poligonu, pole powinno samo się uzupełnić z aktualną datą. RE: autouzupełnianie - wojsa - 12-05-2016 Przy dodawaniu nowego obiektu ta funkcja działa. Niestety przy edycji już istniejącego nie działa. RE: autouzupełnianie - cogito94 - 12-05-2016 Właśnie też to zauważyłem, Wartość w polu daty zmienia się tylko wtedy, gdy zostanie odpalony formularz, dopiero wtedy dana zostaję zaktualizowana, ale tylko wtedy gdy kolumna ma wartość NULL w przypadku gdy chcemy zastąpić istniejącą wartość nie działa RE: autouzupełnianie - Binko - 12-05-2016 No, to właściwie szybkim i dosyć prostym rozwiązaniem będzie skorzystanie z PostGISa. Wgraj tabelę do bazy, a potem wystarczy dodać kolumnę przez: Kod: ALTER TABLE twoja_tabela Żeby pole to miało informację o ostatniej edycji obiektu, trzeba jeszcze poniższe funkcje wywołać. Kod: CREATE OR REPLACE FUNCTION update_modified_column() A potem taki "trigger" (nie wiem jak i czy słówko "trigger" tłumaczy się na polski...): Kod: CREATE TRIGGER update_edit_modtime BEFORE UPDATE ON twoja_tabela FOR EACH ROW EXECUTE PROCEDURE update_modified_column(); Sprawdziłem u siebie, działa. A pewnie i mi się przyda w przyszłości RE: autouzupełnianie - sebaq - 17-05-2016 Trigger po polsku w pgAdminie to wyzwalacz Do definicji dodałbym INSERT czyli CREATE TRIGGER update_edit_modtime BEFORE INSERT OR UPDATE ON twoja_tabela FOR EACH ROW EXECUTE PROCEDURE update_modified_column(); aby postgresql dodawał datę stworzenia (insert) obiektu a nie tylko aktualizacji (update). Pozdrawiam! RE: autouzupełnianie - Binko - 17-05-2016 A nie jest tak, że przy tworzeniu automatycznie to zrobi ze względu na typ pola i rodzaj danych (timestamp)? Pytam, bo nie wiem (ciągle się douczam tego Postgresa) A podczas testowania tego rozwiązania automatycznie uzupełniało mi daty w nowotworzonych obiektach. RE: autouzupełnianie - sebaq - 17-05-2016 Być może dla timestamp tak działa (nie testowałem) ale takiego triggera wykorzystywać można do autouzupełniania wielu innych danych więc warto pamiętać aby był wyzwalany również przy insercie. Pozdrawiam! RE: autouzupełnianie - Binko - 22-08-2016 Odkopuję temat, bo właśnie pojawiła się nowa wtyczka, która pozwala na autouzupełnianie przeróżnych opcji. AutoFields Plugin [1] - bez potrzeby zaprzęgania PostGISa Przykładowy filmik [2] z rozwiązaniem problemu z tego tematu - timestamps ----------- [1] - http://geotux.tuxfamily.org/index.php/geo-blogs/item/333-autofields-plugin-for-qgis [2] - https://vimeo.com/178984647 |