27. januar 2009 - 14:21Der er
4 kommentarer og 1 løsning
Kopiere post og ændre feltindhold
Jeg er ved at lave et lille regnskabsprogram med en kassekladde.
I den forbindelse ønsker jeg at kopiere en post til næste post, og derefter ændre indholdet i 2 af felterne i den nye post, nemlig "Kontonummer" og "Beløb"
Jeg har fundet nedenstående kode i en tidligere besvarelse på Eksperten, og den fungerer perfekt, således at posten kopieres ved klik på en kommandoknap.
Dim rs As DAO.Recordset Dim Ctrl As Control Dim varDataID As Long
rs.FindFirst "DataID = " & varDataID For Each Ctrl In Me If Ctrl.Tag = "Kopier" Then Ctrl = rs(Ctrl.ControlSource) End If Next DoCmd.RunCommand acCmdSaveRecord Me.AllowAdditions = False
Men hvordan får jeg ændret feltindholdet i "Kontonummer" og "Beløb" i den nye post. Kontonummeret skal altid være et bestemt tal (9000). Beløbet skal svare til beløbet i den kopierede post, bare med omvendt fortegn (det er vist noget med at gange tallet med -1, så skulle fortegnet vende).
Teknologi, AI og forretning er i centrum på Computerworlds Cloud og AI Festival i København d. 18. og 19. september. Se hele programmet for den store konference om strategisk brug af Cloud og AI på: www.cloud-festival.dk
Hej Mugs !!! Det virker næsten perfekt - men når jeg kører proceduren, kommer der en fejlmelding: "Hvis du vil foretage ændringer i dette felt, skal du først gemme posten" Og så bliver "Kontonummer" ikke sat til 9000, men er uændret - derimod bliver resten af posten inkl. "Beløb" korrekt sat ind. Debugger jeg, viser den, at der er en fejl i Me.Kontonummer = 9000. Forklaringen på fejlmeddelelsen lyder: This error occurs when the user is trying to edit a row based on a view or stored query that is based on more than one table. Og det er korrekt, at forespørgslen til formularen indeholder data fra 2 tabeller. Nemlig feltet "Kontonavn" der hentes fra tabellen "Konti" og som er afhængig af værdien i feltet "kontonummer". Har du en løsning på dette forhåbentligt sidste problem? M.v.h. Knud NB - hvis du har et svar, vender jeg tilbage hurtigst muligt. Det er dog muligt, at det først bliver i morgen aften, jeg får mulighed for at prøve en eventuel løsning.
Du indsætter blot den samme værdi, men måske skal den have en værdi, da den er afhængig af kontonummer. Da kontonummer altid skal være 9000, kan det også være, at du skal give konti en værdi svarende til værdien i kontonummer.
Hej Mugs !! Den siger stadig det samme - når jeg har lavet en autopostering, bliver markøren flyttet til det første felt i den oprettede post.. Jeg kan heller ikke manuelt rette "Kontonummer", før jeg har været ude af posten og er vendt tilbage igen.
Men jeg har ændret koden således, og nu virker den perfekt:
Det er vist den mest uelegante afslutning på en kode, der har været vist i Eksperten, så har du en bedre og mere korrekt løsning, vil jeg naturligvis gerne have den. Det må være noget med en kode for at gemme posten i stedet for at skifte mellem linierne for gemme.
Tak for point - Det er ikke alle koder, der er lige elegante, men det vigtigste må være, at skidtet fungerer. Hvis du vil prøve at lagre den nye record, kan du prøve flg. der lagrer en indtastning (record):
docmd.RunCommand acCmdSave
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.