Avatar billede dadio Nybegynder
07. november 2006 - 16:54 Der er 10 kommentarer og
1 løsning

Problemer med relationer.

Jeg har prøvet at lave en lille faktura DB,hvor jeg dagligt kan udfylde arbejdstimer og efter en given periode kan udprinte en faktura. Jeg fik det hele til at spille sammen, men der blev ved med at stå Fakturanr. 1. Jeg tror "Skat" kommer efter mig hvis alle mine faktura har nr. 1. Mine tabeller er som følger:
T_Fakturahoved
fakturanr.
kundenr
dato

T_Kunde
kundernr
firmanavn
kontaktperson
adresse
postnrby
telefon
note

T_Fakturalinje
fakturalinjenr
fakturanr
projektnr
timesats
antal
dato

T_Projektnr
projektid
kundenr
adresse
postnrby
opgave
timesats
materialer
timeforbrug

T_Materialer
materialenr
produktnavn
kostpris
salgspris
antal

T_Timeplan
timeid
dato
projektnr
timer

Hvordan skal relationerne være hvis jeg skal kunne udskrive en faktura baseret på de indtastninger jeg laver i Timeplan. Jeg skal kunne udvælge ud fra projektnr og dato-interval. For at få materialer med på samme faktura skal jeg lave en underformular til underformular eller hur?
Jeg har prøvet med eksembelbasen "Tid og faktura" men der er godt nok mange felter jeg ikke ønsker og det dur ikke bare at slette dem.
Avatar billede mugs Novice
07. november 2006 - 18:23 #1
Du har redundans i din db:

T_Kunde
kundernr

og

T_Projektnr
projektid
kundenr

har du kundenr 2 gange. Det må ikke forekomme på den måde.

Opret tabeller:

TBLkunde med alle data om kunden og feltet FLDkundenr som PK.
TBLProjekt med alle data om projektet undtagen data om kunden.
TBLmaterialer med alle data om materialet og en PK, men IKKE med antal.

Nu opretter du en 4. tabel, der ved combo plukker OK fra de andre 3 tabeller. Opret relationer fra denne 4. tabel til de andre. 4. tabellen skal være mange siden af en relation een til mange. Opretr derefter relavante forespørgsler.

Ovennævnte er ikke fyldestgørende nok, men godt nok til at få rettet de mest basale fejl.
Avatar billede dadio Nybegynder
07. november 2006 - 20:45 #2
Hej mugs, du har ret i at kundenr ikke behøves i T_Projektnr, så det er nu fjernet. Jeg har prøvet at lave en "combo-tabel" men kan ikke se hvordan jeg kan bruge den til noget.
Avatar billede mugs Novice
07. november 2006 - 20:52 #3
Combo-tabel???

Denne 4. tabel kalder vi for TBLsamle for nemheds skyld. Denne har relationer een til mange til de øvrige og TBLsamle er mange-siden.

I TBLsamle laver du en kombinationsboks (combo) der slår op i de andre tabeller og 2plukker" den primære nøgle. Relationerne vil så i en forespørgsel sørge for, at du får feltet fra TBLsamle og alle øvrige felter fra de andre tabeller.
Avatar billede dadio Nybegynder
07. november 2006 - 21:28 #4
TBLsamle eller TBLcombo betyder vel ikke noget. Ellers har jeg lavet den som du har beskrevet, men kunne man ikke bare i en forespørgsel skrive between startProjektnr and slutprojektnr? Kan jeg evt. lave flere "under"-forespørgsler? På en eller anden måde må projektnr være unikt som "hiver" de andre tabeller med de informationer der hører til det projekt. Der kan jo være linjer på en faktura til samme projekt med forskellige datoer.
Avatar billede mugs Novice
07. november 2006 - 21:31 #5
Så skal du vælge fakturanr, og du vil få alle poster der matcher det valgte nr.
Avatar billede dadio Nybegynder
07. november 2006 - 22:23 #6
Foreløbig tak. Jeg vender tilbage imorgen. Nu gider jeg sgutte mer'.
Avatar billede Slettet bruger
11. november 2006 - 23:44 #7
Du er velkommen til at sende din db zippet og med en reference til spørgsmålet, til spgeerts på hotmail!~)
Avatar billede Slettet bruger
11. november 2006 - 23:45 #8
Hold k... nu kan jeg ikke engang stave mit eget efternavn:

spgeertz på hotmail!~)
Avatar billede dadio Nybegynder
12. november 2006 - 12:44 #9
Tusind tak, det vil jeg da benytte mig af. For det er da surt show, at jeg ikke kan få det til "spille" som jeg vil.
Avatar billede Slettet bruger
13. november 2006 - 09:40 #10
Prøv at lave en forespørgsel og ikke vælge nogen tabel, så vælger du SQL visning og indsætter flg.:

SELECT DISTINCT [Indtast start dato:] AS [Start dato], [Indtast slut dato:] AS [Slut dato], T_Timeplan.ProjektNr, Sum(T_Timeplan.Timer) AS [Antal timer], T_ProjektNr_1.Timesats, Sum([timer])*[timesats] AS [Pris eksl materialer]
FROM T_Timeplan INNER JOIN T_ProjektNr AS T_ProjektNr_1 ON T_Timeplan.ProjektNr = T_ProjektNr_1.ProjektId
WHERE (((T_Timeplan.Dato) Between [Indtast start dato:] And [Indtast slut dato:]))
GROUP BY [Indtast start dato:], [Indtast slut dato:], T_Timeplan.ProjektNr, T_ProjektNr_1.Timesats
HAVING (((T_Timeplan.ProjektNr)=[Indtast projektnr:]));
Avatar billede dadio Nybegynder
25. februar 2012 - 12:06 #11
Lukket.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester