08. april 2009 - 11:37Der 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
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
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.
="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.
"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.
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:
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.
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:
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.
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.
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]....
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.
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
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.
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.
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
Jeg ved ikke lige hvordan den skal tackles, men det er en interessant problemstilling.
Synes godt om
Ny brugerNybegynder
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.