11. november 2004 - 15:56Der er
5 kommentarer og 1 løsning
Overføre dag-til-dag data til regneark
Jeg er ikke helt klar over hvordan problemet skal beskrives, but here goes: Hver dag registrerer vi nogle paller, som tilhører et enkelt ordrenummer. Vores brugere har mulighed for at vælge et ordrenummer på en dropdown liste og skal så få overført data fra pallerne til et regneark. Det er der ingen problemer i. Sagen er bare at disse data skal overføres til bestemte ark i regnearket (workbook'en)! Jeg havde tænkt mig at køre en forespørgsel på tabellen, som henter alle paller som har det valgte ordrenummer. Disse data vil jeg overføre til regnearket, så de paller der "hører til" den ældste dato kommer på det første regneark ("Dag1"), de næstældste kommer på det næste regneark ("Dag2") og så fremdeles. Jeg kan dog bare ikke helt gennemskue hvordan det skal gøres, her er hvad jeg har indtil nu:
SQLString2 = "SELECT Sum(PalleKlade.PalleKlVaegtPrEnh) AS SumOfPalleKlVaegtPrEnh, Sum(PalleKlade.PalleKlAntalEnh) AS SumOfPalleKlAntalEnh, PalleKlade.PalleKlLosDato, Partiklade.PartiKlNr, Partiklade.PartiKlOrdrerNr FROM PalleKlade RIGHT JOIN Partiklade ON PalleKlade.PalleKlPartiNr = Partiklade.PartiKlNr GROUP BY PalleKlade.PalleKlLosDato, Partiklade.PartiKlNr, Partiklade.PartiKlOrdrerNr HAVING Partiklade.PartiKlOrdrerNr='" & Ordrenummer & "' ORDER BY Partiklade.PartiKlNr" Set rst2 = CurrentDb.OpenRecordset(SQLString2, dbOpenDynaset, dbSeeChanges) Set xlsheet = xlbook.Worksheets("Dag1") If rst2.EOF Then Exit Sub rst2.MoveFirst j = 7 While Not rst2.EOF j = j + 1 For i = 0 To rst2.EOF xlsheet.Cells(j, i + 9) = IIf(IsNull(rst2("SumOfPalleKlVaegtPrEnh")), 0, rst2("SumOfPalleKlVaegtPrEnh")) Next rst2.MoveNext Wend
ok, det VAR heller ikke helt godt forklaret! Der er ingen problemer med at ovreføre data til et bestemt regneark, uanset om det er vha. indeksnummer eller som i mit tilfælde vha. tekststreng definition. Problemet er at få lavet en løkke som gennemløber mine data og indsætter dem på de rette ark. Hvis alle pallerne er registreret den samme dag, kører ovenstående VBA fint: alle data indsættes på regnearket Dag1. Men hvis nu der er registreret data på flere forskellige dage, vil disse ALLE SAMMEN blive skrevet i Dag1 arket! Så hvordan skal koden se ud så jeg kan loope videre til næste ark?
OK - prøv at se på dette eksempel: Option Compare Database Option Explicit Dim db, opTab As Recordset, dag As Date, xlbook, xlsheet As Worksheet Private Sub OrdreNr_Enter() Dim f, x, aNr, rnr
openXLS
dag = 0 aNr = 1 rnr = 1
Set db = CurrentDb Set opTab = db.OpenRecordset("forespørgsel1")
For f = 1 To opTab.RecordCount With opTab If dag = 0 Then dag = .Fields(1) setiArk aNr, rnr, .Fields(1) Else If .Fields(1) <> dag Then aNr = aNr + 1 rnr = 1 dag = .Fields(1) setiArk aNr, rnr, .Fields(1) Else rnr = rnr + 1 setiArk aNr, rnr, .Fields(1) End If End If
.MoveNext End With Next f
opTab.Close db.Close End Sub Private Sub setiArk(aNr, rnr, data) Set xlsheet = xlbook.Worksheets(aNr) xlbook.Sheets(aNr).Activate xlsheet.Cells(rnr, 1) = CStr(data) 'test data = dato End Sub Private Sub openXLS() Set xlbook = GetObject("d:\KanDU\Eksperten_Paller\dag.xls") xlbook.Application.Visible = True xlbook.Parent.Windows(1).Visible = True End Sub
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.