Avatar billede avalon116 Nybegynder
15. april 2005 - 11:56 Der er 15 kommentarer og
1 løsning

form current

jeg har en hændelse som jeg gerne vil have skal ske, når jeg forlader en post for at indtaste en ny. Indtil videre har jeg brugt form current, men det giver nogle problemer med dubletter osv.
Er der en anden måde, jeg kan få hændelsen til at ske, nå den sker når jeg forlader den forrige post?
Avatar billede terry Ekspert
15. april 2005 - 11:59 #1
For current sounds like the one you should use,butit all depends on what you are trying to do?
Avatar billede avalon116 Nybegynder
15. april 2005 - 12:04 #2
det handler om at jeg har en formular hvor jeg gerne vil have at værdien i nogle af felterne bliver gentaget, når jeg indsætter en ny post.
Det er løst i et tidligere spm. ved at bruge noget DAO.
Men det giver mig problemer med at jeg risikerer at få dublerede poster. Det har jeg så tænkt mig at løse ved at bruge en midlertidig tabel til formularen. Herefter udvælges via select distinct til den rigtige tabel, så jeg kun får unikke poster med over. Men det betyder at jeg er nødt til at slette indholdet i den midlertidige tabel, inden jeg indsætter.
Derfor er den midlertidige tabel tom, når jeg begynder at indtaste i formularen. Og det giver problemer, fordi dao-koden jo vil finde forrige post, som er tom.
Avatar billede jesperfjoelner Nybegynder
15. april 2005 - 12:21 #3
Jeg synes det lyder som en lidt omstændig løsning du bruger der må jeg indrømme.
Når jeg skal have en formular til at opføre sig anderledes alene når der indsættes nye poster bruger nogle gange noget i stil med:

Sub form_current()
  If me.newrecord Then
    Me.feltnavn1=xx
    Me.feltnavn2=yy
    osv.
  End if
End sub
Avatar billede avalon116 Nybegynder
15. april 2005 - 12:43 #4
hvordan vil du få den til at forstå, at xx fra dit eksempel er værdien af den forrige post?
Avatar billede mugs Novice
15. april 2005 - 12:51 #5
Værdi fra sidste post i formen:

Dim rs As DAO.Recordset
If Me.NewRecord Then
Set rs = Me.RecordsetClone
rs.MoveLast
Me!felt3.DefaultValue = "'" & rs!felt3 & "'"
Me!dato.DefaultValue = "#" & rs!dato & "#"
Me!talfelt.DefaultValue = "" & rs!talfelt & ""
rs.Close
End If

Har du overvejet at gå ind i en errorhandler der opfanger fejlen?
Avatar billede jesperfjoelner Nybegynder
15. april 2005 - 12:51 #6
Man kan f.eks. bruge Dlookup hvis det ikke er for mange felter, men det rimelig hurtigt. Ellers et recordset.
Hvis nu data kommer fra tabel1 og tabel1's unikke nøgle hedder ID (autonummer).
Så kan dette måske virke (ikke testet):

Sub form_current()
  If me.newrecord Then
    Dim db as dao.database
    Dim rs as dao.recordset
    set db = currentdb
    set rs = db.OpenRecordset("SELECT * FROM tabel1 ORDER BY ID DESC")
    Me.feltnavn1=rs!feltnavn1
    Me.feltnavn2=rs!feltnavn2
    osv.
    set rs = Nothing
  End if
End sub


Hvis det kun er få felter kunne man også bruge:
Sub form_current()
  If me.newrecord Then
    Dim Max
    Max = Dmax("[ID]","tabel1")
    Me.feltnavn1=Dlookup("[feltnavn1]","tabel1","[ID] = " & Max)
    Me.feltnavn2=Dlookup("[feltnavn2]","tabel1","[ID] = " & Max)
    osv.
  End if
End sub
Avatar billede avalon116 Nybegynder
15. april 2005 - 12:52 #7
Ja mugs' forslag er det jeg allerede har i min formular. Men spørgsmålet går jo ikke på det.
Avatar billede jesperfjoelner Nybegynder
15. april 2005 - 12:54 #8
sorry, jeg så mig ikke for der. Havde travlt med at taste.
Avatar billede avalon116 Nybegynder
15. april 2005 - 12:54 #9
form current giver mig problemer, når den underliggende tabel ved opstart er tom
Avatar billede jesperfjoelner Nybegynder
15. april 2005 - 12:54 #10
6 sekunder for sent :-)
Avatar billede avalon116 Nybegynder
15. april 2005 - 12:55 #11
derfor vil jeg have, at den kun skal indsætte værdier fra forrige post, når jeg forlader en post
Avatar billede jesperfjoelner Nybegynder
15. april 2005 - 12:58 #12
Kan du bruge:

Sub form_current()
  If me.newrecord Then
    Dim db as dao.database
    Dim rs as dao.recordset
    set db = currentdb
    set rs = db.OpenRecordset("SELECT * FROM tabel1 ORDER BY ID DESC")
    If not rs.eof then
    Me.feltnavn1=rs!feltnavn1
    Me.feltnavn2=rs!feltnavn2
    osv.
    End if
    set rs = Nothing
  End if
End sub
Avatar billede avalon116 Nybegynder
15. april 2005 - 13:10 #13
Ja det virker faktisk
Avatar billede jesperfjoelner Nybegynder
15. april 2005 - 13:16 #14
så springer den det jo over, hvis recordsettet er tomt
Avatar billede avalon116 Nybegynder
15. april 2005 - 13:20 #15
nemmerlig
Avatar billede avalon116 Nybegynder
15. april 2005 - 13:29 #16
og tak forresten
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