Gå til innhold

Legge til flere verdier i access 2007 DB?


Anbefalte innlegg

Jeg sliter med å ordlegge meg på en kort og konsis måte, så jeg beklager om det er et superenkelt google-søk som skal til, for jeg har ikke funnet det jeg ser etter.

 

Problemet:

Jeg har en access database, med en medlemsregistertabell, som jeg redisigner. Medlemmene betaler kontigent hvert halvår. og jeg trenger en måte å registrere om medlemmet har betalt, hvilket dato og årstall, slik at man legger bare til informasjonen, istede for å forandre den hvert år.

 

Hva jeg ser etter:

En form for "undertabell" for hvert medlem, som kan inneholde hvilke datoer/år/halvår medlemskontigenten er betalt. (jeg har litt for lite kjennskap til dette, for

 

Noen som har en løsning??

 

Takk!

 

-frank

Lenke til kommentar
Videoannonse
Annonse

Synes du ordla deg ganske bra.

 

Du er inne på rett løsning, og jeg ser hvordan Google kan ha vært lite hjelpsom.

 

I de fleste databaser er det ikke noe konsept om undertabell i seg selv. At den er "under" den andre tabellen blir først en "ting" utfra hvordan du bruker den.

 

Lag gjerne en egen tabell for betalinger, og knytt radene i den tabellen til IDen til de forskjellige brukerne.

 

Når du legger ikk en betaling, så fyller du inn denne IDen.

 

Når du skal hente ut betalingsliste for en bruker, så søker du på den.

 

Tilsvarende kan du gjøre spørringer som f.eks å søke gjennom alle brukere som er aktive, og ikke har en betaling registrert i år, for å finne liste over brukere som ikke har betalt.

 

I stor grad gjøres binding mellom tabellene i spørringen, uten at de ellers er under og over hverandre.

 

Jeg er har ikke brukt Access på 10-15 år, så jeg har litt vansker for å være veldig konkret dessverre.

 

Mulig noe av dette gav mening likevel?

 

  • Liker 1
Lenke til kommentar

Riktig det du skriver over her, det kan opprettes en kontigent-tabell hvor man registrerer kontigentinnbetalingene, med fremmednøkkel (felt med verdi som refererer til primærnøkkelen i medlemstabellen.)

 

For å finne mer info om dette kan man kanskje google "one to many relationship ms microsoft access"

 

Microsoft har også dokumentasjon om dette: http://support.microsoft.com/kb/304466

 

Siden Access har funksjonalitet for gui kan man også google "master detail view ms microsoft access". Skal vedde på du finner noen Wizards som kan generere opp et gui basert på en gitt tabellstruktur, som du kan se nærmere på.

 

Les også om relasjonsdatabaser på wikipedia: https://en.wikipedia...tional_database , det er dét Access prøver å være.

 

For å hente ut data fra flere tabeller på en gang må du bruke sql-join. (Dette kan du gjøre uansett om det er etablert fremmednøkkel eller ikke, men hvis det ikke er opprettet indeks på feltene du joiner med kan det gå langsomt.)

 

Hvis du vil se et medlem (med medlem_id = 123) og alle hans kontigentinnbetalinger kan spørringen se omtrent ut som nedenfor. Tenk deg at vi har tabellen Medlem med all medlemsinformasjon som navn og adresse etc. samt primærnøkkel medlem_id, og tabellen Kontigent med innbetalingsdato, beløp etc., samt primærnøkkel kontigent_id og fremmednøkkel medlem_id med referanseintegritet til Medlem.medlem_id.

 

select * from Medlem m left join Kontigent k on m.meldem_id = k.medlem_id where m.medlem_id= 123;

 

(NB, dette er ikke prøvekjørt i Access ...)

Endret av quantum
Lenke til kommentar

Godt oppsummert.

 

Vil bare legge til at jeg mener å huske man kan bruke access sammen med andre databaser via ODBC-koblinger (brukes kanskje noe annet i dag?).

 

Jeg vet enkelte gjør dette for å få både i pose og sekk:

 

Skikkelig database for vel... skikkelig database.

Access for å enkelt kunne lage windows-gui.

 

Da får man også fordel av at flere kan jobbe mot samme database, fra flere maskiner, og man kan også kjøre andre systemer (web etc) mot samme.

 

Litt usikker på om jeg vil annefale det. Det krever en del lesing og læring, men om det er en interesse utover det som er behovet nå, så kan det være artig.

 

Man får flere gratisdatabaser, både ms-sql og oracle har "express"-utgaver, gratis i bruk, dog med begrensninger. I tillegg finnes f.eks PostgreSQL, som er gratis og uten begrensninger, og kan brukes også på windows.

 

 

Lenke til kommentar

Gui-biten i Access er ikke noe spesielt bedre enn database-biten, så hvis man først forkaster sistnevnte kan man likegodt forkaste resten også, medmindre man alt har en masse business/gui-kode i en eksisterende løsning og bytter database under fordi man må av skaleringshensyn.

 

Forøvrig kan mange brukere ha tilgang til den samme access-databasen samtidig, og man kan godt benytte accessdatabase som backend for andre typer løsninger, Asp.NET, WindowsForms eller hva det nå heter alt sammen. Med ADO, DAO, MDAC, ODBC eller hva som måtte være ukas mellomvareteknologi for databaser fra MS kan man vel stort sett bruke Accessdatabase fra alle programmeringsverktøy som har Windows som target.

 

Altså oppsummert:

  • Access database og Access gui = hverken pose eller sekk
  • Annen database og Acess gui = pose men ikke sekk
  • Access database og annet gui = sekk men ikke pose
  • No Access = pose OG sekk :)

Spøk til side: Access er et brukbart verktøy til å lage prototyper eller relativt små løsninger som aldri vil få behov for å skalere i noen som helst retning. All funksjonaliteten er tilgjengelig i de andre verktøyene til Microsoft også, like lettvint, det er vel egentlig bare wizardene som er unike for Access, og de kan egentlig ikke løse særlig mange real-life-behov.

Endret av quantum
Lenke til kommentar

Man får flere gratisdatabaser, både ms-sql og oracle har "express"-utgaver, gratis i bruk, dog med begrensninger. I tillegg finnes f.eks PostgreSQL, som er gratis og uten begrensninger, og kan brukes også på windows.

 

Vi er nok kraftig utdaterte begge to, jeg driver bare og surrer med en gammel Access 2000-database som av og til trenger vedlikehold. Da vi back in the day programmerte Access side om side med dinusaurusene lå Microsoft JET database i bånn, en isam-implementajson. I dag er det visst MS SQL Server Express som er databasemotoren i Access, og JET er blitt en legacy-komponent i Windows. Dermed er ikke Access lengre så håpløst som det engang var, og jeg skal moderere skaleringspåstandene mine over littegranne. Forskjellen er vel omtrent som å bruke MySQL med MyISAM vs. InnoDB engine.

Endret av quantum
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...