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

Klucze w bazie
https://forum.mix-soft.pl/viewtopic.php?f=15&t=1285
Strona 1 z 1

Autor:  artur17 [ 2009-10-14, 12:00 ]
Tytuł:  Klucze w bazie

Mam pytanie dotyczące wykorzystania indeksów w bazach programu Handel premium.
Udało mi się dotrzeć do takich indeksów i kluczy. Mam więc teraz pytanie związane z używaniem tych indeksów w wyszukiwaniu konkretnych rekordów.
Zadam pytanie na przykładzie kluczy z handlowej bazy UZ.
Jeżeli posiadam np. dla indeksu "kodobcy" przypisane pola "typi" i "kodobcy", to z jakich innych pól w tabeli jestem w stanie pobrać wartości, bo np. w tym przypadku mogę np. wyrzucić id
Kod:
   
    baseUZ uz
    uz.SetKey("kodobcy")
    uz.SetKeySeg("typi",32)
    uz.SetKeySeg("kodobcy","podany kod obcy")
    uz.GetRec( EQ )
    wynik = uz.GetField("id")
    uz.Close()


a już "iduz" się nie da.

Kod:
   
    baseUZ uz
    uz.SetKey("kodobcy")
    uz.SetKeySeg("typi",32)
    uz.SetKeySeg("kodobcy","podany kod obcy")
    uz.GetRec( EQ )
    wynik = uz.GetField("iduz")
    uz.Close()


W poniższym przypadku gdy chcę uzyskać "iduz" na podstawie indeksu "kodnasz" też nie wychodzi /W indeksie "kodnasz" występują pola (typi, iduz, idkh)/:


Kod:
   
    baseUZ uz
    uz.SetKey("kodnasz")
    uz.SetKeySeg("typi",32)
    uz.SetKeySeg("idkh",1625)
    uz.GetRec( EQ )
    wynik = uz.GetField("iduz")
    uz.Close()


Mniej więcej znam teorię o relacyjności baz danych, jednak mam problem z przełożeniem tego na praktykę. Mam więc prośbę o wskazówkę w jaki sposób mogę używać wiedzy na temat indeksów...

Autor:  rafal [ 2009-10-14, 14:58 ]
Tytuł:  Re: Klucze w bazie

artur17 pisze:
Mam pytanie dotyczące wykorzystania indeksów w bazach programu Handel premium.
Udało mi się dotrzeć do takich indeksów i kluczy. Mam więc teraz pytanie związane z używaniem tych indeksów w wyszukiwaniu konkretnych rekordów.
Zadam pytanie na przykładzie kluczy z handlowej bazy UZ.
Jeżeli posiadam np. dla indeksu "kodobcy" przypisane pola "typi" i "kodobcy", to z jakich innych pól w tabeli jestem w stanie pobrać wartości, bo np. w tym przypadku mogę np. wyrzucić id
Kod:
   
    baseUZ uz
    uz.SetKey("kodobcy")
    uz.SetKeySeg("typi",32)
    uz.SetKeySeg("kodobcy","podany kod obcy")
    uz.GetRec( EQ )
    wynik = uz.GetField("id")
    uz.Close()


a już "iduz" się nie da.

Kod:
   
    baseUZ uz
    uz.SetKey("kodobcy")
    uz.SetKeySeg("typi",32)
    uz.SetKeySeg("kodobcy","podany kod obcy")
    uz.GetRec( EQ )
    wynik = uz.GetField("iduz")
    uz.Close()


kod wygląda dobrze. Zrób
Kod:
print uz.GetRec( EQ )

i sprawdź co Ci wyświetla w obu przypadkach. Powinno "0"

artur17 pisze:
W poniższym przypadku gdy chcę uzyskać "iduz" na podstawie indeksu "kodnasz" też nie wychodzi /W indeksie "kodnasz" występują pola (typi, iduz, idkh)/:


Kod:
   
    baseUZ uz
    uz.SetKey("kodnasz")
    uz.SetKeySeg("typi",32)
    uz.SetKeySeg("idkh",1625)
    uz.GetRec( EQ )
    wynik = uz.GetField("iduz")
    uz.Close()


Mniej więcej znam teorię o relacyjności baz danych, jednak mam problem z przełożeniem tego na praktykę. Mam więc prośbę o wskazówkę w jaki sposób mogę używać wiedzy na temat indeksów...

Jeżeli klucz zawiera 3 pola to te trzy pola musisz wypełnić za pomocą SetKeySeg.
Czyli klucz "kodnasz" nie jest odpowiednim kluczem do znalezienia wartości pola iduz bo musisz wcześniej już znać jego wartość.

Autor:  artur17 [ 2009-10-19, 15:42 ]
Tytuł: 

Bardzo dziękuję.
Ale załóżmy jeszcze taką sytuacje.
Znam indeks "kodnasz" z tabeli UZ, przypuśćmy też, że znam wszystkie potrzebne pola dla tego indeksu (typi, iduz, idkh).
I pytanie: Skąd mogę wiedzieć jakie pola z tabeli UZ będę mógł odczytać na podstawie tego indeksu?

Autor:  rafal [ 2009-10-19, 16:47 ]
Tytuł: 

artur17 pisze:
I pytanie: Skąd mogę wiedzieć jakie pola z tabeli UZ będę mógł odczytać na podstawie tego indeksu?


Po odczytaniu rekordu z bazy za pomocą polecenia GetRec możesz odczytać wartości każdego pola w tym rekordzie za pomocą GetField niezależnie od tego z czego składał się klucz.

Autor:  artur17 [ 2009-10-20, 08:08 ]
Tytuł: 

Dziękuję :)

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