MS Access - jak ze sobą powiązać...

IP: *.resetnet.pl 07.12.06, 13:11
Robię w Accessie wypożyczalnię kaset video. Zrobiłem odpowiednie tabele i
formularze (po jednym - dla filmów oraz dla wypożyczających). Jednak nie
wiem, jak powiązać wypożyczającego z tytułem filmu; i na odwrót - tytuł filmu
z określonym wypożyczającym. Jak zbudować taką relację? Chciałbym wiedzieć,
mając nazwisko np. Kowalskiego, jakie on ma filmy wypożyczone. I na odrwót -
gdy kliknę np. na film "Rambo", chciałbym wiedzieć, kto go ma na koncie...
    • krzysztofsf Re: MS Access - jak ze sobą powiązać... 07.12.06, 13:50
      Musisz stworzyc tabele zawierajaca indeks filmu i indeks wypozyczajacego, data wypozyczenia i data zwrotu (lub pole w ktorym jest odhaczany zwrot, powodujace, ze przy przeszukiwaniu tej tabli rekord jest pomijany - bo film zwrocono (chyba, ze wlasnie chcemy historie wypozyczen - inna bajka).

      Poczytaj o podformularzach.
    • user0001 Re: MS Access - jak ze sobą powiązać... 07.12.06, 13:56
      Robisz następną tabelę w której wstawiasz

      #FilmId INTEGER REFERENCES Filmy(FilmId)
      OsobaId INTEGER REFERENCES Osoby(OsobaId)
      DataOd DATETIME

      Tam wstawiasz wypożyczenia. Zrób ograniczenie unikalności na FilmId aby film nie
      mógł być wypożyczony dwóm osobom jednocześnie (czy mi się wydaje, czy Twoja
      wypożyczalnia ma tylko po jednej kopii każdego filmu, jeśli tak nie jest to
      powinieneś mieć tabelę przechowującą dane o kopiach filmów).

      Przy usuwaniu wiersza z tabeli wypożyczeń, zapisz ten wiersz to tabeli
      wypożyczeń archiwalnych, ta tablica może mieć następujący układ:

      #FilmId INTEGER REFERENCES Filmy(FilmId)
      #OsobaId INTEGER REFERENCES Osoby(OsobaId)
      #DataOd DATETIME
      DataDo DATETIME

      Gdybyś robił to w prawdziwej bazie danych (PostgreSQL, MS SQL Express, Oracle
      Express czy DB2 Express-C), go należałoby stworzyć procedurę wykonującą zwrot,
      która dla danego filmu, usuwała by linijkę z tabeli wypożyczeń, dopisywała
      linijkę do tabeli wypożyczeń archiwalnych i zwiększała ilosć dysponowaną w
      magazynie, a wszystko to robiła w jednej tranzakcji.
      • krzysztofsf Re: MS Access - jak ze sobą powiązać... 07.12.06, 14:09
        user0001 napisał:


        > Gdybyś robił to w prawdziwej bazie danych (PostgreSQL, MS SQL Express, Oracle
        > Express czy DB2 Express-C), go należałoby stworzyć procedurę wykonującą zwrot,
        > która dla danego filmu, usuwała by linijkę z tabeli wypożyczeń, dopisywała
        > linijkę do tabeli wypożyczeń archiwalnych i zwiększała ilosć dysponowaną w
        > magazynie, a wszystko to robiła w jednej tranzakcji.

        Access jest prawdziwa baza danych umozliwiajaca osiagniecie powyzszej funkcjonalnosci kilkoma metodami, zaleznie od stopnia zaawansowania uzytkownika. - od klikania mych do wklepania wszystkiego z palucha - co kto umie i potrafi.

        Nie wierzysz - przejrzyj sobie troche postow na grupie dyskusyjnej Accessa.
        • user0001 Re: MS Access - jak ze sobą powiązać... 07.12.06, 15:06
          Nie wierzę :-) naprawdę mam tam do dyspozycji perspektywy, triggery,
          podzapytania, ograniczenia typu check, procedury przechowywane w bazie i
          skalowalność do maszyn wieloprocesorowych, gdy baza będzie się rozrastać ;-)

          (zmieniła mi się perspektywa, kiedyś myślałem o kilkuset rekordach w tabeli,
          teraz pracuję na bazie w której codziennie przybywa kilkanaście megabajtów).
          • krzysztofsf Re: MS Access - jak ze sobą powiązać... 07.12.06, 15:18
            user0001 napisał:

            > Nie wierzę :-) naprawdę mam tam do dyspozycji perspektywy, triggery,
            > podzapytania, ograniczenia typu check, procedury przechowywane w bazie i
            > skalowalność do maszyn wieloprocesorowych, gdy baza będzie się rozrastać ;-)
            >
            > (zmieniła mi się perspektywa, kiedyś myślałem o kilkuset rekordach w tabeli,
            > teraz pracuję na bazie w której codziennie przybywa kilkanaście megabajtów).

            Uhmmm... Tyle, ze w ktoryms momencie koszt informatyka prowadzacego projekt bedzie wyzszy niz przejscie na inna baze ;)
            No i poniewaz microsoft przestal dostarczac runtime'a, to jako kazdego klienta trzeba by wykupywac pelna licencje professional - bez sensu, skoro uzytkownik ma tylko korzystac a nie projektowac. Tak wiec w momencie wyprowadzenia projektu na serwer - czas na przejscie na inna baze, chociaz sa tacy, co ciagna pod Accessem projekty z kilkuset uzytkownikami.
            Naprawde zabonuj sobie wspomnaina grupe dyskusyjna - to zobaczysz jak "duzi chlopcy" bawia sie ta "zabawka".
            ja niestety odpadlem w doskonaleniu momencie gdy dalsze dzialania musialbym bardziej pisac z palca niz bazowac na istniehacych funkcjachh.
            • user0001 Re: MS Access - jak ze sobą powiązać... 07.12.06, 15:42
              Nie zaabonuję sobie listy :-)

              Służbowo klepię w SQL Server. A parę projektów które popełniłem prywatnie chodzi
              na Postgresie.

              Nie zajmuję się wyglądem aplikacji (od tego są projektanci stron lub programiści
              aplikacji) a jedynie ich logiką, więc łatwość wyklikania formularzy mam za nic.

              Do raportowania w firmie używamy kryształka i access jest tylko niepotrzebnym
              bajerem :-)
              • Gość: o2 Re: MS Access - jak ze sobą powiązać... IP: *.acn.waw.pl 07.12.06, 19:02
                No dobrze ... ale jak to wszystko ma sie do tego, ze pytanie bylo konkretnie o
                Accessa???
                • krzysztofsf Re: MS Access - jak ze sobą powiązać... 07.12.06, 20:43
                  Gość portalu: o2 napisał(a):

                  > No dobrze ... ale jak to wszystko ma sie do tego, ze pytanie bylo konkretnie o
                  > Accessa???

                  Sadze, ze pytajacemu (ktory prawdopodobnie , sadzac z pytania, zalicza Accessa na kierunku nieinformatycznym) moja odpowiedz wystarczy do odnaleziania wlasciwego kierunku.

                  natomiast moj interlokutor jest typowym przykladem zawodowego programisty, ktory nieznajac Accessa wydaje autorytatywne wnioski na jego temat.
              • krzysztofsf Re: MS Access - jak ze sobą powiązać... 07.12.06, 20:36
                user0001 napisał:

                > Nie zaabonuję sobie listy :-)
                >
                > Służbowo klepię w SQL Server. A parę projektów które popełniłem prywatnie chodz
                > i
                > na Postgresie.
                >
                > Nie zajmuję się wyglądem aplikacji (od tego są projektanci stron lub programiśc
                > i
                > aplikacji) a jedynie ich logiką, więc łatwość wyklikania formularzy mam za nic.
                >
                > Do raportowania w firmie używamy kryształka i access jest tylko niepotrzebnym
                > bajerem :-)

                To co piszesz potwierdza, ze nie masz pojecia o Accessie (podobnie jak ja nie znam blizej twoich narzedzi).

                Jesli chodzi o raportowanie, to korzystalem z Accessa do obrobki danych z JDE na AS-400, importujac i obrabiajac miliony rekordow (zdarznia w wielooddzialowej firmie handlowej).
                Bylo szybciej i elastyczniej niz np. w Cognosie, ktory rowniez wykorzystywano w tym celu.

                Formularze to inna bajka, w tym powyzszym przypadku sluzaca do spinania juz zautomatyzowanych stalych zestawow zapytan.
                Nie rozumiem jaki masz problem z grupami dyskusyjnymi, widocznie wolisz pozostac w nieswiadomosci ;), niz przyrzec sie wrogowi :))

                Ja w Accessie moge postawic sie na poziomie zaawansowanego usera, a tam mozesz zobaczyc co w nim rzezbia prawdziwi programisci.
              • marcot Re: MS Access - jak ze sobą powiązać... 09.12.06, 10:00
                >Nie zajmuję się wyglądem aplikacji (od tego są projektanci stron lub programiści
                >aplikacji) a jedynie ich logiką, więc łatwość wyklikania formularzy mam za nic.

                to wiele tlumaczy, wiec nie dziwi mnie twoja ignorancja. jesli jednak juz tak
                logicznie podchodzisz do tematu to na wstepnie warto by bylo uswiadomic sobie ze
                access nie jest profesjonalna platforma do tworzenia baz danych lecz skladnikiem
                pakietu msoffice majacy za zadanie wspomoc prace biura. majac ta swiadomosc i
                biorac pod uwage jego mozliwosci mysle, ze nie ma sie czego wstydzic konkurujac
                z profesjonalnymi narzedziami.
                jesli chodzi o pojemnosci to ta plikowa baza danych, o ile dobrze pamietam, moze
                w sobie pomiescic 2 gigabajty co wydaje sie bardzo duzo jak dla zwyklego usera.
                jesli jednak zdecydujemy sie na budowanie takiej bazy danych i w perpektyach
                zalozymy ze moze sie ona zaczac bardzo mocno rozrastac to stosujac odpowiedni
                model naszej bazy (ado, unikanie zagniezdzania kwerend ...) nie bedzie wiekszego
                problemu z wykorzystaniem wbudowanego narzedzia accessa do automatycznej
                rozbudowy naszej plikowej bazy danych do architektury mssqlserwer lub chociaz
                dodatku do msoffice msde.
                jesli chodzi o raportowanie to zgadzam sie ze crystal reports jest o wiele
                wydajniejszy niz access, ale tego narzedzia nie mozna porownywac z baza danych
                msaccess.
                choc naprawde bardzo sobie cenie profesjonalne rozwiazania, zwlaszcza oracle, to
                jednak szydzenie z access-a wydaje sie byc sporym brakiem wiedzy na jego temat.
Pełna wersja