Avatar billede bnielsen Nybegynder
21. juni 2001 - 12:58 Der 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

På forhånd tak
Brian S. Nielsen
Avatar billede microtec Nybegynder
21. juni 2001 - 13:34 #1
Hvad er spørgsmålet?
Avatar billede hesko Nybegynder
21. juni 2001 - 13:52 #2
Hvorfor vil du lave det som en XAL kørsel, i stedet for en rapport?
Avatar billede jasman Nybegynder
21. juni 2001 - 14:50 #3
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

Avatar billede bnielsen Nybegynder
22. juni 2001 - 09:24 #4
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.

Håber det er til at forstå.

mvh
Brian
Avatar billede jasman Nybegynder
22. juni 2001 - 10:03 #5
Hej Brian,

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.

Det kræver noget mere programmering.
Avatar billede bnielsen Nybegynder
22. juni 2001 - 12:22 #6
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 ?
Avatar billede jasman Nybegynder
22. juni 2001 - 14:17 #7
Hej BNielsen,

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).
Avatar billede bnielsen Nybegynder
22. juni 2001 - 17:41 #8
Hej Jasman,

hvordan gør man det ? er det meget besværligt ?

mvh
Brian
Avatar billede hesko Nybegynder
25. juni 2001 - 08:48 #9
jeg fatter stadig ikke hvorfor du ikke laver det som en rapport. Hvad vil du gøre når du vil stoppe XAL-kørslen midt i kørslen??
Avatar billede bnielsen Nybegynder
25. juni 2001 - 09:44 #10
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.

/Brian
Avatar billede dma Nybegynder
29. juni 2001 - 09:56 #11
Opsamling i temporært kartotek:

#Macroload(TMP_FILE)
#MacroLoad(FUNCTIONS)

INT &TempId
INT &Count

#GetTempId(&TempId)

#DeleteAccountSum(&TempId)

#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

PAUSE
Avatar billede dma Nybegynder
29. juni 2001 - 09:59 #12
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!!
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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