Posty bez odpowiedzi |oraz Aktywne tematy Dzisiaj jest 2024-11-25, 23:17x



Odpowiedz w temacie  [ Posty: 6 ] 
Dlaczego nie działa SetKeySeg na stringach? 
Autor Wiadomość

Rejestracja: 2009-04-20, 07:37
Posty: 271
Pomógł: 4
Post 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


2009-05-12, 12:00
Wyświetl profil
Autor Wiadomość
 



Rejestracja: 2008-12-22, 21:14
Posty: 36
Post 
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


2009-05-12, 22:34
Wyświetl profil
Ekspert
Ekspert

Rejestracja: 2007-11-16, 15:08
Posty: 4000
Pomógł: 448
Post 
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ąć?

_________________
Skontaktuj się z Ekspertem | Zamów dodatek

tel. 22 7 538 538
ekspert@mojaSymfonia.pl
http://www.mojaSymfonia.pl


2009-05-12, 22:44
Wyświetl profil

Rejestracja: 2009-04-20, 07:37
Posty: 271
Pomógł: 4
Post 
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


2009-05-14, 09:13
Wyświetl profil
Ekspert
Ekspert
Awatar użytkownika

Rejestracja: 2008-04-18, 18:52
Posty: 5169
Pomógł: 59
Post 
NX w petli :)


2009-05-14, 11:17
Wyświetl profil
Ekspert
Ekspert
Awatar użytkownika

Rejestracja: 2009-03-07, 11:13
Posty: 597
Pomógł: 34
Post 
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


2009-05-15, 15:37
Wyświetl profil
Wyświetl posty nie starsze niż:  Sortuj wg  
Odpowiedz w temacie   [ Posty: 6 ] 
   Podobne tematy   Autor   Odpowiedzi   Odsłony   Ostatni post 
Na tym forum nie ma nowych nieprzeczytanych postów. OnTimer - jak to działa?

w Programowanie

wojtek

1

3051

2014-10-23, 21:24

rafal Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Pomoc nie działa

w Techniczne

JKL

2

2495

2010-08-20, 14:21

ro_bek Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Nie działa FTP Symfonii

w Ogólne

lechuedat

6

9650

2014-10-24, 23:57

perek Wyświetl najnowszy post

Na tym forum nie ma nowych nieprzeczytanych postów. Polecenie Basic() - jak działa?

w Programowanie

wojtek

3

3843

2020-11-04, 21:29

rafal Wyświetl najnowszy post



Kto jest online

Użytkownicy przeglądający to forum: Nie ma żadnego zarejestrowanego użytkownika i 19 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

Szukaj:
Przejdź do:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Support forum phpbb by phpBB Assistant