Avatar billede lingo Nybegynder
31. maj 2005 - 11:12 Der er 12 kommentarer og
1 løsning

Handlingsprocedure søg, opret

Hejsa.
Jeg ville gerne have en function der gør følgende:

Når jeg trykker på ny post, skal der komme en ny post frem (ret simpelt). Her starter jeg med at indtaste kundenummer. Når det er indtastet skal den tjekke om det allerede eksistere og derefter gå til posten hvis det eksistere. Hvis det ikke eksistere skal den blive på den tomme post, og gå videre til næste felt.

På forhånd tak
Avatar billede mugs Novice
31. maj 2005 - 11:33 #1
Se evt. hvteknik's forslag i dette spørgsmål:

http://eksperten.dk/spm/462237
Avatar billede fynbohans Nybegynder
31. maj 2005 - 16:11 #2
Hvis du VBA søger efter en post og intet finder bliver du stående hvor du er(sidste del af dit spørgsmål).
Følgende søgning i en af mine egne baser virker:

Private Sub FINDTIT_AfterUpdate()
            [ID].SetFocus
            DoCmd.FindRecord [FINDTIT]
            [FINDTIT] = Null
            [FINDTIT].SetFocus
End Sub

Næstsidste linje nulstiller søgefeltet og kan slettes, hvis det du søger efter skal
blive stående.
Avatar billede lingo Nybegynder
15. juni 2005 - 11:05 #3
Nu er jeg desværre en rookie i VBA. Kan du uddybe?
På forhånd tak :o)
Avatar billede lingo Nybegynder
15. juni 2005 - 11:19 #4
Jeg har prøvet at gå ind i egenskaber under det felt hvor kundenummeret tastes. Herfra har jeg så gået ind i hændelse efter update, og lagt din private Sub;

Når jeg så skrive et kundenr. kommer der fejl i følgende linie:
[ID].SetFocus

Nogen gode forslag?
Avatar billede mugs Novice
15. juni 2005 - 11:42 #5
Har du et felt i formularen med navnet ID?
Avatar billede lingo Nybegynder
15. juni 2005 - 12:09 #6
Nej, jeg bruger ikke ID, jeg prøver at rette det til det korrekte (kundenummer)
Avatar billede lingo Nybegynder
15. juni 2005 - 12:11 #7
Nu går den så videre til næste linie:
DoCmd.FindRecord [FINDTIT]
og melder fejl?!?
Avatar billede mugs Novice
15. juni 2005 - 13:02 #8
FINDTIT er et feltnavn. Ret det til kundenummer.
Avatar billede lingo Nybegynder
15. juni 2005 - 14:11 #9
Har rettet det til kundenr., men der kommer stadig fejl. Hvis posten eksistere skriver den at det ville give dubletter og hvis den ikke eksistere vil den stadig ikke oprette den da den ikke vil tillade en null værdi?!? (og det var ikke 0 eller blank jeg havde skrevet)
Avatar billede mugs Novice
15. juni 2005 - 14:32 #10
Når du forsøger at oprette en ny post må formularen nødvendigvis stå i den tilstand hvor du opretter en ny post, altså en helt blank formular uden data.

Du har indsat koden i feltets AfterUpdate, hvilket vil sige, at koden først eksekveres efter at de nye data er sendt til tabellen, og hvis kundenummeret eksisterer vil du få fejlen med dubletter. Koden skal indsættes i feltets BeforeUpdate.
Jeg har ikke afprøvet koden.
Avatar billede lingo Nybegynder
15. juni 2005 - 14:43 #11
Jeg står på en tom post når jeg forsøger.

Vil du have at jeg omdøber koden så den hedder:
Private Sub FINDTIT_beforeUpdate()
Ved at gøre dette kan jeg slet ikke oprette en ny.
Avatar billede mugs Novice
15. juni 2005 - 14:46 #12
Kan du sende db til:

mugs@mail.dk

Så ser jeg på den senere. Husk at zippe den.
Avatar billede mugs Novice
15. juni 2005 - 21:06 #13
Db er modtaget, rettet og returneret. Flg. kode er indsat:

Private Sub Ordernr_BeforeUpdate(Cancel As Integer)
Dim VARa As Long
If Me.NewRecord Then
VARa = Me.Ordernr
If DCount("*", "HovedTB", "[Ordernr] =" & VARa) > 0 Then
MsgBox "Der er allerede poster med denne værdi."
Me.Undo
DoCmd.FindRecord VARa, acEntire, False, , True, acCurrent, True
Exit Sub
End If
End If
End Sub
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