15. november 2004 - 16:01Der 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 *****************************
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? :( :( :( :( :(
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?
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.
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...
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.