Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Delphi 7]Baza danych - sortowanie bazy paradox według klucza

prymas76 18 Gru 2011 14:36 2019 2
  • #1 18 Gru 2011 14:36
    prymas76
    Poziom 8  

    Witam. Mam problem z sortowaniem bazy danych paradox. Używam następujące komponenty: TTable, TDataSource i TDBGrid (z zastosowaniem BDE). Program oparty o baze danych paradox. Gdy tworzę w bazie domyślny indeks dla tabeli (Key) to przy dodawaniu drugiego identycznego elementu wyskakuje błąd naruszenia klucza (Key Violation).
    Założeniem jest aby w bazie mogły funkcjonować identyczne elementy. Pytanie jak to obejść?
    Z kolei przy tworzeniu dodatkowego indeksu dla sortowania malejącego przy dodawaniu nowego elementu wyskakuje błąd że klucz nieaktualny (Key out of date lub coś takiego). Tu także pytanie jak to obejść?
    Program łączy się z bazą przez BDE, wprowadzanie elementów bezpośrednio z DBGrida.

    0 2
  • #2 18 Gru 2011 16:09
    Dżyszla
    Poziom 42  

    Nie znam na tyle paradoxa, ale może tworzysz klucz główny, który z założenia jest unikalnym? Nie wiem też, czy indeksy mogą być odczytywane wstecz, co w przypadku utworzenia klucza narastającego uniemożliwia wykorzystanie go do przeprowadzenia sortowania malejącego.

    0
  • #3 18 Gru 2011 18:08
    prymas76
    Poziom 8  

    Problem został rozwiązany :D
    W rozwiązaniu pomógł mi ten atrykuł.
    Wychodzi na to że jeżeli indeksujemy tylko po wartości jednego pola to każde pole musi mieć unikalną wartość, inaczej program nie wie co zrobić z tym fantem (bo które ma być pierwsze skoro są takie same). Stworzyłem więc klucz główny z dwóch pól: NAZWY (tego które ma przyjmować identyczne wartości)i ID (wspomnianego autoincrement które określa kolejność wprowadzonych danych). Następnie utworzyłem dodatkowe klucze: do sortowania rosnącego i malejącego (z tych obydwu pól), oraz do wyświetlania nieposortowanego (z pola ID). Dzięki temu gdy w polu NAZWA wystąpią takie same wartości dla dwóch lub więcej rekordów to klucze rosnące i malejące sortują identyczne rekordy według kolejności ich wprowadzania do bazy :D
    Problem uważam więc za rozwiązany.

    0