Przypisanie Ulic do Miejscowości
Przypisanie Ulic do Miejscowości
Witam, ponieważ tworzę bazę która będzie miała dosyć sporo danych ok. 20 000 wpisów miesięcznie. Staram się przygotować bazę w taki sposób, aby wprowadzanie było jak najszybsze i obyło się bez błędów typu (literówki w adresach) w późniejszym czasie zamierzam te dane przetwarzać za pomocą raportów na wszelakie możliwe sposoby. Stąd moje pytanie. W jaki sposób zrobić, aby na podstawie danych z tabeli: HARMONOGRAM (zaw. ID, ID_MIEJSCOWOSCI, DATA, ID_RODZ_ODPADOW) pobiera dane z tab. MIEJSCOWOSC, w innej tabeli: LISTA (zaw. ID, IMIE, NAZWISKO, NR, ID_HARMONOGRAMU, ID_ULICA) (która jest podformularzem) i pobiera ulice zawarte w tabeli: ULICE. Chcę, aby ulice pobierane były na podstawie miejscowości (aby po wyborze miejscowości otwierając listę ulic, pokazywały się tylko te z wybranej miejscowości), dlatego też utworzyłem kolejną tabele: ULICE_MIEJSCOWOSCI (zaw. ID, ID_ULICY, ID_MIEJSCOWOSCI) gdzie przypisuje ID do ID. Jak to zrobić w formularzu, żeby wszystko zagrało? W załączniku przesyłam bazę, aby była możliwość podglądu jak to wygląda.
- Załączniki
-
- BAZA.odb
- (21.27 KiB) Pobrany 226 razy
LibreOffice 4.2.0.4, Windows 7
Re: Przypisanie Ulic do Miejscowości
Tabela ULICE_MIEJSCOWOSCI to zawracanie głowy. Tak się robi w przypadku związków wielowartościowych między dobrze zdefiniowanymi obiektami różnych rodzajów (np. kwalifikacje pracowników albo ich uczestnictwo w projektach).
W przypadku ulic będzie problem. Jeżeli masz ulicę dajmy na to Kraszewskiego, to nazwa jest wpisana tylko raz, tak? a we wspomnianej tabeli wiążesz jej numer z numerem Poznania (bo ma taką ulicę) i Wrześni (bo również). I teraz Rada Miejska jednej z miejscowości decyduje o zmianie nazwy ulicy. I co?
Po prostu nie nazwa ulicy, tylko ulica jest obiektem w sensie struktury bazy. Prawidłowy projekt powinien zawierać tabele: MIEJSCOWOSCI (ID, NAZWA, ...), ULICE (ID, ID_MIEJSCOWOSCI, NAZWA, ...).
Co nie przybliża do rozwiązania dot. formularza. Tu wskazówką będą podformularze. Może się przyda https://forum.openoffice.org/pl/forum/s ... dformularz
W przypadku ulic będzie problem. Jeżeli masz ulicę dajmy na to Kraszewskiego, to nazwa jest wpisana tylko raz, tak? a we wspomnianej tabeli wiążesz jej numer z numerem Poznania (bo ma taką ulicę) i Wrześni (bo również). I teraz Rada Miejska jednej z miejscowości decyduje o zmianie nazwy ulicy. I co?
Po prostu nie nazwa ulicy, tylko ulica jest obiektem w sensie struktury bazy. Prawidłowy projekt powinien zawierać tabele: MIEJSCOWOSCI (ID, NAZWA, ...), ULICE (ID, ID_MIEJSCOWOSCI, NAZWA, ...).
Co nie przybliża do rozwiązania dot. formularza. Tu wskazówką będą podformularze. Może się przyda https://forum.openoffice.org/pl/forum/s ... dformularz
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Przypisanie Ulic do Miejscowości
Generalnie przewidziałem ten problem w przypadku kiedy kilka miejscowości ma taką samą ulicę. Bo jest kilka miejscowości, w których ulice często się powtarzają. Mój zamysł był taki, że po prostu dodaje te same ulice kilka razy tylko pod innym ID. Z tego względu, iż później w raportach chciałbym wyciągnąć informację z dokładnie tej ulicy przypisanej do danej miejscowości. W przypadku kiedy jedna z Miejscowości zmieni nazwę ulicy, stara pozostanie tylko dodam nową o nowym ID. Chociaż na pewno też można rozwiązać to w inny sposób. W każdym razie zabieram się za lekturę powyżej wymienionego "linku".
Ważną sprawą jest to, aby miejscowość wybierana była tylko raz przy HARMONOGRAMIE, bo dzisiaj będę wprowadzał raport z takiego dnia, na taki rodzaj odpadów i w wybranej miejscowości a jutro może być inna miejscowość i inny rodzaj odpadów. W przypadku kiedy otrzymuje raport z jednej miejscowości zakładając, że będzie to ok. 500 pozycji przy 70 ulicach nie wyobrażam sobie wybierać za każdym razem miejscowość albo dzielić harmonogramy jeszcze na ulice ponieważ w skali powiedzmy roku może się tego nazbierać i jest to zawsze o wiele więcej pracy, dlatego liczbę pół staram się ograniczyć do minimum. No niestety te wszystkie dane są bardzo istotne.
I koniecznie muszę mieć bazę ulic, nie mogę wpisywać ich ręcznie. Ponieważ będzie nad tym pracowało kilku użytkowników. A w przypadku kiedy jedna osoba wpisze: 3 MAJA, inna zaś 3-GO MAJA, lub w ogóle Trzeciego Maja, a niechaj ktoś popełni literówkę. Albo wpisywać będzie ul. J. PIŁSUDSKIEGO, inny JÓZEFA PIŁSUDSKIEGO, a kolejny może wpisać samego PIŁSUDSKIEGO. Dlatego chcąc tego uniknąć właśnie tak to rozwiązałem. Rozumiem, że w przypadku raportów jest możliwośc wpisania np. "TREDERA" i powinno znaleźć wszystko. Może jest jeszcze jakiś inny pomysł...
Ja widzę rozwiązanie i wiem, że jest to możliwe tylko nie wiem jak mój kolega to zrobił. Bo na daną chwile mam wszystkie ulice w Gminie, a ma być filtr: JEŻELI WYBIORĘ ID_MIEJSCOWOSCI = 1 WYŚWIETL WSZYSTKIE ID_ULICY = ID_MIEJSCOWOSCI=1
Ważną sprawą jest to, aby miejscowość wybierana była tylko raz przy HARMONOGRAMIE, bo dzisiaj będę wprowadzał raport z takiego dnia, na taki rodzaj odpadów i w wybranej miejscowości a jutro może być inna miejscowość i inny rodzaj odpadów. W przypadku kiedy otrzymuje raport z jednej miejscowości zakładając, że będzie to ok. 500 pozycji przy 70 ulicach nie wyobrażam sobie wybierać za każdym razem miejscowość albo dzielić harmonogramy jeszcze na ulice ponieważ w skali powiedzmy roku może się tego nazbierać i jest to zawsze o wiele więcej pracy, dlatego liczbę pół staram się ograniczyć do minimum. No niestety te wszystkie dane są bardzo istotne.
I koniecznie muszę mieć bazę ulic, nie mogę wpisywać ich ręcznie. Ponieważ będzie nad tym pracowało kilku użytkowników. A w przypadku kiedy jedna osoba wpisze: 3 MAJA, inna zaś 3-GO MAJA, lub w ogóle Trzeciego Maja, a niechaj ktoś popełni literówkę. Albo wpisywać będzie ul. J. PIŁSUDSKIEGO, inny JÓZEFA PIŁSUDSKIEGO, a kolejny może wpisać samego PIŁSUDSKIEGO. Dlatego chcąc tego uniknąć właśnie tak to rozwiązałem. Rozumiem, że w przypadku raportów jest możliwośc wpisania np. "TREDERA" i powinno znaleźć wszystko. Może jest jeszcze jakiś inny pomysł...
Ja widzę rozwiązanie i wiem, że jest to możliwe tylko nie wiem jak mój kolega to zrobił. Bo na daną chwile mam wszystkie ulice w Gminie, a ma być filtr: JEŻELI WYBIORĘ ID_MIEJSCOWOSCI = 1 WYŚWIETL WSZYSTKIE ID_ULICY = ID_MIEJSCOWOSCI=1
LibreOffice 4.2.0.4, Windows 7
Re: Przypisanie Ulic do Miejscowości
Nie neguję Twoich przemyśleń; stwierdziłem tylko że ulica “3 Maja” w Pińsku i “3 Maja” w Mińsku to dwie niezależne, autonomiczne nazwy, a w Wińsku ma prawo istnieć ulica “III Maja”. Każda ulica winna mieć i własną tekstową nazwę (nie referencję do nazwy), i przypisanie do miejscowości (jako referencję przez ID).
Wtedy, budując formularz, wstawiasz tabelę MIEJSCOWOSCI, dodajesz podformularz z tableą ULICE i deklarujesz powiązanie ID miejscowości w formularzu z ID_MIEJSCOWOSCI w podformularzu. I masz co chcesz.
PS. Jeżeli operacje na poziome tabel są zbyt sztywne, możesz oprzeć formularz na perspektywach (chyba się o nich mówi “widoki” w Base) albo na zapytaniach (“kwerendach”). Ale na mój rozum tabele powinny wystarczyć.
Wtedy, budując formularz, wstawiasz tabelę MIEJSCOWOSCI, dodajesz podformularz z tableą ULICE i deklarujesz powiązanie ID miejscowości w formularzu z ID_MIEJSCOWOSCI w podformularzu. I masz co chcesz.
PS. Jeżeli operacje na poziome tabel są zbyt sztywne, możesz oprzeć formularz na perspektywach (chyba się o nich mówi “widoki” w Base) albo na zapytaniach (“kwerendach”). Ale na mój rozum tabele powinny wystarczyć.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Przypisanie Ulic do Miejscowości
Teraz tak przygotowałem tabelę. Szkoda że nie wpadłem na to szybciej 
Tylko teraz na podstawie tego Formularza, który już aktualnie mam (bo już trochę go przystosowałem i aby uniknąć tworzenia od nowa) czy jestem w stanie go tak zmodyfikować, aby kolumnę "ulice" i wyświetlały się tylko z wybranej miejscowości.
Tabele wyglądają następująco:
MIEJSCOWOSCI
- ID
- NAZWA
ULICE
- ID
- NAZWA
- ID_MIEJSCOWOSCI
Kolumna -> Pole Listy -> Dane ->
Pole danych: ID_ULICA
Typ zawartości listy: SQL
Zawartość Listy:
Zapewne jest to durnie proste. Nie mniej jednak nie mogę na to wpaść. Zrobiłbym tu jakieś kryterium, albo jakiś warunek. Tylko jak to w zapytaniu zrobić?

