Avatar billede axn Nybegynder
05. juli 2004 - 17:15 Der er 12 kommentarer og
1 løsning

selektere i felt fra en form over til felt i en underform

En form med feltet [SAP-EntreprNr] er tilknyttet en underform, hvor [SAP-KontraktNr] er nøglen. I underformen skal kunne oprettes dataposter hvor feltet [KontraktNr] indgår. [SAP-EntrepriseNr] indeholder f.eks. værdien N-0451062091. Når jeg opretter en post i underformularen skal den indsætte en standardværdi i [KontraktNr]. Standardværdien dannes på følgende måde: Fra [SAP-EntreprNr] hentes talkarakteren 4510 og indsættes i feltet KontraktNr, dvs. tal nr. 4 -7 fra venstre samtidig med  talkarakteren 20, dvs. tal nr. 9 - 10. De to delværdier skal altså indsættes som en standardværdi med den sammensatte værdi 4510.20. Der *skal* være et punktum imellem! (dvs. det er et tekstfelt). Har prøvet med Mid([SAP-EntrepriseNr],4,4) osv. men det gir ikke den rigtige indsætning. Brugte koden fra spm. 515534 men det er pt. ikke gået godt. 
Hjælp ...
Avatar billede axn Nybegynder
05. juli 2004 - 17:17 #1
Fejl i 2.linie: nøglen mellem form og underform skal være [SAP-EntrepNr]!
Avatar billede mugs Novice
05. juli 2004 - 20:23 #2
Jeg har ikke afprøvet dette:

Dim a As String, b
Me.Parent!SAP-EntreprNr.SetFocus
a = Mid([SAP-EntreprNr], 4, 4)
b = Mid([SAP-EntreprNr], 9, 2)
Me.KontraktNr = a & "." & b
Avatar billede axn Nybegynder
06. juli 2004 - 08:56 #3
jeg prøver flg. men den fejler med at den ikke kan SetFocus.
(Er i tvivl om det skal ind på BeforeUpdate):

Private Sub EntrepriseKontraktNr_BeforeUpdate(Cancel As Integer)
Dim a As String, b
    Me.Parent![SAP-EntreprNr].SetFocus
    a = Mid([SAP-EntreprNr], 4, 4)
    b = Mid([SAP-EntreprNr], 9, 2)
    Me.[KontraktNr] = a & "." & b
   
End Sub
Avatar billede mugs Novice
06. juli 2004 - 09:38 #4
Du kan ikke sætte fokus på et andet objekt, så længe dit felt ikke er opdateret i tabellen. Prøv at indsætte koden i AfterUpdate
Avatar billede axn Nybegynder
06. juli 2004 - 10:56 #5
Nu virker det med AfterUpdate - problemet er bare at koden skal indsætte værdien som en standardværdi, som jeg kan ændre. Hvis jeg gør det så ændrer den bare værdien tilbage til den værdi som koden indsatte, når jeg forlader feltet [KontraktNr]. Det må være en anden hændelse jeg skal bruge ?
Avatar billede mugs Novice
06. juli 2004 - 11:16 #6
Du indsætter en standardværdi således:
Me.KontraktNr.DefaultValue = "Hej"

Så prøv med:
Dim a As String, b
Me.Parent![SAP-EntreprNr].SetFocus
a = Mid([SAP-EntreprNr], 4, 4)
b = Mid([SAP-EntreprNr], 9, 2)
Me.[KontraktNr].Defaultvalue = a & "." & b
Avatar billede axn Nybegynder
06. juli 2004 - 11:58 #7
jeg er måske lidt besværlig... men koden viser ikke den indsatte værdi i feltet [KontraktNr]. Dvs. når jeg vil oprette en post i underformularen viser den ikke på forhånd den sammensatte værdi fra [SAPEntreprNr] som standardværdi, hvilket er meningen (i feltets egenskaber har jeg ikke sat noget under Standardværdi, da jeg regner med at koden skal sætte værdien ind). Hvis jeg nu opretter posten og selv skriver en værdi i [KontraktNr] f.eks. 4510.20, så indsætter den værdien 4510,2 som standard i næste nye post. Det er ikke så smart.
Avatar billede mugs Novice
06. juli 2004 - 13:17 #8
Besværlig og besværlig alt er jo relativt :o)

Det du gør fejl er, at du ikke indsætter koden det rigtige sted. BeforeUpdate er som udtrykket siger en hændelse der indtræffer FØr tabellen bliver opdateret. AfterUpdate EFTER tabellen opdateres.

Nu vil du have en hændelse der indtræffer, når du opretter en ny post. Når du opretter en ny post trykker du på ikonet for opret og formularen skifter til den nye tomme post. D.v.s. at koden skal gennemløbes, når formularen skifter post eller opnår en status der hedder Current (VedAktuel). Prøv at indsætte koden i formularens Current.

Nu vil standardværdien blive indsat HVER GANG formularen skifter post. Og det var ikke meningen. Kun ved nye poster. Så kan du udvide koden med en betingelse, der fastslår om posten er en ny post, er den et gennemløbes koden:

If Me.NewRecord Then
Dim a As String, b
Me.Parent![SAP-EntreprNr].SetFocus
a = Mid([SAP-EntreprNr], 4, 4)
b = Mid([SAP-EntreprNr], 9, 2)
Me.[KontraktNr].Defaultvalue = a & "." & b
end if
Avatar billede mugs Novice
06. juli 2004 - 13:18 #9
Er du venlig at se på dette:

http://www.eksperten.dk/spm/517003
Avatar billede axn Nybegynder
06. juli 2004 - 13:20 #10
Nu har jeg ændret koden til følgende:
Private Sub EntrepriseKontraktNr_Click()
Dim a As String, b, c
    c = Me.Parent![SAP-EntreprNr]
    a = Mid(c, 4, 4)
    b = Mid(c, 9, 2)
    Me.[EntrepriseKontraktNr] = a & "." & b
End Sub
----------------------------------------------------------
Dvs, hvis jeg nu opretter ny post i underformen og markerer feltet [EntrepriseKontraktNr] så vises den sammensatte værdi som den skal.
Men med denne hændelse viser den så ikke værdien i feltet på forhånd, og det ville jo være det smarteste for brugeren. Kunne jeg opnå det så er løsningen helt OK.
Avatar billede axn Nybegynder
06. juli 2004 - 13:23 #11
vi har vist krydset hinanden her, tak jeg kigger på det.
Avatar billede axn Nybegynder
06. juli 2004 - 15:35 #12
til mugs... håber du fik dine point? tak for hjælpen - du fik mig ledt på rette vej.
Her er den kode jeg tror jeg vil bruge (og som virker):
Private Sub Form_BeforeInsert(Cancel As Integer)
Dim a As String, b, c
    c = Me.Parent![SAP-EntrepriseNr]
    a = Mid(c, 4, 4)
    b = Mid(c, 9, 2)
    Me.[EntrepriseKontraktNr] = a & "." & b
End Sub

...den virker helt som jeg gerne vil have det.
Avatar billede mugs Novice
06. juli 2004 - 15:39 #13
Jeg har fået point, tak.
Hvis skidtet fungerer efter din hensigt, så er alle vel glade.
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