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/ |