Avatar billede MortenGrue Nybegynder
15. marts 2012 - 13:40 Der er 5 kommentarer og
1 løsning

C5 XAL og indhentning af beregninger fra MS SQL Stored Procedure

Hej Eksperten

Jeg skriver til jer med et spørgsmål fordi jeg lige er blevet færdiguddannet Datalog og har fået mit første job, hvor jeg skal implementere noget Business Intelligenc (BI). Den primære del a dette er en dynamisk fastsættelse af varepriser på webshoppen, disse beregninger ligge lige nu hardcode, og meget statiske, i Macroer i C5, som så bliver brugt i en række XAL scripts.

Så mit mål er at få beregningerne ud af C5, og over på SQL Stored Procedures (sp_BeregnNyPris) - jeg har skrevet den første version af denne, men kan ikke finde noget dokumentation for hvordan jeg for XAL til at kommunikere.
Første del af sp_BeregnNyPris ser sådan her ud:

ALTER PROCEDURE [dbo].[sp_BeregnNyPris]
    @varenummer varchar(30),
    @producent varchar(30) = '',
    @dcspris numeric(24,12) = 0, --Sæt til -1 så beregnes @dcspris ud fra kostpris.
    @kostprisdkk numeric(24,12) = 0,
    @showselect bit = 0,
    ---Priser der skal returneres---
    @forhandler numeric(24,12) OUTPUT,
    @forcbc numeric(24,12) OUTPUT,
    @erhverv numeric(24,12) OUTPUT,
    @forhand2 numeric(24,12) OUTPUT,
    @compumail numeric(24,12) OUTPUT,
    @detail numeric(24,12) OUTPUT
AS BEGIN
------------------------------
Det jeg vil høre er om der er en måde at få de OUTPUT ind i C5 XAL? Eller skal jeg finde en anden vej?
Avatar billede mariaf Juniormester
19. marts 2012 - 14:58 #1
Du må jo have en grund til at lægge det i som SP, men hvilken? Nå skidt, det ændrer ikke noget.
Du har en tabel, InvenpriceGroup. Her har du de forskellige prisgrupper. I tabellen Invenprice har du så prisen på varen i de forskellige grupper. Tabellen består af varenummer, prisgruppe og prisen - og lidt ekstra, men det er de 3 felter, der er brugbare for dig, og her du kan hælde dit output ind.

Hvis der ikke er tilretninger omkring priser i C5, så skulle du være kørende med det.

Mvh Maria
Avatar billede MortenGrue Nybegynder
30. marts 2012 - 16:24 #2
Hej Mariaf

Jeg ville have det ud fordi jeg ikke har tålmodighed til at programmere i C5. Og jeg skal lave en mere intelligent pris fastsætning.

Jeg fandt en løsning som på ingen måde er effektiv, men som lige nu fungere godt nok:
INTRODUCE Lagpris[vareprisidx,%1,'Forhandler']
SET Lagpris.pris = str2num(SQLSelect("DECLARE @forhandler numeric(24, 12)"
+ " EXEC [dbo].[sp_BeregnNyPris]"
+ " @varenummer = '" + %1
+ "', @producent = '" + &producent
+ "', @dcspris = " + num2str(%2,-1,2,2,0)
+ ", @kostprisdkk = " + num2str(&kostprisdkk,-1,2,2,0)
+ ", @showselect = 0"
+ ", @forhandler = @forhandler OUTPUT"
+ ", @forcbc = 0"
+ ", @erhverv = 0"
+ ", @forhand2 = 0"
+ ", @compumail = 0"
+ ", @detail = 0"
+ " SELECT @forhandler GO"))
    UPDATE Lagpris 

Også ligger der bare en for hver "OUTPUT".

Men er gået videre, hvis jeg en gang skal tilbage til det så er det en optimering, så jeg ikke køre sp_BeregnNyPris med samme data 6 gange ^^ (så hvis nogle har en måde at gøre det på, så er points stadigvæk i spil.
Avatar billede mariaf Juniormester
31. marts 2012 - 09:11 #3
Læg en Search-løkke på prisgrupperne ud over :

Search Lagpris using VareprisIdx
...
End

Det kræver ikke meget tålmodighed - det tager vel 1 time sammenlagt, hvis du også skal lave et avancekartotek.

Mvh Maria
Avatar billede MortenGrue Nybegynder
31. marts 2012 - 18:31 #4
Tak, det vil jeg lige prøve at læse lidt om - viste ikke der var en sådan funktion i C5.

Mange tak for hjælpen.
Avatar billede mariaf Juniormester
31. marts 2012 - 22:36 #5
C5 er ikke anderledes end andre kodesprog.
Avatar billede MortenGrue Nybegynder
31. marts 2012 - 23:04 #6
Der er bare så mange afhængigheder internt, koden er så spræt og der er ingen oversigt over afhængigheder eller noget dokumentation. Og det system jeg arbejder på blev installeret for ca 15 år siden og siden da har over 10 programører arbejdet på det, uden at skrive en linjes kommentar.

Så der kommer mærkelige fejl i tide og utide - Derfor jeg har valgt ikke at bruge enerigen på at sætte mig ind i XAL og C5, men bare gør hvad jeg kan for at arbejde uden om det.
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