Avatar billede frank_jensen Nybegynder
25. februar 2007 - 23:14 Der 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.

=IIf([Ændret af]<0;"Oprettet " & [Oprettet] & " af " & IIf([Oprettet af]<0;"Gæst";[Oprettet af]) & ".";"Oprettet " & [Oprettet] & " af " & IIf([Oprettet af]<0;"Gæst";[Oprettet af]) & " og ændret " & [Ændret] & " af " & [Ændret af] & ".")

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?
Avatar billede frank_jensen Nybegynder
25. februar 2007 - 23:15 #1
f.eks. kan den vise
Oprettet 07-02-2007 22:13:52 af Gæst og ændret 20-02-2007 16:37:45 af 6.

Det er '6' jeg gerne vil have oversat. Kan gøres med et simpelt select
SELECT [Full Name] FROM UserInfo Where [ID] = [Ændret af]
Avatar billede jesperthomsen Nybegynder
26. februar 2007 - 12:44 #2
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.
Avatar billede frank_jensen Nybegynder
26. februar 2007 - 17:32 #3
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"
Avatar billede frank_jensen Nybegynder
26. februar 2007 - 17:38 #4
og hvordan er det lige at jeg sætter værdien på en label og et felt? er der forskel?
Avatar billede jesperthomsen Nybegynder
26. februar 2007 - 18:34 #5
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
Avatar billede frank_jensen Nybegynder
26. februar 2007 - 20:19 #6
Det var jo lige hvad jeg havde brug for. for hjælpen
Avatar billede frank_jensen Nybegynder
26. februar 2007 - 20:39 #7
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?
Avatar billede frank_jensen Nybegynder
26. februar 2007 - 20:51 #8
hmm, funktionen bliver kaldt, men det er bare min label.caption der ikke opdateres...  nogen gode ideer til det? (mens jeg kigger videre)
Avatar billede frank_jensen Nybegynder
26. februar 2007 - 21:13 #9
opretter nyt spørgsmål, da det intet har med dette at gøre
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