Avatar billede illemann Novice
19. februar 2008 - 12:39 Der er 5 kommentarer og
5 løsninger

Kopier priser fra anden datafil

Jeg vil gerne kopiere kostpris fra et regnskab og til et andet.
I c5 har jeg en kommando der hedder DBchange med mode=temp
som hopper midlertidigt til andet regnskab.
Her kan jeg så sætte et qtx igang med udlæsning til en commafil, og efterfølgende læse den ind i det primære kartotek.
Eller er der en anden smart måde at hente en kostpris fra en andet regnskab.
mvh
Niels
Avatar billede mariaf Juniormester
19. februar 2008 - 19:50 #1
Jeg ville nok bare udlæse LagKart med varenummer og kostpris fra det ene til det andet. Husk at efterberegne lagervædi og check din opsætning. Det hjælper jo ikke meget at have kostpris, hvis den reguleres af et indkøb.
Avatar billede illemann Novice
20. februar 2008 - 08:16 #2
Det er også det jeg gør.
Men ville gerne have det til at køre i een kørsel så brugeren ikke selv skulle hoppe over i andet regnskab. Det sidste har ingen betydning, da det ikke er kostprisen der importeres i.
Avatar billede mariaf Juniormester
20. februar 2008 - 16:37 #3
Hvis det ikke er kostpris, der importeres i, så skal du have gang i noget med prisgrupper - medmindre selvføglelig at det er et spcialkartotek. Ellers går det galt for dig.
Avatar billede illemann Novice
20. februar 2008 - 17:23 #4
Det er slet ikke det der er problemet. Har lavet en kørsel til at udlæse i et regnskab og importerer i et andet. Det fungerer.
Vil bare begge kørsler fra fra en process.
Og her skal jeg bruge en kommando som kan skifte regnskab midlertidigt.
Avatar billede mariaf Juniormester
20. februar 2008 - 18:53 #5
Det kommer ikke til at virke på din måde. C5 er alt for hurtig, og din fil vil ikke være skrevet færdig før du er væk fra regnskabet igen. Dvs du ender med at den ikke er færdig med at udlæse, når du begynder at læse ind. Det går galt.
Du kan lave et kartotek, der kun ligger i dat, og hvor data kan læses ind og ud i de forskellige regnskaber hvilke felter du skal have med over, kan du måske også bruge TmpKontoSum.
Man skifter regnskab med en proces - 19, så vidt jeg husker. Der skal så en række parametre på hvor du angiver databasen og hvilken kørsel du vil have igangsat ved skift.
Avatar billede jasman Nybegynder
06. marts 2008 - 15:06 #6
Jeg forstår ikke helt hvad maria prøver at forklare ovenfor.

I hvert fald kan du godt lave f.eks. en XAL-kørsel som du indretter til at arbejde i et bestemt regnskab i mit eksempel kan denne kørsel KUN køre i regnskabet JSO.
Denne kørsel skal altså importere data.

Det første kørslen skal gøre er så at skifte til et andet regnskab i mit eksempel kaldet TST, og så skrive data ud i en fil på disken med simpel WRITE. Viser jeg dog ikke i eksemplet.
Det burde ikke være nødvendigt at lave en CLOSE på sådan en fil, men det kan man gøre for en sikkerheds skyld.

Når kørslen/udlæsningen af data i TST-regnskabet er færdigt, vendes der tilbage til regnskabet JSO, og den første kørsel. Og her kan man så læse filen ind.

Kode:
Første kørsel: (hedder JSO_DOSUMTHIN)

#MACROLOAD(DATABASE_INFORMATION)
#MACROLOAD(C_UTIL)
IF #DB_Dictionary(EXT) <> 'JSO' THEN
    SET BOX(2,"Kan kun udføres i JSO !!!",0)
ENDIF
PRINT "Nu er vi i JSO regnskabet"
PAUSE
PRINT "Nu skifter vi så til TST og gør noget !!!"

// Skifter til TST-regnskabet og udfører XAL kørselen TST_DOSUMTHIN
PROCESS #PROC_DbChange 'MODE=TEMP FILE=TST PROC=24 ARGS="XAL=TST_DOSUMTHIN"'

PRINT "Og her kunne vi så åbne filen og læse data ind !!!"
PAUSE


Anden kørsel: (hedder TST_DOSUMTHIN)
#MACROLOAD(DATABASE_INFORMATION)
IF #DB_Dictionary(EXT) <> 'TST' THEN
    SET BOX(2,"Kan kun udføres i TST !!!",0)
ENDIF

PRINT "Her er vi så i TST og gør noget !!!"
PAUSE

// Her implementeres så kode der læser data ud i en fil
// Lige nu skriver koden bare finans kontonumre ud fra det regnskabet
// der er sprunget til for at bevise at skiftet virker !!!
SEARCH FinKart USING KontoIdx
    PRINT FinKart.Konto
END
PAUSE

Jeg håber den model er spiselig.
Avatar billede mariaf Juniormester
06. marts 2008 - 15:43 #7
Problemet er ikke kørslen, men at han automatisk vil skifte regnskab, køre en qtx med noget udlæsning, skifte regnskab og læse ind igen - og den vil ikke virke pga hastighedsproblematikken.
Vi har flere og flere problemer at netop den type. Senest har vi en udlæsning af fil fra løn, hvor koden er afviklet og færdig før filen er skrevet.
Avatar billede jasman Nybegynder
07. marts 2008 - 08:15 #8
Hej Maria,

hvordan kan koden være færdig før filen er skrevet, hvis man afslutter med en close af filen i selve koden ??? Det forstår jeg ikke.

Hvis det kode-scope der kaldes når der skiftes regnskab, skriver en fil, og lave close på den, så er filen der da, når kontrollen returnerer til det kaldende program ?
Avatar billede jasman Nybegynder
07. marts 2008 - 08:17 #9
Og forresten så er flowet jo ikke, at man skifter regnskab og skriver en fil, og så skifter regnskab igen for at læse ind.

Man starter i et det regnskab, hvor man vil læse ind.
Så skifter man til det regnskab man vil hente data ud af,
henter data ud i en fil, og lukker den.
Der efter returnerer programmet til det regnskab man kom fra,
og her kan man så læse filen ind.

Men når du siger det på den måde, så må jeg jo nok hellere teste.
Avatar billede mariaf Juniormester
07. marts 2008 - 19:21 #10
jeg troede det heller ikke - det giver ikke mening rent programmeringsmæssigt, men jeg tror at det der sker er at koden kører, læser data ind i memory, hvor der så skal skrives til fil. Filen skrives, og imens render koden videre og er nu nået til indlæsning - men filen er bare ikke skrevet færdig endnu.
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