08. oktober 2010 - 12:16Der er
12 kommentarer og 1 løsning
Låse formular på dagsdato
Hej
(Jeg har prøvet dette spørgsmåt før, men ikke helt fået løst mit problem)
Jeg har en formular, der laver en daglig rapport over fejl og mangler. Formularen åbner på dagsdato felt date(). Dagsdato felt er sat til ikke at tilade dubletter. Derved kan der ikke oprettes 2 rapporter på den samme dag.
Men.. Når jeg åbner formular, prøver access at lave en ny rapport, hvor det ikke er muligt at skrive. (Kommer med fejl meddelse, hvorfter man er nødt til lukke access ned).
Kan det lade sig gøre at første gang formual åbnes, laver den en ny "record", men resten af dagen åbnes formular direkte til redigering.
Du burde kunne anvende funktionen DCount til at tælle, om dags dato findes i tsbellen. Er DCount > 0 udføres en handling, er DCount 0 0 udføres en anden.
Du må undskylde, at jeg først vender tilbage nu. Jeg får først mail's flere dage efter kommentarerne er oprettede. Jeg vil programmere det i VBA og lægge koden i f.eks. formularens ved åbning. noget i stil med dette:
If DCount("*", "din tabel", "[dit datpfelt]= #" & Date & "#") > 0 Then Gør noget Else: Ellers gør noget andet End If
"Jeg har sat dato felt til altid at være : Date(), derved er dato felt altid større end 0. " Forstår jeg som om, at du har sat standardværdien for nye poster til at være = Date Så har du ret i, at min kode altid vil give resultatet > 0 Du kan prøve at fjerne din standardværdi.
"Kan det lade sig gøre at første gang formual åbnes, laver den en ny "record", men resten af dagen åbnes formular direkte til redigering"
En forudsætning er, at du fjerner standardværdi for nye poster, derefter indsæt denne i formularens VedÅbning:
DoCmd.GoToRecord acForm, "frm1", acNewRec If DCount("*", "din tabel", "[dit datofelt]= #" & Date & "#") = 0 Then Udskriv din rapport Else: MsgBox "Der er genereret en rapport idag. Databasen lukkes." docmd.quit End if
Prøv enten ved Open eller Load. Jeg har en dansk version, så jeg kan ikke lige huske mde engelske betegnelser. Men prøv dig frem.
Du bør undgå mellem rum idine objektnavne (Daily Report), der er en evig kilde til fejl. Ligeledes skal du passe på med objektnavne der kan fortolkes som reserverede ord (date)
Hvis feltet "planner" skal modtaget en værdi, er det ikke nødvendigt først at sende cursoren til feltet. Prøv at lege lidt med egenskaberne "Locked" og "Activatet". Uanset om feltet er låst og derved ikke kan modtage cursoren, vil det stadig reagere på Me.Planner = date(). Når du har indsat denne kodestump, er det jo ikke nødvendigt at sende cursoren til feltet, det eneste du opnår er jo, at du skal flytte cursoren til et andet felt.
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.