19. december 2008 - 08:16Der er
14 kommentarer og 1 løsning
Kopiere en post
jeg har en lille udfordring med en database. Jeg har en formular, hvor data indtastes. Den består af nogle felter samt en indlejret formular, hvori der kan oprettes x antal poster. Jeg skal lave en funktion, der kan kopiere en post. Indtil videre har jeg gjort det ved at jeg gemmer alle data fra de enkelte felter i formularen, opretter en ny post og sætter data ind i de respektive felter. Mit problem er den indlejrede formular, som kan indeholde x antal poster. Hvordan kan jeg kopiere dem? Min kode indtil nu ser således ud: Private Sub KopierPost_Click() On Error GoTo Err_KopierPost_Click
Det er noget af en kode for at kopiere en post. Jeg plejer at bruge denne:
'Udfører kopiering, 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 End Sub
Jeg er på vej ud af døren og har ikke så meget tid, men det ser ud til at du har forskellige feltnavne i formularen, så hvad er nemmest: At kopiere posten og dermed alle felter og bagefter ændre nogle af felterne eller gøre som du gør.
M.h.t. underformularen, skal du sætte fokus på denne og i en løkke indsætte postene i en ny. Men det er lidt svært at komme med gode forslag, for hvis data fra underformularen er bundet til et felt i mainform og desuden kommer fra en anden tabel, kan jeg ikke se hvad nytte det er til, at kopiere dem.
Du har da helt ret i at din kode til at kopiere en post er meget enklere. Jeg er bare ikke lige sådan en haj til at programmere.
Underformularen er ganske rigtig bundet til et felt i mainform og kommer fra en anden tabel. Formålet med at kopiere den er, at undgå at skulle indtaste rigtig mange data flere gange.
Hej Mugs Jeg har brugt den kopieringskode du har angivet ovenfor med nogle små tilretninger - det virker helt perfekt. Men hvis jeg skal have kopieringen fra underformularen ind, hvor skal det så placeres og kan jeg bruge samme kopieringskode her? Min kode lige nu ser såldes ud:
Du bør også kunne bruge min kode til underformularen. Men du er nødt til først at sætte fokus på denne og stdig i en løkke fordi underformularen kan indeholde flere poster. Men jeg ville nok bruge en insert (Tilføjelsesforespørgsel) da der jo kan komme problemer fordi du jo skal gå til en ny post og derefter tilbasge til den post du kom fra + 1.
Jeg er kommet lidt videre - min kode ser således ud, men jeg får en fejl om type mismatch som jeg ikke rigtig kan placere. det vedrører den sidste insert.
Private Sub KopierPost_Click() ' den aktivitet jeg kopierer fra strevnr1 = aktivitet_id
Fejlen "type mismatch" kommer typisk, når du prøver at sammenligne alfanumeriske data med numeriske, eller prøver at indsætte alfanumeriske data i et numerisk felt. Du bør også efterse dine variabler at de er døbt korrekt.
I tabellen uaktivitet har jeg følgende 4 felter: uaktivitet_id - langt heltal aktivitet_id - langt heltal Satsnr - langt heltal årselevtimer - dobbelt reelt tal
Jeg har prøvet at definere de to variable således: Dim strevnr1 As Double Dim strevnr2 As Double (har også prøvet med Integer)
men fejlen kommer stadig.
De angiver også om variablerne er døbt korrekt. Hvad kan der være galt der?
Betyder netop at du har døbt (erklæret) dine variabler som Double altså numeriske værdier. Hvis du prøver at sammenligne disse værdier med andre variabler som f.eks alfanumeriske (String), vil du få din skitserede fejl.
Det tror jeg ikke såfremt feltet har en værdi der eksisterer i fremmedtabellen eller egenskaben BegrænsTilListe er sat til nej. Men lav dog en testdb og prøv.
Det var et spørgsmål om hvornår jeg definerede variablen strevnr2. Jeg stod i den gamle post da jeg definerede den og skulle stå i den ny.
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.