Avatar billede bbkdk Seniormester
24. april 2007 - 15:04 Der er 7 kommentarer og
2 løsninger

Opret post og åbn formular i samme post

Jeg har en formular (Frm Modtagne Charteks) der er baseret på en forespørgsel (QueryModtagneCharteks).
I forespørgselens kriteriefelt er angivet [Indtast cvr] og posten med det angivne cvr.nr. åbnes herefter.

Når jeg opretter en ny post, har jeg en kommandoknap i formularen med følgede kode, der åbner en inputboks:

Private Sub Kommandoknap120_Click()
Dim Message, Title, Default, MyValue
   
    Message = "Inddatering af cvr"
      Title = "Opret selskab"
      Default = "Skriv cvr her"
    MyValue = InputBox(Message, Title, Default)
   
    DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO TblModtagneCharteks (cvr) VALUES ('" & MyValue & "');"
    DoCmd.SetWarnings True
   
    DoCmd.OpenForm "Frm Modtagne Charteks", , , "cvr = '" & MyValue & "'"
   
End Sub

Dette virker ok, idet der oprettes en post i tabellen TblModtagneCharteks.
Men den sidste del af koden bevirker, at forespørgslen køres igen, og det har jo den konsekvens, at jeg igen bliver spurgt om at angive et cvr.nr. Det er jo for så vidt i orden MEN:
Er der nogen mulighed for at åbne formularen direkte og gå til den nye post, uden at skulle skrive det samme cvr.nr. endnu engang.
Og lige til sidst: Ser den sidste del af koden ok ud? - jeg har altid haft det lidt svært med netop den syntaks.
Avatar billede mugs Novice
24. april 2007 - 15:25 #1
Når du har et kriterie [indtast cvr] i forespørgslen, kan du ikke komme uden om at den spørger efter en værdi.

Men du kan lave en søgerurine:

Dim vara As String
vara = InputBox(Prompt:="Indtast cvr.", Title:="Find cvr.", Default:="")
DoCmd.GoToControl "cvr"
DoCmd.FindRecord vara, acEntire, False, , True, acCurrent, True 

der finder et cvr i din formular. Du skal have et felt i formularen der hedder cvr eller ændre koden. Slet så [indtast cvr] i forespørgslen.
Avatar billede terry Ekspert
24. april 2007 - 17:00 #2
Why do you have a criteria in the query when you filter the form when you open it?
Remove the criteria in the query and your code should work as it is.
The INSERT will insert th evalue of MyValue into th etable and the form shoul dopen (filtered) using MyValue as the cvr
Avatar billede bbkdk Seniormester
24. april 2007 - 17:37 #3
Tak for svarene til jer begge - jeg vender tilbage i morgen fra arbejde, hvor det ligger på min pc.
Til Terry - det er fordi jeg altid anvender kriteriefeltet i forespørgslen til at finde de korrekte data - men det har givet mig problemer før, hvis jeg ønsker at blive i den samme post i formularen.
Til mugs - kan jeg så ikke bare anvende den samme kode som jeg har brugt til at genforespørge, og så anvende sætte den ind som hændelsen "Ved åbning" af formularen. Og så selvfølgelig rette INSERT til WHERE
Avatar billede mugs Novice
24. april 2007 - 17:47 #4
Jeg er ikke sikker på, at jeg forstår din sidste kommentar.
Hvorfor vil du oprette en post i tabellen med en inputbox? Du kan jo blot gå til formularens nye post og indtaste cvr. Det bliver jo lagret når du lukker formularen eller går til en anden post.
Avatar billede bbkdk Seniormester
25. april 2007 - 10:34 #5
Hej igen Mugs !!!
Det skal måske med, at der næsten altid arbejdes i oprettede poster, dvs. at der ikke er tale om masseoprettelse af sager (det sker ved en tilføjelsesforespørgsel).
Derfor er altid kun en post åben ad gangen (den der er angivet i [Indtast cvr]), dvs. at der kan ikke bladres mellem sider i enkeltformularen. Og derfor er feltet cvr sat til låst, således at et korrekt cvr ikke ved en fejl overskrives.
Var det ikke det, kan jeg godt se, at jeg bare kunne oprette en ny post.
Da mine kolleger ikke er fuldbefarne i Access, fungerer princippet med, at der altid navigeres til den ønsekde sag med kommandoknapper, der åbner dialogbokse eller inputbokse, rigtigt godt.
Undtagen på det (trods alt uvæsentlige) punkt, hvor der oprettes en ny post - for at få denne post åben for indtastning, køres forespørgslen igen - og så spørges der jo på cvr, dvs. at det samme cvr. skal indtastes i 2 bokse lige efter hinanden.
Så der er i praksis kun tale om en ren kosmetisk forbedring.
Og så en spøjs ting - jeg har sat formularens "tillad tilføjelser" til nej. Så er der nemlig ikke mulighed for at gå til en ny post. Men det har betydet, at den meddelelsesboks der eventuelt skal angive, at cvr er tomt, dvs. at nummeret ikke findes i tabellen, ikke kommer frem.
Men når "Tillad tilføjelser" rettes til ja, virker meddelelsesboksen korrekt - har I/du nogen forklaring på det?
ER det i orden, hvis jeg fordeler points med 20 til Terry og 80 til Mugs.
M.v.h.
bbkdk
Avatar billede mugs Novice
25. april 2007 - 11:01 #6
For ikke at overskrive et eksisterende cvr, kan du sætte feltets egenskab Locked til true, derved kan data ikke ændres. For at kunne indtaste en ny post, kan du sætte egenskaben locked til false således:

If Me.newrecord then
me!cvr.locked = false
end if

den måler så, om der er tale om en ny post, og er det opfyldt låses feltet op for indtastning. Du kan også benytte egenskaben Activated (eller begge) som gør, at markøren ikke kan "lande" i feltet.

Din sidste kommentar vedr. "tillad tilføjelser" skal lige vendes en gang.
point helt OK med mig.
Avatar billede bbkdk Seniormester
25. april 2007 - 13:15 #7
Hej Mugs !!
Hurraaaa ...det virker - specielt efter at jeg sat hændelsen Ved Udgang fra feltet CVR til Locked = True, således at feltet låses igen, efter at der er indtastet et nyt cvr.
Og hjælp - hvordan får jeg fordelt points - når jeg trykker på linket til selv at fordele, bliver jeg logget ud.
M.v.h.
bbkdk
Avatar billede mugs Novice
25. april 2007 - 15:00 #8
Ved Udgang fra feltet CVR til Locked = True

Det kan man selvfølgelig også gøre. Jeg plejer aldrig at gøre det, idet jeg jo ikke er færdig med at oprette en ny post.

Jeg ved ikke om der er fejl på eksperten m.h.t. til at fordele point. Men prøv lidt senere.
Avatar billede mugs Novice
25. april 2007 - 15:02 #9
Måske kan du få hjælp her:

http://expfaq.dk/?
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