Avatar billede Seigan Nybegynder
08. april 2009 - 11:37 Der er 19 kommentarer og
1 løsning

IFF statement i forhold til en tabel

Hej eksperten

Jeg har et spørgsmål angående et statment i et tilbuds nummer system. Det skulle gerne ende ud i denne form: DKS0904S01.
- DKS er fast
- 09 er året, skal derved skifte ved hvert årsskift.
- 04 er måned, skal derved skifte ved hvert månedsskift.
- S er styret af hvilket distrikt tilbuddet hører til. S er for Sjælland/Fyn. J er for Jylland. Skal styres ved hjælp af valg i en tabel.
- 01 er et fortløbende nummer, der skal nulstilles ved hvert månedsskift. Gerne med 2 nummerrækker til henholdsvis Sjælland/Fyn og Jylland.

Dette er hvad jeg er nået frem til indtil videre:

="DKS" & Right(Year(Date());2) & Right("00" & (Month(Date()));2)
Dette virker, men jeg kan ikke få den til at skrive enten J eller S efterfølgdende
Avatar billede Seigan Nybegynder
08. april 2009 - 12:37 #1
Nu har jeg fået den til at håndtere J og S problematiken. Nu skal jeg bare finde en autogenerering og få den til at gemme det beregnede udtryk i tabellen.
Avatar billede mugs Novice
08. april 2009 - 12:55 #2
Hvis du arbejder i en form, kan du blot sætte tabellens felt = dit beregenende udtryk.

Hvordan sikrer du dig, at f.eks. månedsskiftet ikke opdateres hver gang du er inde på posten?
Avatar billede Seigan Nybegynder
08. april 2009 - 13:12 #3
indtil videre har jeg skrevet dette

="DKS" & Right(Year(Date());2) & Right("00" & (Month(Date()));2) & IIf([Distrikt]="1";"J";"S") & [Count] DEN SIDSTE KOMMANDO ARBEJDER JEG STADIG PÅ.

Jeg har tjekket med forskellige måneder og den ændrer sig ikke når jeg skifter.

Hvis jeg prøver at gå videre til næste entry får jeg at vide at en indeks eller en primær nøgle ikke kan indholde en Null-værdi.
Det tolker jeg som om at den ikke skriver det i den bagved liggende tabel.
Avatar billede mugs Novice
08. april 2009 - 14:02 #4
"Det tolker jeg som om at den ikke skriver det i den bagved liggende tabel."

Det tror jeg ikke du kan tolke på den måde. Når db skriver, at en PK ikke kan være Null betyder det jo, at du ikke har skrevet en værdi i din PK, og således vil posten ikke blive gemt i tabellen, men der måles jo på din PK.
Avatar billede Seigan Nybegynder
08. april 2009 - 14:12 #5
Jeg bruger kontrolelementkilde element til at skrive i. Skal det være standardværdien istedet?
Avatar billede mugs Novice
08. april 2009 - 14:29 #6
Din sidste kommentar forstår jeg slet ikke. Hvad mener du med at skrive i kontrolelementkilde og standardværdien?.

Du må ind i tabellen og undersøge hvilken PK du har og sikre dig, at denne er udfyldt, ellers vil værdien ALDRIG blive gemt i tabellen.
Avatar billede Seigan Nybegynder
08. april 2009 - 14:54 #7
Hej Mugs.

Lidt baggrundsinfo. Jeg har oprettet en Db med en række tabeller hvor der er forskellige relationer til. Dette virker som sådan godt nok. Der er en tabel som jeg kalder oversigtstabel, hvor alle data bliver samlet sammen til sidst. Min Primære nøgle (PK) er DKS-nummeret.
Jeg har så for at lave det hele lidt lækkert udarbejdet en formular, hvor mine kunder (læs kolleger) så kan indtaste deres data. Det er i denne formular hvor jeg har "kodet" alle de ting der skal lægges ind i den bagvedliggende tabel (læs oversigtstabel)
DVS at min PK er beregnet udfra hvad der bliver indtastet i formularen. Den kode jeg har sat ind i linien kontrolelementkilde (formular i designvisning -> egenskaber) er denne:

="DKS" & Right(Year(Date());2) & Right("00" & (Month(Date()));2) & IIf([Distrikt]="1";"J";"S")

Det den beregner, vil jeg gerne have til at at blive lagt som PK i tabellen, som det hele er bundet op til, altså oversigtstabel. Det gør den ikke.
For at være sikker på at der hele tiden er et unikt nummer skal der være et fortløbende nummer til sidst, som skifter til 01 når der har været månedsskift.
Avatar billede mugs Novice
08. april 2009 - 15:00 #8
Når du behandler et felt fra tabellen har dette felt som postkilde et felt fra tabellen. Det kan du se i formularens feltliste. Et felt kan jo kun have een postkilde, og hvis du taget et felt fra feltlisten, kan du jo ikke have anden kontrolelementkilde. Du må således arbejde med et ubundet felt fra værktøjskassen.

Hvis dett er korrekt, kan du i det ubundne felt lave en kode i BeforeUpdate, der overfører værdien til din PK i stil med dette:

Me.FELT FRA TABELLEN = DIT UBUNDNE FELT
Avatar billede hugopedersen Nybegynder
08. april 2009 - 15:25 #9
Der er så vidt jeg kan se i hvert fald 2 problemer i det her:

