Større databaseprojekt

Brugerhjælp og support til databaser i LibreOffice Base

Moderator: Lodahl

Post Reply
holbo
Posts: 4
Joined: Tue Mar 25, 2008 23:22
Location: Rask Mølle
Contact:

Større databaseprojekt

Post by holbo » Tue Mar 25, 2008 23:44

Hej,

Jeg forsøger for øjeblikket at lave et større databaseprojekt for et lille firma, jeg arbejder for. Det er ikke efter ordre, men da jeg er provisionslønnet vil jeg gerne lave databasen, så den kan bruges effektivt til opsøgende salgsarbejde samt koordination af eksisterende kunder. Dertil har jeg en række spørgsmål, som jeg ikke har kunnet finde svar på i den danske udgave af den indbyggede hjælpefunktion. Kan nogen enten give mig svar eller henvise til et svar ville jeg være meget taknemmelig.

1. Vil en større database med både tabeller og forespørgsler til mange forskellige funktioner lægge meget beslag på CPU'en eller køres forespørgsler kun, når de rent faktisk skal bruges? (Svaret skal bruges til at beslutte, om jeg skal lave en enkelt database eller om jeg hellere skal dele den op i forskellige elementer, som f.eks. "opsøgende salsgarbejde," "kundepleje," "regningshåndtering" og "lønsedler.")

2. Jeg vil gerne lave en knap, som kører en makro, der kan åbne en skabelon for et brev til kunder og/eller potentielle kunder, både en knap til enkelvist at forfatte et brev og en knap til en skabelon, der laver brevfletning, meget gerne som en rapport (jeg har downloaded og installeret rapportgeneratoren og er begyndt at bruge den.) Efterfølgende er det meningen at jeg skal kunne trykke på en knap, der skriver brevet/brevene ud, giver dem et navn, gemmer dokumentet og sætter den enkelte modtager sammen med en henvisning til dokumentet i en tabel. Kan man det?

3. Jeg har lavet en rapport, der udskriver regninger for den seneste måned til hver enkelt kunde. Her oplistes de udførte opgaver efter dato under gruppering efter kundenummer, men jeg kan ikke finde ud af, hvordan jeg får lavet en sammenregning af de udførte opgaver, så der kan stå det samlede regningsbeløb som en total for hver kunde. Hvordan gør man det?

4. I access (microsoft-databasen) kan man sætte felterne efter hinanden ved at bruge funktionen '=trim' Er der en tilsvarende kode i OpenOffice og i så fald hvilken? Og hvordan ser syntaxen ud?

5. Jeg kan ikke finde ud af at lave en forespørgsel, som opretter en tabel eller indsætter data i en allerede eksisterende. Ej heller kan jeg finde ud af at lave en forespørgsel, som sletter en tabel eller data i en tabel. Kan man slet ikke det?

Det var vist nogenlunde det, men det er vel også ganske rigeligt?

mvh.

Per
Foholdsvis ny bruger af Openoffice på openSUSE (stationær PC) samt på Vista (bærbar PC)

holbo
Posts: 4
Joined: Tue Mar 25, 2008 23:22
Location: Rask Mølle
Contact:

Løsning på pkt. 3

Post by holbo » Fri Mar 28, 2008 10:36

Jeg har nu arbejdet videre emd emnet og fundet en løsning på et af mine problemer.

Spørgsmålet går på, hvordan man får lavet en sammenregning på en rapport af de poster, som hører til en bestemt gruppering. Løsningen, jeg har fundet, er at opsætte yderligere to forespørgsler. Den ene er en sammenfatningsforespørgsel lavet ud fra forespørgselsguiden. Den producerer så en forespørgsel med lige så mange poster, som der er i det datafelt, som udgør grupperingen i rapporten. Den anden forespørgsel sammenkæder resultatet fra denne nye forespørgsel med samtlige poster i den ande forespørgsel, sådan at jeg ender ud med en forespørgsel, der har både posterne i feltet samt en sammenregnin af alle posterne for det samme felt.

Lad mig give et eksempel:

Antag en tabel med felterne "kundenummer" "bestilte_varer" og "varepris"

kundenummer er en autofunktion i integer, dvs. et fortløbende nummer som databasen automatisk skriver ind for hver gang du tilføjer en post

bestilte_varer er et felt, som indeholder navn på en bestilt vare, f.eks. "herresokker_str_44"

varepris er prisen på den vare, som er bestilt, f.eks kunne det her være 20

Nu vil jeg så lave en regning og har derfor brug for at samle prisen for alle de varer, som en bestemt kunde har bestilt. Det gør jeg ved en sammenfatningsforespørgsel således:

klik på ikonet "forespørgsler" og dernæst på linien "brug guide til at oprette forespørgsel"

Nu dukker så vinduet op for forespørgselsguiden og du vælger den tabel, du skal bruge. Her kunne det være "bestillinger"

Så vælger du felterne "kundenummer" og "varepris" og trykker dem ind fra venstre liste og ind på højre ved hjælp af de knapper, der sidder mellem de to lister og trykker derefter på knappen "næste"

Så skal du vælge stigende sortering efter feltet "kundenummer" og trykke næste.

Så dukker søgebetingelser op. Her skal intet foretage dig, men blot trykke "næste"

Nu vælger du så sammenfattende forespørgsel. På rullevinduet "sammenfattende funktioner" vælger du "hent summen af" og på rullevinduet "felter" vælger du "varepris."

Kør forespørgslen (her kunne man vælge at gemme forespørgslen under navnet "sammenregning af priser"

Derefter kæder du blot denne forespørgsel sammen med den oprindelige tabel, således, at felterne "kundenummer" i hhv. tabel og forespørgsel hænger sammen. Join skal være således, at forespørgslen medtager alle poster fra "bestillinger" og kun de poster fra "sammenregning af priser" hvor kundenummeret passer sammen. Vi kan kalde denne nye forespørgsel: "regningsforespørgsel"

Rapporten laves derefter i rapportdesign (hvilket betinger, at du har downloaded den extension, som hedder "rapportgenerator" - den findes på openoffice.org) med "regningsforespørgsel" som kilde og kundenummer som gruppering.

Nu kan du så indsætte kundenummeret i gruppehovedet, bestillingsdataene i detaljer og summen i gruppefoden. Vupti - du har nu lavet en regning (her kan det selvfølgelig være en god idé også at have navn, adresse, postnummer m.v. med i hovedet og det gør man i den oprindelige tabel)

mvh.

Per
Foholdsvis ny bruger af Openoffice på openSUSE (stationær PC) samt på Vista (bærbar PC)

holbo
Posts: 4
Joined: Tue Mar 25, 2008 23:22
Location: Rask Mølle
Contact:

Næste problem løst - men vist en stormP-løsning

Post by holbo » Sat Mar 29, 2008 1:21

Ved punkt 4 skrev jeg om et problem med at trimme data, så det ser lidt mere elegant ud. Lad mig give et eksempel:

Jeg vil lave en rapport med navn og adresse, men når jeg bruger rapportgeneratoren er længden på de forskellige poster for det enkelte ikke den samme. Derfor kommer rapportens, dvs. brevets modtagerfelt til at se sådan ud:

Jens Adamsen
Hovedvejen 47
7100 Vejle

Og jeg vil jo helst gerne at det ser sådan ud:

Jens Adamsen
Hovedvejen 47
7100 Vejle

Jeg må derfor sammenstille data, så det står pænt. På access er der en funktion, som hedder trim og syntaksen ser nogenlunde sådan ud (det skal bemærkes, at jeg ikke husker den præcise syntaks, men det er mere for at give et billede af, hvad jeg mener):

=trim "[fornavn]" & " " & "[efternavn]"

Denne funktion tager feltet "fornavn" og indfører derefter et mellemrum og derefter igen feltet "efternavn"

Imidlertid lader det ikke til at OpenOffice.Base har denne funktion, men jeg fandt en anden løsning:

Jeg laver i tabellen ganske enkelt et felt, der hedder "mellemrum" og gør det til et felt, hvor der automatisk for hver post indføres et mellemrum som data.

Så laver jeg en forespørgsel, hvor jeg tilføjer et felt, der hedder "fornavn" + "mellemrum" + "efternavn" med alias "navn" og bruger denne forespørgsel som grundlag for min rapport.

Nu glæder jeg mig så til at se, om der skulle være nogen derude, som overhovedet læser mine indlæg, for selv om det da altid er en fornøjelse selv at kunne løse sine problemer, så ville det da være rart med et skub i den rigtige retning.

Især fordi noget tyder på, at netop HowTo er en mangelvare i Base.

mvh.

Per
Foholdsvis ny bruger af Openoffice på openSUSE (stationær PC) samt på Vista (bærbar PC)

Post Reply

Who is online

Users browsing this forum: No registered users and 2 guests