21. juni 2001 - 12:58Der er
11 kommentarer og 1 løsning
XAL - programmering
Jeg ved ikke om det er det rigtige område, men jeg prøver. Jeg kunne godt tænke mig lidt konkret hjælp til at oprette en lille xal-kørsel, funktionen skal være følgende: DebInvJour skal gennemsøges for alle poster og sorteres efter debitornummer. Der skal laves en summation for hver debitor og udskrives til skærm. Udskrift til skærmen skal blot være \'kundenummer\', \'totalkøb\'. Formål: \'Salgsstatistik\' over hvad hver kunde total har købt indenfor det sidste år f.eks. Jeg ved der findes standardrapporter som tildels kan klare ovenstående, men... jeg vil gerne have det alligevel !. XAL-version 2,60 DK/UK
Med den lille modifikation at kørslen kaldes fra lokalmenuen i Debitor kartoteket og kunder viser total for EN debitor (ellers ville jeg også lave det som en rapport), så er her et forslag:
INT &TotalSales
WINDOW 78,1 AT 1,10 EXTERN DebTable IF DebTable.RowNumber THEN SET &TotalSales = 0 SEARCH DebInvJour USING InvaccountIdx WHERE Invoiceaccount == DebTable.AccountNumber #ADD(&TotalSales,DebInvJour.Invoiceamount * DebInvJour.Exchrate) END PRINT \"Totalt k›b kunde: \",DebTable.Name,\" - \",NUM2STR(&TotalSales,15,2,0,0) PAUSE ENDIF
Jeg har vist ikke forklaret mig tydeligt nok. Det jeg gerne vil er følgende: Kunde1 beløb Kunde2 beløb Kunde3 beløb Kunde4 beløb Altså alle poster fra én kunde skruet sammen til en total pr kunde, men alle kunder på den samme udskrift (en rapport er egentlig også ok, men den samme xal-kørsel kunne jeg bruge andre steder også, derfor xal-søgning.) Det næste bliver så at jeg vil have det sorteret efter omsætning, hvilken kunde købte for mest det sidste år, næstmest osv. Hvor mange kunder stod for 80% af firmaets omsætning.
du har jo allerede en rapport, som kan give dig totaler pr. kunde. ORDER / UDSKRIFTER / STATISTIK / SALGSSTATISTIK Her sætter du sorteringkriteriet til Kontonummer. Derefter går du ind i subtotaler og vælger Print subtotal (JA eller kryds) Kun total (JA eller kryds) og så taster du 1 i niveau feltet.
Herefter får du en rapport med totaler for hver kunde.
Sortering i omsætningsorden er noget mere tricky, da man her skal sortere på en beregnet værdi. Det kræver at man først beregner omsætning pr kunde, samler dette op i et temporært kartotek, og derefter baserer udskriften på dette.
Hej Jasman, vi er meget tæt på nu, det jeg gerne vil have er beregningen af \'omsætning pr kunde\' via en xal-kørsel. Hvordan får man skidtet til at: Søge alle data for én kunde addere disse i en variabel (eventuelt ?), udskriv variabel. Gå videre med næste kunde, addere alle data, og udskrive en total for næste kunde osv. Er det muligt ?
jamen du vil jo gerne sortere i omsætningsstørrelsesorden ikke ?
Så er du jo nødt til først at opsamle alle kunde og deres omsætning, og sortere det bagefter (sorteringen kan ordnes løbende hvis samtidig med opsamlingen hvis du anvender et temporært kartotek).
Læs lige min kommentar fra d. 22/06 2001 09:24:18, der skriver jeg så at en rapport egentlig også er ok, men jeg kunne godt tænke mig at anvende XAL-kørsels funktionaliteten til andre ting også, derfor - men en rapport er også ok.
#Window(30,1,10,10,\"Opsamler data\") SEARCH DebTable USING AccountIdx PRINT #StrLFix(DebTable.AccountNumber,10) AT 1,1 SEARCH DebInvJour USING InvaccountIdx WHERE Invoiceaccount == DebTable.AccountNumber AND Invoicedate >= MkDate(01,01,2001) AND Invoicedate <= MkDate(31,12,2001)
INTRODUCE TmpAccountSum[AccountIdx,&TempId,DebTable.AccountNumber] #ADD(TmpAccountSum.Balance01,#Amount(DebInvJour.Invoiceamount*DebInvJour.Exchrate,\'\')) #DbUpdate(TmpAccountSum) END END
#Window(50,20,1,1,\"Salgstotaler\") SEARCH TmpAccountSum USING AccountIdx ORDER BY Balance01,AccountNumber WHERE Session == &TempId PRINT #StrLFix(TmpAccountSum.AccountNumber,10), \' \',#StrLFix(DebTable[AccountIdx,TmpAccountSum.AccountNumber].Name,20),\' \',#StrLFix(#Num2Str(TmpAccountSum.Balance01),15) #ADD(&Count,1) IF NOT &Count MOD 20 THEN PAUSE ENDIF DELETE TmpAccountSum END
Hvis du også vil have et sammenligningsforhold med totalsalget, kan du samtidig med at der opsummeres i TmpAccountSum, opsamle tallet i en variabel:
#ADD(&TotalSale,DebInvJour......)
Under printning af poster fra TmpAccSum, kan du så lave sammenligninger med dette tal!!
Synes godt om
Ny brugerNybegynder
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.