Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
autouzupełnianie
06-05-2016, 09:32,
#1
autouzupełnianie
Czy jest taka możliwość żeby w atrybutach zapisywała się data ostatniej edycji obiektu?
08-05-2016, 10:27,
#2
RE: autouzupełnianie
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().
08-05-2016, 22:23,
#3
RE: autouzupełnianie
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 Wink ).

Potem w QGIS, we właściwościach warstwy, wystarczy ustawić rodzaj edytora dla tego pola jako "Data/czas", jak na rysunkach poniżej.
   
   

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ą.
12-05-2016, 12:42,
#4
RE: autouzupełnianie
Przy dodawaniu nowego obiektu ta funkcja działa. Niestety przy edycji już istniejącego nie działa.
12-05-2016, 17:40,
#5
RE: autouzupełnianie
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
12-05-2016, 23:14,
#6
RE: autouzupełnianie
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
ADD COLUMN modified timestamp default current_timestamp;
To polecenie dodało kolumnę "modified" do Twojej tabeli, która co prawda będzie zapisywać aktualny czas, ale tylko dla nowotworzonych obiektów.

Ż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()    
RETURNS TRIGGER AS $$
BEGIN
    NEW.modified = now();
    RETURN NEW;    
END;
$$ language 'plpgsql';

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();
który stworzy działanie wywołujące funkcję, która jest opisana wyżej [czyli update_modified_column()].

Sprawdziłem u siebie, działa. A pewnie i mi się przyda w przyszłości Smile
17-05-2016, 12:38,
#7
RE: autouzupełnianie
Trigger po polsku w pgAdminie to wyzwalacz Wink
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!
17-05-2016, 12:50,
#8
RE: autouzupełnianie
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) Smile A podczas testowania tego rozwiązania automatycznie uzupełniało mi daty w nowotworzonych obiektach.
17-05-2016, 21:58,
#9
RE: autouzupełnianie
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!
22-08-2016, 21:48,
#10
RE: autouzupełnianie
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 Wink

Przykładowy filmik [2] z rozwiązaniem problemu z tego tematu - timestamps Smile

-----------
[1] - http://geotux.tuxfamily.org/index.php/ge...n-for-qgis
[2] - https://vimeo.com/178984647


Skocz do: