19. februar 2008 - 12:39Der 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
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.
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.
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.
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.
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.
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
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.
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 ?
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.
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.
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.