"zmulony" program i Delphi + SQL-em

0

Witam !

Napisałem sobie programik do obróbki bazy danych w której jest około 200.000 rekordów. I wszystko byłoby dobrze gdyby nie fakt że jak uruchomię ten program przy wyszukiwaniu danych praktycznie nic nie mogę zrobić bo jeśli tylko dotknę myszką programu od razu pojawia się informacje (brak odpowiedzi) o program w większości wypadków wisi?! Jest na to jakaś rada ?
I druga sprawa jak dobrać się do bazy SQL-owej z poziomu Delphi ?

pozdrawiam

0

Dodam tylko jeszcze że baza jest zrobiona w Accessie (.mdb) a tylko obróbka bazy jest zrobiona w Delphi

0

Nigdy nie bawiłem się SQL-em, ale w pętli spróbuj dać:

Application.ProcessMessages;
Label1.Caption := IntToStr(i);

Pierwsza linijka powinna spowodować brak 'ścięcia' w programie. Będziesz mógł nim ruszać itp.
Druga linijka jest po to abyś wiedział który rekord jest obrabiany. Gdzie "i" tam podajesz iteracyjną (znaczy nie wiem czy tak to się nazywa, chodzi o to, że dajesz tam tę zmienną, która się zwiększa przy pętli).

Oczywiście to nie rozwiąże problemu, ale być może ułatwi Ci pracę.

0

po objawach mogę stwierdzić, że masz źle zoptymalizowaną bazę. Jeśli wyszukiwanie trwa długo to
a) nie masz indeksów (sprawdź execution plan zapytania)
b) masz jakieś bardzo pogmatwane zapytanie

Samo Delphi nie ma tu nic do rzeczy bo ono po prostu czeka aż access zwróci mu dane

I druga sprawa jak dobrać się do bazy SQL-owej z poziomu Delphi ?
a coś konkretnie

0

Użyj wątków.

0

jak napisał misiekd wątki nie pomoga bo skoro baza długo szuka to nawet jak to w watku to tyle zyskasz ze progrma bedzie działał podczas wyszukiwania ale baza jak jest zle skonstruowana to dalej bedzie sie mulic

0

Może być zle zapytanie zwracające zbyt dużo rekordów. Spróbuj ograniczyć rekordy zmieniająć część where. Jeśli to nie pomoże można spróbować, jeśli jest taka możliwość w tym dialekcie, na sztywno ograniczyć liczbę rekordów. W interbase robi się to na końcu pisząc raws 1 to 7 co wyświetla pierwsze siedem rekordów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1