Avatar billede puppetmaster Nybegynder
15. november 2004 - 16:01 Der er 4 kommentarer og
1 løsning

Sammenkæde data fra 2 tabeller

Nu har jeg prøvet snart sagt en hver kombination for at hente data fra mine tabeller, så det er de "rigtige" data der bliver repræsenteret, men uden held!

Fra mine 2 tabeller, tblPartier og tblPaller, skal jeg overføre data til Excel vha. VBA. Det er ikke svært at overføre tal fra den ene tabel til min Excel skabelon, men når der skal "Kryds-forespørges" eller hvad det hedder, går det galt.
Skabelonen består af 6 faner, "Dag1" til "Dag5" og "Total".
Data fra tblParti skal på fanen "Total", hvilket fungerer fint.
Dataene fra tblPaller skal på fanerne "Dag1" til og med "Dag5", AFHÆNGIGT af den registrerede dato, samt selvfølgelig indsættes på det rigtige sted i regnearket.

Eksempel på data i tabellerne
*****************************

tblPaller:

Købsordre    Partinr.    Antal Enh    PalleKlLosDato
KO020306      4325          30        15/11/2004
KO020306      4325          30        12/11/2004
KO020306      4325          30        15/11/2004
KO020306      4325          30        14/11/2004
KO020306      4325          30        17/11/2004
KO020306      4325          30        15/11/2004
KO020306      4332          27        14/11/2004
KO020306      4332          27        13/11/2004
KO020306      4332          27        13/11/2004


tblParti:
Partinr.    PartiKlOrdrerNr    Antal krt.    Kg
4325          KO020306          300      9000
4326          KO020306            0        0
4327          KO020306            0        0
4328          KO020306            60      1800
4329          KO020306            0        0
4330          KO020306            0        0
4331          KO020306            0        0
4332          KO020306            60      1800
4333          KO020306            0        0
4334          KO020306            0        0

Mine 6 ark i Excel skabelonen er stort set ens. Når jeg kører VBA koden, bliver alle data fra tblParti sat ind så de ligner ovenstående, dvs. fortløbende hvor alle Partinr. vises.
Ang. dataene fra tblPaller som skal på de andre 5 ark, så skal de sorteres på dato, så de poster der har den ældste dato kommer på "Dag1", næstældst på "Dag2" og så fremdeles. I ovenstående ses at der kun er data for 2 af partierne. dvs. at i ovenstående tilfælde skal første række i regnearket udfyldes med data fra tabeller, så en masse 0'ere i de rækker hvor der ingen data er, så data fra tabellen igen, partinr = 4332 og så igen 0'ere.
Hvordan gør man det? :( :( :( :( :(
Avatar billede Jørgen Kirkegaard Professor
16. november 2004 - 12:00 #1
Hvis jeg forstår det ret (for der er nogle upræcise ting i dit spørgsmål), så HAR du lavet de nødvendige queries? I så fald synes jeg, at du skulle kalde dem Query_Dag1, Query_Dag2, ... og eksportere dem til hvert sit excel-ark. Herfra kan du overføre til din Excel-skabelon, hvordan du end bærer dig ad med det. Har jeg misforstået noget?
Avatar billede Jørgen Kirkegaard Professor
16. november 2004 - 13:33 #2
Tag dig lige sammen. Dette spørgsmål er præcis det samme som http://www.eksperten.dk/spm/560383
Avatar billede puppetmaster Nybegynder
16. november 2004 - 13:41 #3
Ja, det er ret diffust, det ved jeg godt, håbede på nogle spørgsmål, som kunne hjælpe mig til bedre at forstå hvordan jeg skal gøre det jeg forsøger at gøre.
Nej, jeg har IKKE lavet de nødvendige queries, kun en enkelt, som henter data min tblParti tabel og sætter dem ind i regnearket "Total".
Den del af det ser sådan her ud:

  Set dbs = CurrentDb
  Set rst = dbs.OpenRecordset(SQLString, dbOpenDynaset, dbSeeChanges)
 
  xlsheet.Rows("1:1").Select
  If rst.EOF Then Exit Sub
  rst.MoveFirst
  xlsheet.Cells(3, 3) = rst("PartiKlOrdrerNr")
  xlsheet.Cells(4, 3) = rst("PartiKlRekviNr")
  xlsheet.Cells(2, 12) = rst("PartiKlForventetAnkomst")
  xlsheet.Cells(3, 5) = rst("Transportskib")
  j = 7
  While Not rst.EOF
    j = j + 1
    For i = 0 To rst.EOF
      xlsheet.Cells(j, i + 1) = rst("PartiKlNr")
      xlsheet.Cells(j, i + 3) = rst("PartiKlFabaadId")
      xlsheet.Cells(j, i + 2) = rst("PartiKlVareId")
      xlsheet.Cells(j, i + 4) = rst("Størrelse")
      xlsheet.Cells(j, i + 5) = rst("Fiskeart")
      xlsheet.Cells(j, i + 6) = rst("CARGO") / rst("PartiKlKgKrt")
      xlsheet.Cells(j, i + 7) = rst("PartiKlKgKrt")
      xlsheet.Cells(j, i + 8) = rst("CARGO")
      xlsheet.Cells(j, i + 9) = rst("PartiKlAntalKrtRea")
      xlsheet.Cells(j, i + 10) = rst("PartiKlKgIaltRea")
      If rst("PartiKlRvProeveOk") = -1 Then
        xlsheet.Cells(j, i + 13) = "x"
      Else
        xlsheet.Cells(j, i + 13) = ""
      End If
      xlsheet.Cells(j, i + 14) = rst("PartiKlMrkId")
    Next
    rst.MoveNext
  Wend


Nu vil jeg gerne "indflette" at data fra tblPaller bliver indsat på de 5 andre regneark (Dag1 til Dag5) i samme hug. I mit eksempel er der kun registreret paller hørende til 2 af partinumrene.
Regnearket "Total" ligner tblParti til forveksling, men jeg kan ikke finde ud af at få udfyldt de andre regneark i samme ombæring.
Jeg har prøvet at køre 2 løkker, men så kommer f.eks. Dag1 til at ligne:
Købsordre    Partinr.    Antal Enh    PalleKlLosDato
KO020306      4325          27        12/11/2004
KO020306      4332          27        12/11/2004

Dvs. der kommer ingen blanke rækker i regnearket, hvor der ingen værdier er.
Avatar billede puppetmaster Nybegynder
16. november 2004 - 14:07 #4
Hmmm... i det andet spørgsmål vil jeg bare overføre til arkene Dag1 til 6, i dette spørgsmål vil jeg koble den forespørgsel sammen med en anden, så det hele bliver afviklet i samme løkke. Har ikke fået (brugbart) svar på either...
Avatar billede puppetmaster Nybegynder
09. december 2004 - 13:19 #5
:(
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