Tylko teraz na podstawie tego Formularza, który już aktualnie mam (bo już trochę go przystosowałem i aby uniknąć tworzenia od nowa) czy jestem w stanie go tak zmodyfikować, aby kolumnę "ulice" i wyświetlały się tylko z wybranej miejscowości.
Tabele wyglądają następująco:
MIEJSCOWOSCI
- ID
- NAZWA
ULICE
- ID
- NAZWA
- ID_MIEJSCOWOSCI
Kolumna -> Pole Listy -> Dane ->
Pole danych: ID_ULICA
Typ zawartości listy: SQL
Zawartość Listy:
Kod: Zaznacz cały
SELECT "ULICE"."NAZWA", "MIEJSCOWOSCI"."ID" FROM "ULICE", "MIEJSCOWOSCI" WHERE "ULICE"."ID_MIEJSCOWOSCI" = "MIEJSCOWOSCI"."ID"
- Załączniki
-
- BAZA.odb
- (21.97 KiB) Pobrany 260 razy
LibreOffice 4.2.0.4, Windows 7
Re: Przypisanie Ulic do Miejscowości
# Właśnie o takim układzie tabel pisałem.
# Dlaczego budujesz formularz na pytaniu SQL zamiast na tabelach?
# Pisanie filtra w SQL-u wychodzi trochę pod, wiatr, bo interfejs formularza ma do tego narzędzia, a teraz się będziesz zastanawiał, jak przekazać ID z wybranego rekordu do zapytania. Nie rób tego. Jeżeli powiążesz dwa (lub więcej) pól formularza i podformularza, osiągniesz zamierzony efekt. Nigdy tego nie robiłem dla danych SQL, ale nie sądzę by było to trudne.
# Dlaczego budujesz formularz na pytaniu SQL zamiast na tabelach?
# Pisanie filtra w SQL-u wychodzi trochę pod, wiatr, bo interfejs formularza ma do tego narzędzia, a teraz się będziesz zastanawiał, jak przekazać ID z wybranego rekordu do zapytania. Nie rób tego. Jeżeli powiążesz dwa (lub więcej) pól formularza i podformularza, osiągniesz zamierzony efekt. Nigdy tego nie robiłem dla danych SQL, ale nie sądzę by było to trudne.
JJ
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (25.2|24.8) ∙ Python (3.12|3.10) ∙ Unicode 16 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)