|
Autor |
Wiadomość |
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
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.
|
2008-06-13, 07:59 |
|
|
Autor |
Wiadomość |
Mix-soft.pl
|
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
Oczywiście "nie za nic"
|
2008-06-13, 12:30 |
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
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
|
2008-06-13, 18:25 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
Niestety nie da się wyszukać dowolnej frazy z notatki lub jej części,wyszukiwanie rozróżnia też wielkie i małe litery.Szkoda
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ź.
|
2008-06-14, 11:35 |
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
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 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
|
2008-06-14, 12:44 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
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!!
|
2008-06-14, 17:42 |
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
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"
|
2008-06-14, 18:19 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
Rozumiem.Tylko że nie zawsze wiem że one tam są (te znaki naturalnie) więc kombinuję jak "zamieszać" 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?
|
2008-06-14, 18:34 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
Pewnie palnołem coś głupiego,a co mi tam.Kto pyta Nie błądzi.
|
2008-06-14, 18:41 |
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
lofix pisze: Rozumiem.Tylko że nie zawsze wiem że one tam są (te znaki naturalnie) więc kombinuję jak "zamieszać" 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?
|
2008-06-14, 18:56 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
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.
|
2008-06-14, 20:41 |
|
|
rafal
Ekspert
Rejestracja: 2007-11-16, 15:08 Posty: 4000 Pomógł: 448
|
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.
|
2008-06-14, 23:39 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
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.
Ostatnio zmieniony 2008-06-15, 11:42 przez lofix, łącznie zmieniany 1 raz
|
2008-06-15, 09:44 |
|
|
barnie
Ekspert
Rejestracja: 2008-04-07, 13:26 Posty: 208 Pomógł: 2
|
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?
|
2008-06-15, 11:43 |
|
|
lofix
Rejestracja: 2007-11-26, 15:19 Posty: 47
|
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.
|
2008-06-15, 12:24 |
|
|
Kto jest online |
Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 16 gości |
|
Nie możesz tworzyć nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników
|
|
|
|