25. februar 2007 - 23:14Der er
8 kommentarer og 1 løsning
iif sætning, kan man lave select i dem?
Jeg har en database(sharepoint liste) der indeholder en dato for hvordan en række er oprettet og ændret, samt et ID der peger hen med en tabel UserInfo hvor navnet er registeret.
Det vil jeg gerne have vist som en linie med Oprettet XX-XX-XXXX af UserName, Ændret XX-XX-XXXX af UserName. Linien skal vises i en formular, hvor jeg har udpeget en enkelt record.
Ændringen skal kun være der, hvis Ændret_Af id'en er > 0 (Sharepoints måde at sige at den er ændret. hvis Oprettet_Af er mindre nul (Null) er brugeren 'Gæst'.
Har fået hekset nedenstående sammen der styre om Ændret-teksten skal vises, og som finder ud af om det er en Gæst.
Problemet er bare, at [Ændret af] og [Oprettet af] skal oversættes.
Så nu er spørgsmålet... 1. Når jeg køre min forespørgsel oversættes navnet korrekt. Det er kun når jeg arbejder i VB-delen at det er kodeværdien der er. Kan jeg få vist oversættelsen? 2. Hvis jeg ikke kan det, kan man så lave en select inden i en iif?
Jeg ville ikke engang prøve. Det er ikke til at finde hoved og hale i når man laver for store og komplekse iif. I stedet ville jeg lave en vba-funktion, som laver teksten.
Det har også den fordel at du kan gøre opslaget betinget af værdien og altså kun laver selve forespørgslen hvis der er grund til det og det vil give dig lidt bedre performance.
Nu er det heldigvis ikke et system der skal bruges meget, så performance er ikke noget problem, men jeg vil give dig ret i, at det bliver totalt uoverskueligt...
Men hvordan laver jeg en VBA-funktion? Eller rettere, kodningen er ikke problemet, men hvordan og hvordan skal den kaldes?
jeg har en delt formular med et detailbillede øverst, og en liste over rækker nederst. Feltet er et felt der så skal dannes når jeg vælger en forekomst på listen. Hvilken type hændelse er det?
Koden er vel ikke andet end DoCmd.RunCommand acCmdSelectRecord SQL bla bla bla Tekst57.Text = "Min tekst som den nu skal være"
Den hændelse du må være ude efter må næsten være OnCurrent, hvis detailbilledet altså er bundet.
Koden jeg ville lave ville, som pseudokode (jeg har ikke access på denne maskine, så det bliver ikke rigtig rent).
Private ChangedText(Created as date, CreatedBy as long, Changed as date, ChangedBy as long) as string
dim Creator as string dim Changer as string dim Sql as string
if CreatedBy = 0 then Creator = "Gæst" Else Sql = "Select * From Brugertabel where BrugerId = " & CreatedBy ' Åben recordset baseret på sql og find brugernavnet. end if
' Gentag med ChangedBy og sammensæt en komplet ændringstekst med datoer og navne og returner den.
Der er forskel på labels og felter. På et felt skal du bruge .text, på et label, skal du bruge .Caption
Ja virker og virker... Nu får jeg oversat den første forekomst i forespørgslen. Som sagt er det en delt formular, så jeg har alle rækker vist nederst, og kan vælge en af dem. Hvad hedder den hændelse når jeg gerne vil køre min kode når jeg skifter record?
opretter nyt spørgsmål, da det intet har med dette at gøre
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.