PDA

Zobacz pełną wersję : [ACCESS] Tabele sprężone



hattric
01-04-09, 11:23
Ta praca mnie wykończy:)
Macie pomysł na dynamiczne bazy, które by ustanawiały nazwy pola, za pomocą rekordów z innej tabel. Dla większego zrozumienia napiszę przykład, szkic. Mamy tabele A i B, tabela A zawiera pole o nazwie przedmioty (i rekordy o nazwie religia, wf itd.), tabela B jest pusta. Zadanie jest takie żeby stworzyć sprężenie, kwerendę, która by dodawała nazwy pola (kolejno religia, wf, matematyka itd.) w tabeli B za pomocą rekordów w tabeli A.

Dzięki.

koneton
01-04-09, 12:08
Da radę, ale mam przeczucie, że wcale tego nie chcesz zrobić ;-) Napisz co chcesz osiągnąć na samym końcu to dojdziemy do tego jak to zrobić.

hattric
16-04-09, 15:53
Oczywiście z góry, przepraszam za wielką zwłokę, ale dopiero teraz mam więcej czasu na prace z tym.
Moja praca ma polegać na stworzeniu dziennika uczniowskiego, korzystając z Accessa. Nauczyciel, korzystając z projektu, powinien tylko mieć styczność z (min. czytaj najlepiej) 3 formularzami i podglądem raportu (który będzie miał w sobie wszystkie dane, wzór w tym (http://forum.di.com.pl/showthread.php?t=10178) temacie). Pierwszy formularz odpowiada za wprowadzenie danych o uczniu(imię, nazwisko, adres, tel itp.), następny jest do wprowadzania nazw przedmiotów, trzeci do wpisania ocen.

Mój kłopot jest taki, że nie potrafię przetransportować nazw przedmiotów (z rekordów) do kolejnej bazy jako nazw kolumn(żeby nauczyciel mógł później w odpowiednim formularzu wpisać do tych przedmiotów oceny).

Dla większej przejrzystości pytania zamieściłem tu (http://www.speedyshare.com/326616128.html) odnośnik z bazą danych na której skończyłem(a tak naprawdę dopiero zacząłem).

doderic
19-04-09, 21:59
Nasuwa mi się pytanie: po co dynamicznie tworzyć nową lub modyfikować istniejącą tabelę? Oczywiście, na podstawie istniejących wpisów można dynamicznie stworzyć zapytanie SQL DDL typu CREATE TABLE lub ALTER TABLE i to robić, ale czy:

istnieje jakiekolwiek uzasadnienie dla takiego rozwiązania zamiast stworzyć coś o czym napiszę poniżej?
jeśli rzeczywiście potrzebna jest jedna tabela zawierająca wszystkie pola przedmiotów, to czy z wyprzedzeniem nie wiadomo co która klasa ma w programie i nie można tego wprowadzić przed początkiem roku szkolnego?


Teraz rozwiązanie, o jakim myślę. Jeśli coś jest niezrozumiałe - pytaj.
Będę starał się opisywać tak, żeby z jednej strony wrzucić trochę mądrze brzmiących słów, które mogą dla niektórych być wystarczające bez czytania całego opisu, z drugiej strony będę dodawał opis, żeby "niewyedukowani" w dziedzinie też mieli szansę.

Do dzieła więc:

Stworzymy 3 tabele - dwie z nich będą słownikami, trzecia będzie tabelą łączącą dwie poprzednie relacją wiele do wielu.
Dwa słowniki, to Uczniowie i Przedmioty. Co zawierają? Cokolwiek jest potrzebne - a przynajmniej imię i nazwisko ucznia oraz nazwę przedmiotu.
Trzecia tabela łącząca to Oceny. Każda ocena jest oceną konkretnego ucznia z konkretnego przedmiotu. Tak więc ta tabela zawiera przynajmniej pola: id_ucznia, id_przedmiotu, ocena. -- Co jest ważne, trzeba stworzyć klucz główny tabeli na dwóch polach, który nie pozwoli wpisać drugiego rekordu z tym samym id_ucznia i id_przedmiotu.



Teraz, żeby uzyskać fajną tabelkę przestawną, która może zostać wrzucona do raportu, polecam użyć tzw. kwerendy krzyżowej - accessowy odpowiednik tabeli przestawnej. Dzięki temu można sobie stworzyć taką tabelkę, jaką prezentujesz w przykładzie: uczniowie w boczku, przedmioty w główce. Btw. zachowanie możesz potraktować jako przedmiot albo jako właściwość danego ucznia. Tworzenie osobnej tabeli może być przydatne w momencie, gdy chcesz zapisywać zachowanie przez całą szkołę - jakie zachowanie miał uczeń w każdej z klas.

Co do formularza, na którym mają być wpisywane oceny... czy oceny wpisuje nauczyciel prowadzący przedmiot (i nie interesują go w tym momencie oceny z innych przedmiotów)? W takim przypadku jest stosunkowo łatwo: wystarczy stworzyć listę opartą na tabeli Oceny, prezentującą oceny wszystkich uczniów z tego jednego przedmiotu - np. poprzez ustawianie filtru formularza.

To tyle z mych przemyśleń.
Jeśli pasuje Ci wyznaczony kierunek, a masz jakieś kolejne pytania - zapraszam.