08. februar 2005 - 20:39Der er
15 kommentarer og 1 løsning
Kopiere post til ny post, i fortløbende formular.
Når der er lavet en post i en fortløbende formular vil jeg gerne have en knap der ved tryk tager en kopi af posten, og derefter sætter de samme data ind i en ny post, hvordan gøres det? Jeg prøvede at generere en knap der kopierer posten, men den den kopierer kun tomme felter, uden data i. Hvis det kun er visse felter der skal kopieres, hvordan gøres det, der skal vel så defineres de feltnavne som skal kopieres?
Sæt egenskaben "Mærke" (Tag) til "Kopier" på de felter, som du ønsker skal kopieres.
Læg herefter denne kode på en knap:
Dim rs As DAO.Recordset Dim Ctrl As Control Dim ID As Long
ID = Me![Medlemsnr] DoCmd.GoToRecord , , acNewRec
Set rs = Me.RecordsetClone rs.FindFirst "[Medlemsnr] = " & ID For Each Ctrl In Me If Ctrl.Tag = "Kopier" Then Ctrl = rs(Ctrl.ControlSource) End If Next
2 steder skal koden tilpasses din database: de 2 steder, hvor der står "Medlemsnr" skal du indsætte dit eget nøglefelt.
Til Sjap: Jeg kan ikke få det database eksempel til at virke. der mangler vist et modul: basAutoFillNewRecords. Men ellers et guldkorn...
Til thomasjepsen: Det med "Sæt egenskaben "Mærke" (Tag) til "Kopier" på de felter, som du ønsker skal kopieres" må du gerne skære ud i pap, hvis du gider. Hvis det hjælper dig kan jeg fortælle at mit nøglefelt hedder "IssueID" og felterne der skal kopieres hedder: "produktID" og "Indlæsrecept" Som sagt er formularen fortløbende, og er bygget ud fra tre tabeller, hvor "produktID" stammer fra den ene, og er comboboks i formularen.
Du sætter "mærke" ved at kigge i egenskaben for hvert af de ønskede felter på formularen. Denne sættes altså til "Kopier" for de felter, som skal kopieres.
Dim rs As DAO.Recordset Dim Ctrl As Control Dim ID As Long
ID = Me![IssueID] DoCmd.GoToRecord , , acNewRec
Set rs = Me.RecordsetClone rs.FindFirst "[IssueID] = " & ID For Each Ctrl In Me If Ctrl.Tag = "Kopier" Then Ctrl = rs(Ctrl.ControlSource) End If Next
Jeg ved ikke helt hvordan knappen vil virke, når din forespørgsel er baseret på 3 tabeller. Men hvis du kan oprette posten manuelt i formularen, skulle det også virke med koden.
jn2300 Jeg kan køre eksemplerne uden problemer, og jeg kan ikke finde det modul du nævner. Det findes ikke i eksempeldatabasen, så vidt jeg kan se.
På den førstnævnte hjemmeside kan jeg dog se, at der er lavet et eksempel, hvor de bl.a. skriver en funktion, der hedder AutoFillNewRecord. Måske er det den du søger.
Desværre jeg kan ikke finde den, hverken under Aktive X objekter eller under funktionen Tilpas og ActiveX kontroller i værktøjslinien. Kan man hente den hos MS? Jeg har Access 2003
BRAVO! det var jo der den skulle findes! tak sjap!
Men den kode som jeg prøver fra thomasjepsen kommer nu op med: "Runtime error 3348 poster kan ikke tilføjes fordi joinnøglen til tabellen "tblIssues" ikke er i postsættet." Kan det være fordi formularen jeg vil kopiere, og derfor skrive i er filtreret?
Det, som fejlen siger, er at det felt, som du joiner med i tblIssues i forespørgslen mangler. Hvis du f.eks. joiener på ID, skal du have ID fra tblIssues med i forespørgslen.
Nu er jeg ny her i eksperten, fik du point Thomas? Forklaringen tror jeg, er at formularen er bundet til et anlægsID, på den pågældende computer, og kun viser anlæggets opgaver, og sorterer også på et andet felt så der kun vises visse emner. det gør tilsyneladende at formularen ikke umiddelbart bare kan tilføjes nye poster.. jeg får ikke lov til at skrive noget fra start, men må omkring en anden formular, indtaste noget der, lukke den og så opdateres den anden og så kan jeg udfylde resten... Nemt ikke? :-) Det virker men jeg kunne godt tænke det enklere, af hensyn til brugerne
Også god weekend herfra
Jan
Synes godt om
Ny brugerNybegynder
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.