Avatar billede puppetmaster Nybegynder
11. november 2004 - 15:56 Der 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
Avatar billede supertekst Ekspert
11. november 2004 - 16:22 #1
Måske ville det være lettere at referere til regnearket via indeksnummer i stedet for arknavn ?

MVH
Avatar billede puppetmaster Nybegynder
12. november 2004 - 09:11 #2
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?
Avatar billede puppetmaster Nybegynder
12. november 2004 - 09:13 #3
Navnet på arket skal selvfølgelig opdateres vha. en variabel der først er initialiseret til Dag1 og som så opdateres for hver ny lossedato
Avatar billede supertekst Ekspert
12. november 2004 - 10:34 #4
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

Håber det kan inspirere...

MVH
Avatar billede Jørgen Kirkegaard Professor
16. november 2004 - 13:34 #5
Tag dig lige sammen. Dette spørgsmål er præcis det samme som http://www.eksperten.dk/561550
Avatar billede puppetmaster Nybegynder
09. december 2004 - 13:22 #6
Lukker igen
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