mojaSymfonia FORUM https://forum.mix-soft.pl/ |
|
Dlaczego nie działa SetKeySeg na stringach? https://forum.mix-soft.pl/viewtopic.php?f=15&t=836 |
Strona 1 z 1 |
Autor: | iredy [ 2009-05-12, 12:00 ] |
Tytuł: | Dlaczego nie działa SetKeySeg na stringach? |
Witam, pytanie może lamerskie, ale moje doświadczenie z AmBasic'em dopiero rośnie ;) Jak w temacie, gdy w kluczu bazy jednym z pól jest pole typu string, wypełnienie tego pola - SetKeySeg, nie daje pożądanych efektów? tzn np coś takiego: Kod: SetKey(iBazaKH,"kod") SetKeySeg(iBazaKH,"typi",0) SetKeySeg(iBazaKH,"kod",kontrahent) err = GetRec(iBazaKH,EQ) while !err print LF; GetField(iBazaKH,"kod") err = GetRec(iBazaKH,NX) wend wiem zadziała to w ten sposób: Kod: SetKey(iBazaKH,"kod") SetKeySeg(iBazaKH,"typi",0) SetKeySeg(iBazaKH,"kod",kontahent) err = GetRec(iBazaKH,EQ) while !err if GetField(iBAzaKH,"kod")==kontrahent then print LF; GetField(iBazaKH,"kod") err = GetRec(iBazaKH,NX) wend ale przecież wersja 1. też niby powinna zadziałać... Efekt jest taki jakby zastosować GE zamiast EQ... Czemu? pozdrawiam irek |
Autor: | jacekk [ 2009-05-12, 22:34 ] |
Tytuł: | |
Jakie dane chcesz otrzymac ? Klucz "kod" w bazie KH nie jest duplikowalny więc należy oczekiwac tylko jednego rekordu. Tak więc nie ma sensu stosowac pętli. Prawidłowy kod: Kod: SetKey(iBazaKH,"kod") SetKeySeg(iBazaKH,"typi",0) SetKeySeg(iBazaKH,"kod",kontrahent) err = GetRec(iBazaKH,EQ) if !err then print using "\nid=%d kod=%s",GetField(iBazaKH,"id"),GetField(iBazaKH,"kod") else message "Nie znaleziono kontrahenta: "+kontrahent endif |
Autor: | rafal [ 2009-05-12, 22:44 ] |
Tytuł: | |
w przypadku kiedy istnieje rekord odpowiadający wartościom w kluczu (SetKeySeg) rzeczywiście EQ i GE da ten sam efekt. Jeżeli nie ma takiego rekordu to GetRec( EQ ) a jaki efekt chciałeś osiągnąć? |
Autor: | iredy [ 2009-05-14, 09:13 ] |
Tytuł: | |
Fajnie, wielkie dzięki za odpowiedź. Ale teraz pytanie - czyli jak mam pole string i jest ono duplikowalne, to jak wyciągnąć wszystkie rekordy z jakąś wartością tego pola? Użycie GE nie ma sensu - czy EQ w pętli ma sens? irek |
Autor: | wrob [ 2009-05-14, 11:17 ] |
Tytuł: | |
NX w petli :) |
Autor: | Jarek75 [ 2009-05-15, 15:37 ] |
Tytuł: | |
Kod: SetKey(bdok, "kontrdata") SetKeySeg(bdok, "kontrahent", idk) GetRec(bdok,GE) while BaseError(bdok,0)==0 && GetKeySeg(bdok,"kontrahent")==idk sDok = GetField(bdok, "nazwa") print sDok; lf GetRec(bdok,NX) wend |
Strona 1 z 1 | Strefa czasowa UTC+1godz. [letni] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |