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

Handel Premium-NOTATKA
https://forum.mix-soft.pl/viewtopic.php?f=15&t=161
Strona 1 z 2

Autor:  lofix [ 2008-06-13, 07:59 ]
Tytuł:  Handel Premium-NOTATKA

Czy jest ktoś na forum kto potrafi napisać raport umożliwiający odszukanie towarów po dowolnej frazie zawartej w notatce?Niestety ja nie potrafię ale byłoby to bardzo ciekawe i potrzebne usprawnienie.

Autor:  lofix [ 2008-06-13, 12:30 ]
Tytuł: 

Oczywiście "nie za nic" :lol: :lol:

Autor:  barnie [ 2008-06-13, 18:25 ]
Tytuł: 

W kartotece raportów dodaj nowy raport w katalogu :

Raporty → Kartoteki → Raporty z menu → Towary

o nazwie : "Szukaj towaru po notatce"

Wklej załączony kod.

Załatwione. W towarach w menu kontekstowym masz nową funkcję :)
Kod:
limit 80000

string sCoWyszukac

FORM "Wyszukaj towar po notatce", 300,100

   edit "",sCoWyszukac,5,5,285,20
   button "Szukaj",110,40,80,20,2

int rx = ExecForm

if rx == -1 then error ""

baseTW tw
baseNT nt

ioRec ioLista

long lPoz
long lIdTw

lPoz = SetTaggedPos(FS)

while lPoz != 0
   
      lIdTw = GetLineId( lPoz )

      nt.SetKey ("super" )
      nt.SetKeySeg( "typi",0 )
      nt.SetKeySeg( "baza",22 )   
      nt.SetKeySeg( "super", lIdTw)
      if !nt.GetRec( EQ ) then
         buf = nt.GetField("opis")
      else
         buf = ""
      endif

      if Find Regular (using "{*}%s{*}", sCoWyszukac) then
   
         ioLista.SetField("id",(using "%l", lIdTw))

      endif

   lPoz = SetTaggedPos(NX)   
wend

ShowListWindow( ioLista, "TW" )
NoOutPut()


Zaznacz towary wśród, których na być szuakanie i uruchom raport.
Fakturę wyślę pocztą :)

P.S.
dzięki rafal za pomoc

Autor:  lofix [ 2008-06-14, 11:35 ]
Tytuł: 

Niestety nie da się wyszukać dowolnej frazy z notatki lub jej części,wyszukiwanie rozróżnia też wielkie i małe litery.Szkoda :cry:
Potrzebuję też dodatkowej funkcjonalności w zakresie obsługi zamienników towarów,lub też dostosowania Symfonii do specyficznej branży motoryzacyjnej.Złośliwym odpowiadam że tak...i owszem..dzwoniłem,rozmawiałem,prosiłem..i co ?Nic. Czekać kazali odpowiedzi zero.
Tak więc jeśli jest ktoś zainteresowany proszę o odpowiedź. :roll:

Autor:  barnie [ 2008-06-14, 12:44 ]
Tytuł: 

lofix pisze:
Niestety nie da się wyszukać dowolnej frazy z notatki lub jej części,


co przez to rozumiesz. podaj przykład


lofix pisze:
wyszukiwanie rozróżnia też wielkie i małe litery.Szkoda :cry:


poprawione

Kod:
limit 80000

string sCoWyszukac

FORM "Wyszukaj towar po notatce", 300,100

   edit "",sCoWyszukac,5,5,285,20
   button "Szukaj",110,40,80,20,2

int rx = ExecForm

if rx == -1 then error ""

baseTW tw
baseNT nt

ioRec ioLista

long lPoz
long lIdTw

lPoz = SetTaggedPos(FS)

while lPoz != 0
   
      lIdTw = GetLineId( lPoz )

      nt.SetKey ("super" )
      nt.SetKeySeg( "typi",0 )
      nt.SetKeySeg( "baza",22 )   
      nt.SetKeySeg( "super", lIdTw)
      if !nt.GetRec( EQ ) then
         buf = lCase(nt.GetField("opis"))
      else
         buf = ""
      endif

      if Find Regular (using "{*}%s{*}", lCase(sCoWyszukac)) then
   
         ioLista.SetField("id",(using "%l", lIdTw))

      endif

   lPoz = SetTaggedPos(NX)   
wend

ShowListWindow( ioLista, "TW" )
NoOutPut()


lofix pisze:
Potrzebuję też dodatkowej funkcjonalności w zakresie obsługi zamienników towarów,lub też dostosowania Symfonii do specyficznej branży motoryzacyjnej.


Zamienniki są dostępne jako dodatkowy raport
http://www.mojaSymfonia.pl/index.php?ln ... pm=192&s=1

Autor:  lofix [ 2008-06-14, 17:42 ]
Tytuł: 

Za licho nie odszuka np:10-0050 ale,0050 tak itd..
Co do dodatku,wiem że taki jest.Próbowałem uzyskać więcej informacji o nim dzwoniąc do różnych firm.Najczęściej "twórca" niewiele pamiętał o możliwościach swojego dzieła.Wszędzie kazali czekać na szczegóły które miały być wysłane na email.Czekam i nic.
Dlatego szukam rozwiązań na forum i odziwo są i to za DARMO!! Za kasę trudno-dziwne?
Obecnie biję się z myślami...czy zmienić oprogramowanie na typowe dla branży motoryzacyjnej,czy może jednak starać się o dostosowanie Symfonii do której się już przyzwyczaiłem.POMOCY!!

Autor:  barnie [ 2008-06-14, 18:19 ]
Tytuł: 

lofix pisze:
Za licho nie odszuka np:10-0050 ale,0050 tak itd..


Mechanizm ten używa wyrażeń regularnych w celu wyszukania szukanego tekstu.
Nie będę rozpisywał się o zagadnieniu wyrażeń regularnych.

Powiem jedynie, że znaki takie jak "-", "+", "#" itp.. są znakami specjalnymi.
W związku z tym jeżeli szukany ciąg zawiera takie znaki należy poprzedzić je znakiem "/".

I tak jak szukasz ciągu "10-0050" powinieneś wpisać "10/-0050"

Autor:  lofix [ 2008-06-14, 18:34 ]
Tytuł: 

Rozumiem.Tylko że nie zawsze wiem że one tam są (te znaki naturalnie) więc kombinuję jak "zamieszać" :lol: aby były one ignorowane podczas wyszukiwania ale jak znam siebie
to wszystko i tak pokręcę że bez 0,5l nie razbieriosz.
A swoją drogą co by było gdyby używał wyrażeń nieregularnych?

Autor:  lofix [ 2008-06-14, 18:41 ]
Tytuł: 

Pewnie palnołem coś głupiego,a co mi tam.Kto pyta Nie błądzi.

Autor:  barnie [ 2008-06-14, 18:56 ]
Tytuł: 

lofix pisze:
Rozumiem.Tylko że nie zawsze wiem że one tam są (te znaki naturalnie) więc kombinuję jak "zamieszać" :lol: aby były one ignorowane podczas wyszukiwania ale jak znam siebie


Wpisz "10*0050" wtedy znajdzie Ci towar "100050" lub "10-0050" czyli masz to co chciałeś.

lofix pisze:
A swoją drogą co by było gdyby używał wyrażeń nieregularnych?

a co to jest?

Autor:  lofix [ 2008-06-14, 20:41 ]
Tytuł: 

Po pierwsze poszukałem trochę na temat wyrażeń regularnych...rzeczywiście palnołem głupotę.:)
Po drugie nie rozumiemy się.Chodzi o to że nie wiem w którym miejscu występuje znak np: "-" czy "." albo 10-0050 lub 10005-0,problem polega na tym aby wyeliminować z procesu szukania znaki specjalne.

Autor:  rafal [ 2008-06-14, 23:39 ]
Tytuł: 

Oj wydaje mi się, że dostałeś sporo wiedzy w tym temacie. Poskładaj sobie teraz to wszystko do kupy i postaraj się użyć.

lofix pisze:
Po drugie nie rozumiemy się.Chodzi o to że nie wiem w którym miejscu występuje znak np: "-" czy "." albo 10-0050 lub 10005-0,problem polega na tym aby wyeliminować z procesu szukania znaki specjalne.

Jak nie wiesz gdzie może wystąpić znak szukaj "1*0*0*0*5*0" i zwróci Ci wszystkie 100050 cokolwiek i gdziekolwiek znajduje się w środku.

lofix pisze:
Dlatego szukam rozwiązań na forum i odziwo są i to za DARMO!! Za kasę trudno-dziwne?

nie liczyłbym na zbyt wiele za DARMO. barrnie chyba ma za dużo czasu, że wyskrobał dla Ciebie coś takiego. Ja jestem zwolennikiem bardziej naprowadzania na rozwiązanie niz dawanie gotowego.

lofix pisze:
Obecnie biję się z myślami...czy zmienić oprogramowanie na typowe dla branży motoryzacyjnej,czy może jednak starać się o dostosowanie Symfonii do której się już przyzwyczaiłem.POMOCY!!

Nie myśl, że jak zmienisz oprogramowanie to będzie ono idealne. Będzie miało "zamienniki " ale będzie brakowało innej funkcjonalności, którą ma Handel. Pewnie też będziesz musiał wydać parę PLN żeby dostosować do specyfiki swojej działalności. Decyzja i tak należy do Ciebie.

Autor:  lofix [ 2008-06-15, 09:44 ]
Tytuł: 

Oczywiście że nie liczę na DARMOCHĘ .Pomoc barrnie jest nieoceniona ,wszyscy dyplomatycznie unikają odpowiedzi jakby była to wiedza tajemna.
Poczytałem ,kombinowałem i doszedłem do czegoś takiego:

Kod:
limit 80000

string sCoWyszukac

FORM "Wyszukaj towar po notatce", 300,100

    edit "",sCoWyszukac,5,5,285,20
    button "Szukaj",110,40,80,20,2

int rx = ExecForm

if rx == -1 then error ""

baseTW tw
baseNT nt

ioRec ioLista

long lPoz
long lIdTw

lPoz = SetTaggedPos(FS)

while lPoz != 0
   
        lIdTw = GetLineId( lPoz )

        nt.SetKey ("super" )
        nt.SetKeySeg( "typi",0 )
        nt.SetKeySeg( "baza",22 )   
        nt.SetKeySeg( "super", lIdTw)
        if !nt.GetRec( EQ ) then
            buf = lCase(nt.GetField("opis"))
        else
            buf = ""
        endif

        if Find Regular (using "{*}/%s{*}",lCase(sCoWyszukac)) then
   
            ioLista.SetField("id",(using "%l", lIdTw))

        endif

    lPoz = SetTaggedPos(NX)   
wend

ShowListWindow( ioLista, "TW" )
NoOutPut()

Jest efekt napewno komuś jeszcze się przyda.

Autor:  barnie [ 2008-06-15, 11:43 ]
Tytuł: 

rozumiem, że zmieniłeś
Kod:
        if Find Regular (using "{*}%s{*}",lCase(sCoWyszukac)) then
na
Kod:
        if Find Regular (using "{*}/%s{*}",lCase(sCoWyszukac)) then
i co to daje?

Autor:  lofix [ 2008-06-15, 12:24 ]
Tytuł: 

Dało tyle że na przykładzie wyszukiwania powiedzmy " 10-5100" nie muszę kombinować gdzie jest "-"
Nie znam się na programowaniu ale mnie to bardzo zainteresowało.

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