Avatar billede joab Nybegynder
29. august 2001 - 11:50 Der er 4 kommentarer og
1 løsning

Udskrive delsektionen i en rapport x antal gange afhængig af post.

Jeg har eksempelvis en tabel der der indeholder følgende felter:

Navn, Adresse, By, UdskrivAntal

Når jeg så skal udskrive dem vil jeg have hver etiket udskrevet det antal gange som er angivet i feltet UdskrivAntal.

Eks:

Hans, Husvej 10, København, 3
Ole, Gadevej 4, Odense, 1
Ulla, Minvej 1, Århus, 2

Ovenstående skal komme med følgende i rapporten:

Hans, Husvej 10, København
Hans, Husvej 10, København
Hans, Husvej 10, København
Ole, Gadevej 4, Odense
Ulla, Minvej 1, Århus
Ulla, Minvej 1, Århus

Jeg vil helst der hen ad hvor delsektionen gentager sig selv \"UdskrivAntal\" gange.

Er der nogle der kan hjælpe med dette?
Avatar billede hugopedersen Nybegynder
29. august 2001 - 15:23 #1
Jeg lavede selv noget lignende en gang for længe siden, og da kom jeg til den konklusion at den eneste måde at gøre dette på er ved at lave en ekstra tabel hvor du overfører hver enkelt record x antal gange og så bruger denne tabel som recordsource for din rapport.

Hvis du er interesseret, kan jeg godt se om jeg kan grave et eller andet frem.

Send evt. en besked på mail@hugopedersen.dk
Avatar billede jens-peter Nybegynder
29. august 2001 - 17:10 #2
Jeg er helt enig med den forrige taler. Den eneste løsning er at lave en temporær tabel. Der er dog ingen grund til at lave en ny tabel, hvor alle informationer gemmes det antal gange, man vil have dem udskrevet.

Jeg går ud fra, at du i din tabel har en primær nøgle (ID), og du kan så bare oprette en temporær tabel, hvor denne nøgle angives det ønskede antal gange. Derefter kan denne tabel linkes med den oprindelige tabel i en forespørgsel, der anvendes som datakilde til rapporten.

Den temporære tabel (Tabel_ID) skal kun have et felt (type Long), og data kan fyldes i tabellen med denne kode (oprindelige tabel kaldes Tabel):

Sub dantabel()
  Dim rsIn As Recordset
  Dim rsOut As Recordset
  Dim ID As Long
  Dim I As Integer
  Set rsIn = CurrentDb.OpenRecordset(\"Tabel\")
  Set rsOut = CurrentDb.OpenRecordset(\"Tabel_ID\")
  While Not rsIn.EOF
    ID = rsIn.Fields(\"ID\")
    For I = 1 To rsIn.Fields(\"Antal\")
      rsOut.AddNew
      rsOut.Fields(\"ID\") = ID
      rsOut.Update
    Next I
    rsIn.MoveNext
  Wend
  rsIn.Close
  rsOut.Close
End Sub

Denne tabel kan så anvendes i en forespørgsel:

SELECT Tabel_ID.ID, Tabel.*
FROM Tabel_ID INNER JOIN Tabel ON Tabel_ID.ID = Tabel.ID;

Mvh/Jens-Peter
Avatar billede joab Nybegynder
30. august 2001 - 13:04 #3
Jens-Peter:
Tak for det detaljerede svar.

Du har ret, at min primære nørle hedder ID.

Men hvorfra skal jeg kalde koden?
Jeg prøvede at lægge den ind i et modul som en funktion, og så kalde denne i forepørgslen, men det virkede ikke rigtigt.

Jeg får \"Type mismatch\" i:
Set rsIn = CurrentDb.OpenRecordset(\"Tabel\")

Jeg bruger autonr. i ID så typen burte være rigtig.
Avatar billede jens-peter Nybegynder
30. august 2001 - 17:29 #4
Du skal have dannet den temporære tabel inden du kører forespørgslen.
Det smarteste er nok at kalde funktionen fra hændelsen _OnLoad for din rapport, så tabellen dannes, når du åbner rapporten. Jeg har ikke prøvet det af, men det burde virke.

mvh/Jens-Peter

PS: Du skal huske at den temporære tabel (som jeg her har kaldt Tabel_ID) skal være oprettet i forvejen, og funktionen bør derfor starte med at slette indholdet i tabellen. Dertil kan du oprette en sletteforespørgsel, og så køre den med koden:

dim qry as QueryDef
DoCmd.SetWarnings false \' Undgå advarsel om at data slettes
Set qry = DB.QueryDefs(\"NavnSletteForespørgsel\")
qry.Execute
DoCmd.SetWarnings true
Avatar billede joab Nybegynder
17. september 2001 - 15:05 #5
Jeg vil ikke side det ovenstående er forkert, men jeg kan desværre ikke få det til at virke, men håber at finde en løsning inden længe.
Jeg skal nok lægge løsningen op når jeg finder den.
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