07. november 2006 - 16:54Der 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_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.
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.
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.
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.
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.
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.
Synes godt om
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:]));
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.