15. april 2005 - 11:56Der 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?
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.
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
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
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
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.