-dit udtryk skal være sat ind som standardværdi på feltet og kontrolelementkilden skal være dit felt fra tabellen.

-du checker på et felt om der står J eller S, men hvad nu hvis brugeren skifter fra J til S eller omvendt efter at du har nummereret? Så skal du jo give et nyt nummer.
Avatar billede Seigan Nybegynder
04. maj 2009 - 12:32 #10
Hej mugs og hugopedersen (og andre interesserede:) )

Jeg har haft travlt med andre opgaver, så projektet har ligget stille i en måneds tid.

kommandoen
Me.FELT FRA TABELLEN = DIT UBUNDNE FELT kan jeg ikke helt lure hvordan virker. Har prøvet at google det, men kan ikke rigtigt finde noget.

Jeg har nu lavet to felter. Et felt hvor den laver beregningen og et andet der opdaterer min PK udfra det første felt.
Jeg kan godt få dem linket sammen, men den opdaterer ikke når jeg ber om det.

koden på det første felt ser sådan ud idag.
=IIf([Distrikt]="3";"";"DKS" & Right(Year(Date());2) & Right("00" & (Month(Date()));2) & IIf([Distrikt]="1";"J";"S")).

Dvs. at den ikke genererer et nummer før at der er valgt et distrikt. Dette nummer bliver ikke opdateret til mit andet felt.
Avatar billede mugs Novice
04. maj 2009 - 14:03 #11
Me.FELT FRA TABELLEN = DIT UBUNDNE FELT

Du må jo arbejde med et ubundet felt, og sætningen betyder blot, at du sæter det felt du har i tabellen / formularen = det ubundne felt med postkilden Iff([distrikt]....
Avatar billede Seigan Nybegynder
05. maj 2009 - 12:27 #12
Jeg har to felter.
Det ene hedder beregningsfelt. Det er her beregningen forgår, se koden i min sidste kommentar. Denne kode har jeg sat ind i feltet kontrolelementkilde.

Det andet hedder DKS-NR.
Der har jeg sat et link op i feltet standardværdi "=[beregningsfelt]". Kontrolelementkilde er sat til DKS-nr, så der bliver skrevet noget i den bagvedliggende tabel.

Som du/i kan se i koden har jeg bedt beregninsfeltet være tomt hvis værdien i distrik er 3 (en standardværdi = vælg distrikt).

Mit problem er at mit dks-nr ikke bliver opdateret med det beregnede nummer, som bliver skrevet rigtigt nok i beregninsfeltet.
Avatar billede mugs Novice
05. maj 2009 - 12:44 #13
=IIf([Distrikt]="3";"";"DKS....

Som betyder:

At hvis feltet "Distrikt er = 3, så skal et andet felt være tomt. Ellers....

Så der skal ikke udfyldes med et DKSnr når betingelsen er opfyldt.
Avatar billede Seigan Nybegynder
05. maj 2009 - 12:56 #14
Når værdien i feltet distrikt bliver enten 1 eller 2, så er betingelsen opfyldt og der skal genereres et DKS-nr. Men ikke før. Samtidigt skal det genererede nummer overføres til den bagvedliggende tabel
Avatar billede mugs Novice
05. maj 2009 - 13:06 #15
Jeg tror stadig problemet skyldes, at du bruger et ubundet felt. Kan du sende din db som en .zip fil til:

mugs snabelting mail.dk

så ser jeg på det senere, (jeg skal lige have lavet noget af det jeg får løn for først)
Avatar billede Seigan Nybegynder
06. maj 2009 - 15:18 #16
Hej Mugs

Nu har jeg haft tid til at kigge på hvad du har lavet og kan godt se hvordan du har gjort. Takker yderst for arbejdet. Har dog lige et par spørgsmål.

Hvordan får jeg den til at skrive henholdsvis Jylland og Sjælland/Fyn istedet for tal i distrikt i FRM1
Og hvordan får jeg lavet en tæller til sidst der går tilbage til 01 ved månedsskift.
Avatar billede mugs Novice
06. maj 2009 - 16:07 #17
1. Se på dine relationer. Du ser at det er ID feltet (tal) der hentes ffra distriktstabellen og derfor også lagres i oversigtstabellen. Den skriver jo også tekst i distriktsfeltet nedenunder. Du kan godt manioulere således, at du ser både tal og tekst i når du vælger i comboen, men jeg dastholder, at du bør plukke distriktstabellens primære nøgle og lagre denne o oversigtstabellen.

Hvis du ser i min programmering vil du se, at denne måler på en numerisk værdi og ikke på en alfanumerisk.
Jeg sender dig lige en ny db.

Det med tæller der skifter sammen med månedsskifte, skal jeg lige se på senere.
Avatar billede mugs Novice
07. maj 2009 - 10:43 #18
Tak for point.
Avatar billede Seigan Nybegynder
07. maj 2009 - 11:34 #19
Ja det var da så lidt. Det spiller bare. Men du meget gerne kigge på mit tælleproblem. Når jeg googler ryger jeg hele tiden ind i autonummerering og det er jo ikke det jeg er ude efter
Avatar billede mugs Novice
07. maj 2009 - 12:53 #20
Jeg ved ikke lige hvordan den skal tackles, men det er en interessant problemstilling.
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
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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