mojaSymfonia FORUM
https://forum.mix-soft.pl/

zamiana STRING na INT (ilosć jako liczba)
https://forum.mix-soft.pl/viewtopic.php?f=15&t=4917
Strona 1 z 1

Autor:  vr6k3 [ 2013-04-30, 12:18 ]
Tytuł:  zamiana STRING na INT (ilosć jako liczba)

Witam,
Posiadam program Sage Symfornia Handel 2013.1.a. Napotkałem się na problem ponieważ chciałbym konwertować STRING na INT (jeżeli to możliwe), już wyjaśniam o co chodzi.

Moja firma często operuje na "kontaktach" co za tym idzie, fakturach zaliczkowych (nawiasem mówiąc szukam rozszerzenia do Symforni typu "Kontakrt w walucie + RTF"). Przy wystawieniu faktury zaliczkowej z kontraktu, tworzy nam się faktura gdzie ILOSĆ towaru jest proporcjonalna do wartości faktury.
np.
Kontrakt = 10 000,00
Faktura zaliczkowa nr.1 = 4 000,00 zł
Ilość towaru na fakturze zaliczkowej wynosi = 0,4

No i dla mnie jest to w miare ok, ale chciałby, sobie zmienić pole ILOŚĆ na "stan konraktru" gdzie będzie to pokazywane w procentach, gdzie zamiast 0,4 będę miał 40%. Pomysł mam taki aby daną ("sIlosc" * 10) i wtedy bede miał zamiast 0.4 bede miał 40 (do tego znaczek % w RTF i gotowe).

Borykam się z problemem bo wydaje mi się że wartość "sIlosc" to STRING, i nie wiem jak go przekonwertosć na INT albo REAL aby robić operacje matematyczne.
Zrobiłem sobie coś takiego, nowa zmienna "ILpro":
Kod:
if find regular at "@Ilpro" then myReplace( "@Ilpro", using "%d",(sIlosc) ) : found=1

ale wywala mi konunikat "niemożliwa zmiana ze STRING NA INT"

proszę o pomoc.

Autor:  rafal [ 2013-05-02, 10:54 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Około dwadzieślcia linii wyżej masz pokazane skąd wzięło się sIlosc.
Tam wprowadź swoje modyfikacje.

Kod:
      for i=1 to i > size( Pozycje )
         if Pozycje(i).stawka>=0 && poz_opis.Get(using "%d",i) then
            sIlosc = sDajIlosc(iif(nJednMiary,Pozycje(i).IloscWP,Pozycje(i).Ilosc))

Autor:  vr6k3 [ 2013-05-02, 13:38 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Dajel nic, jeżeli sobie dopisze :
Kod:
      for i=1 to i > size( Pozycje )
         if Pozycje(i).stawka>=0 && poz_opis.Get(using "%d",i) then
            sIlosc =[color=#FF0000] using "%d"[/color], sDajIlosc(iif(nJednMiary,Pozycje(i).IloscWP,Pozycje(i).Ilosc))


to i tak mi wywala błąd konwersji STRING na INT.

Autor:  rafal [ 2013-05-02, 16:05 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Bo dalej robisz ten sam błąd.
Z tego co zrozumiałem chcesz wykonać jakieś działanie matematyczne na Ilości.
W związku z tym musisz to zrobić zanim ilość stanie się stringiem.

Kod:
      for i=1 to i > size( Pozycje )
         if Pozycje(i).stawka>=0 && poz_opis.Get(using "%d",i) then
            sIlosc = sDajIlosc(iif(nJednMiary,Pozycje(i).IloscWP * 100,Pozycje(i).Ilosc * 100))


albo Twój kod

Kod:
      for i=1 to i > size( Pozycje )
         if Pozycje(i).stawka>=0 && poz_opis.Get(using "%d",i) then
            sIlosc = using "[color=#FF0000] %s [/color]", sDajIlosc(iif(nJednMiary,Pozycje(i).IloscWP,Pozycje(i).Ilosc))


Nie jestem pewny czy ten [color] Ci zadziała.

Autor:  wrob [ 2013-05-02, 16:08 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Rafal ten color to nie fragment kodu tylko formater z forum ktory sie nie sparsowal :)

Ale fakt najwazniejsdeze jest uzycie zamiast %d -> %s

Autor:  rafal [ 2013-05-02, 17:57 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Wrob dzieki :)

Autor:  vr6k3 [ 2013-05-05, 19:52 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Ten "color" się wkradł bo chciałem na forum wyróznic fragment który zmieniłem na czerwono :)
Jak wróce to jutro się jszcze pobawie.

Autor:  vr6k3 [ 2013-05-06, 11:08 ]
Tytuł:  Zamiana STRING na INT (ilosć jako liczba)

Witam,
zmiana działania tak jak pisze "rafal" na poziomie
Kod:
for i=1 to i > size( Pozycje )
         if Pozycje(i).stawka>=0 && poz_opis.Get(using "%d",i) then
            sIlosc = sDajIlosc(iif(nJednMiary,Pozycje(i).IloscWP * 100,Pozycje(i).Ilosc * 100))


jest ok, ale problem jest taki ze potrzebuje to tylko do jednego typu wydruku (faktur zaliczkowych) a w tym momencie masz na wszystkich dokumentach gdzie występuje ilość.

Autor:  vr6k3 [ 2013-05-06, 11:13 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Zrobiłem :)

Poprostu dodałem zmienną

Kod:
               if find regular at "@Ilpro" then myReplace( "@Ilpro", (using "%s",(sDajIlosc(iif(nJednMiary,Pozycje(i).IloscWP*100,Pozycje(i).Ilosc*100)))) ) : found=1


Dziękuje za pomoc.

PS. Szukam tez rozwiązania dla "kontaktrów w walucie"....

Autor:  wrob [ 2013-05-06, 15:26 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Mamy rozwiazanie dla kontraktow walutowych

Autor:  alan0z [ 2014-01-09, 01:04 ]
Tytuł:  Re: zamiana STRING na INT (ilosć jako liczba)

Sam się nad tym teraz głowiłem, a wystarczy:

Kod:
int iLiczba = val(sLiczba)

Strona 1 z 1 Strefa czasowa UTC+1godz. [letni]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/