Avatar billede porsager Nybegynder
07. oktober 2005 - 11:35 Der er 9 kommentarer og
1 løsning

Opret ny post ud fra eksisterende.

Hejsa.

Jeg har behov for at kunne oprette en ny post i en tabel ud fra en allerede eksisterende post, da nogle poster ligner hinanden og derfor gøres indtastningen hurtigere hvis halvdelen allerede står der. Jeg vælger posten i min tabel ud fra 2 combo box'e som jeg også fik hjælp til at lave her på eksperten.
http://eksperten.dk/spm/653174

Nu skal der så ud over at være en knap til at åbne den post man har valgt, så også være en knap til at oprette en ny post ud fra den man har valgt. Kan ikke noget VB, så ved ikke helt hvordan det skal gøres, er klar over funktionen dupliker post, men er ikke kommet længere. Nogen der kan hjælpe??

Mvh Rasmus Porsager
Avatar billede mugs Novice
07. oktober 2005 - 12:00 #1
Udfører kopiering af aktuel post, flyt til ny og indsæt i een arbejdsgang:

DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.GoToRecord acForm, "Form1", acNewRec
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPaste
Avatar billede mugs Novice
07. oktober 2005 - 12:01 #2
Koden indsætter du i den knap hvormed du vil oprette en ny post.
Avatar billede porsager Nybegynder
07. oktober 2005 - 12:14 #3
Jamen nu skal knappen jo befinde sig på den anden form hvor jeg vælger varen der skal laves en ny post ud fra.

den siger at formen (detaljer) ikke er åben hvis jeg kører knappen i formen (start).
Avatar billede mugs Novice
07. oktober 2005 - 12:33 #4
Kan du forklare lidt nærmere, jeg forstår ikke helt problemet:
"Jamen nu skal knappen jo befinde sig på den anden form hvor jeg vælger varen der skal laves en ny post ud fra."

Denne går til formularens (Form1) nye post:
DoCmd.GoToRecord acForm, "Form1", acNewRec

Når du bruger navnet på formularen (Form1) skal denne være åben, eller du skal åbne den først:
"den siger at formen (detaljer) ikke er åben hvis jeg kører knappen i formen (start)."

Denne kopierer den aktuelle post åbner en ny formular og indsætter den kopierede post:

DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.Openform "Formularens navn"
DoCmd.GoToRecord acForm, "Formularens navn", acNewRec
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdPaste
Avatar billede porsager Nybegynder
10. oktober 2005 - 10:06 #5
Hejsa. Jeg har nu prøvet at sætte det ind, men jeg får en fejlmeddelelse der siger:
None of the fieldnames you pasted onto the clipboard matches the field names in the form.

Så står der en lidt nærmere forklaring, men jeg kan ikke rigtig læse mig frem til hvordan jeg kan løse det.
Avatar billede porsager Nybegynder
10. oktober 2005 - 10:09 #6
Hmm, har lige forsøgt lidt igen.
Den kommer så op og siger at den ikke kunne indsætte i felterne og at den opretter et nyt table til de pastede informationer. I det nye table står der så CategoryID og Varenavn. Ved ikke om det er til nogen hjælp.
Avatar billede mugs Novice
10. oktober 2005 - 10:49 #7
"None of the fieldnames you pasted onto the clipboard matches the field names in the form."

Betyder, at du har kopieret en del felter der nu ligger i clipboard. Herefter prøver du at sætte den ind i en ny formular der ikke har samme feltnavne.
Hvis du f.eks. har et felt på den første formular du kopierer, så vil Access jo prøve at indsætte data i den nye formular's felt1, men hvis ikke der findes et felt1, vil du få en fejl.
Altså: Begge formularer skal indeholde samme felter. Det er muligt at omgå dette ved at oprette en række variabler eller køre en SQL der sender data ind i formularen selv hvis disse har forskellige feltnavne.

"CategoryID og Varenavn"
Er "CategoryID" tabellens primære nøgler, eller er det indekseret så der ikke tillades dubletter.

Den kode jeg har sendt tidligere fungerer idet den er afprøvet også her på eksperten, men det forudsætter at formularerne har samme feltnavne.
Kan du give nærmere oplysninger om hvad du egentlig prøver på, og hvordan dine formularer / tabeller er skruet sammen. Evt. kan du sende db til:

mugs@mail.dk

Så vil jeg se på den ved først givne lejlighed. Husk evt. at zippe den.
Avatar billede porsager Nybegynder
10. oktober 2005 - 12:06 #8
Jeg har sendt databasen til din mail. Det er nok nemmere at se hvor jeg vil hen hvis du kigger I den ja.
Avatar billede porsager Nybegynder
11. oktober 2005 - 08:23 #9
Hej Mugs. Jeg har kigget lidt på den database du sendte, og den gør ikke lige det jeg søger. Min ide var at kopien skulle være fyldt ud med alt data fra den valgte post. Derimod brugte jeg koden du sendte i første omgang og lavede lidt om på den. Jeg har nu gjort det sådan at den først åbner den valgte form, og derefter så kopiere alt data i den, så opretter den en ny, og så paster jeg alt data til den. Det fungere fint, udover en meddelelse helt til sidst hvor acces siger at man har tilføjet en stor datamændge til  udklipsholderen og om man vi sætte det ind? Er der en måde at slippe for den?

(koden ser nu sådan ud til knappen):
    Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "detaljer"
   
    stLinkCriteria = "[Varenavn]=" & "'" & Me![Products] & "'"
    DoCmd.OpenForm stDocName, , , stLinkCriteria
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "detaljer", acNewRec
    DoCmd.RunCommand acCmdSelectRecord
    DoCmd.RunCommand acCmdPaste
Avatar billede mugs Novice
11. oktober 2005 - 11:09 #10
Når jeg bruger den kode får jeg ikke meddelelsen om udklipsholderen. Jeg har herller ingen erfarin med at fjerne den. Ideen med koden er, at du allerede står i formularen "Detaljer" og kopierer den aktuelle post og indsætter den som en ny post. Det må have noget at gøre med, at du flytter data fra en formular til en anden.

Du åbner jo "Detaljer" og søger efter en eksisterende post med denne linie:

DoCmd.OpenForm stDocName, , , stLinkCriteria

Derefter kopierer du denne post og indsætter den som en ny post. Så du har en arbejdsgang mere en jeg har.

Du kan evt prøve at oprette nogle variabler:

Dim VARa as string, Varb as string o.s.v.
VARa = Me!feltnavn
VARb = Me!andet feltnavn
o.s.v.
DoCmd.GoToRecord acForm, "detaljer", acNewRec
Me!feltnavn = VARA
Me!andet feltnavn = VARb
o.s.v.
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