15. marts 2012 - 13:40Der 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?
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.
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.
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.
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.