Pasek 'podstępu'

Odpowiedz Nowy wątek
2004-10-22 09:29

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

Mam taki mały problem.
Jestem w trakcie modernizacji swojego
programu, jest to baza danych. Problem
jest tego typu: podczas wyświetlania danych
w tabeli, a jest ich dopiero 200 pozycji,
programowi zajmuje jakiś czas żeby je wyświetlić.
Chciałbym w tym miejscu zamontować jakiś Progressbar,
żeby pokazywał stan przetwarzanych danych do wyświetlenia.
Jak to zobić?
Proszę o kawałeczek kodu.
Martinezo.

Pozostało 580 znaków

2004-10-22 09:58

Rejestracja: 16 lat temu

Ostatnio: 1 rok temu

Lokalizacja: Kraków

0

Potrzebne Ci będą tylko dwie właściwości progressBar'a:
ProgressBar.Max:=tu ustaw ilość rekordów w Twojej bazie
ProgressBar.Position:=nr rekordu aktualnie wczytywanego do tabeli.

Pozostało 580 znaków

2004-10-22 10:15

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

No dobrze, ale jak to zrobić (nr rekordu aktualnie wczytywanego do tabeli.)
w SQLu.
Martinezo.

Pozostało 580 znaków

2004-10-22 13:49

Rejestracja: 17 lat temu

Ostatnio: 9 lat temu

0

Ech... Musisz jakoś kombinować i rzucać zapytania kawałkami. Tylko nie ma sensu rzucać po jednym, tylko np. po 10 ładować i w progress barze dać max:=ilosc_rekordow div 10.


Grunt to uziemienie...

Pozostało 580 znaków

2004-10-22 16:57

Rejestracja: 15 lat temu

Ostatnio: 11 lat temu

0

Zapytanie jest realizowane przez sterowniki bazy danych a nie przez aplikacje wiec nie mozesz go sledzic, a jesli podzielisz zapytanie na kawalki to zwolnisz znaczaco czas odczytywania, to nie ma sensu. Jakiej bazy danych urzywasz? Przy 200 regordach nie powinienes miec czasu aby cokolwiek zobaczyc. ja testowalem tabele liczaca 120 000 rekordow i 30 kolumn i wszystko dzialalo bardzo szybko.

Pozostało 580 znaków

2004-10-22 17:25

Rejestracja: 17 lat temu

Ostatnio: 5 lat temu

0

Wyświetlasz wyniki chyba w jakiejś pętli, to zrób tak:

PrograssBar.Max := xxx;
ProgressBar.Position := 0;
for i := 1 to xxx do begin
    //wyświetlasz rekord;
    ProgressBar.Position := ProgressBar.Position + 1;
end;

Słowa kierownika : To, jak wy zdążycie to napisać, to ja mam w szeroko rozumianej du*ie.
http://project1.pl

Pozostało 580 znaków

Viking
2004-10-22 17:49
Viking
0

Wyświetlanie rekordów w pętli mija się z celem! Bedzie to rzeczywiście trwało koszmarnie dużo czasu. Zamiast zajmować się tworzeniem ProgressBar'u, przejrzyj konstrukcję bazy i polecenie wyświetlające. Nie jest możliwe, aby wyświetlanie 200 rekordów zajmowało tyle czasu! SQL jest szybki i takie rzeczy są rzeczą niemożliwą!

Pozostało 580 znaków

2004-10-24 18:04

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

Wszysko się zgadza, tylko że
ja wyświetlam tylko trzy kolumny w tabeli,
ale do każdego rekordu dołączony jest obrazek
w jpg.
Może to ma wpływ na długość wczytywanych danych?.
Martinezo.

Pozostało 580 znaków

2004-10-24 18:46

Rejestracja: 18 lat temu

Ostatnio: 8 lat temu

0

A może wpływ ma to, że dodajesz dane do listview i za każdym razem listview jest odrysowywany? Nie wiem, z czego korzystasz, ale jeśli z listview, to radzę się zainteresować beginupdate() i endupdate() :).

Pozostało 580 znaków

2004-10-25 15:17

Rejestracja: 16 lat temu

Ostatnio: 14 lat temu

0

Już wyjaśniam:
Dane wyświetlam w tabeli dbgrid,
do tego dochodzi komponent dbmemo i
komponent do wyświetlania obrazków dbimage.
Tabele są w formacie Paradox 7.
A wsztstko chodzi w Delphi 3.
Trudno mi powiedzieć dlaczego te dane się wczytują tak długo,
ale wygenerowanie raportu (quickrep), dla wszystkich danych z
tabeli zajmuje też sporo czasu (ok. 10s).
p.s.
Dla wyświetlenia danych używam zapytania w SQL.
Martinezo.

Pozostało 580 znaków

2004-10-25 16:20

Rejestracja: 15 lat temu

Ostatnio: 11 lat temu

0

Spruboj wykluczyc z zapytania SQL kolumne z oprazkiem i wysylac zapytanie do qazy tylko o obrazek za karzdym razem gdy zmienia sie aktywny rekord (pytasz wtedy tylko o jeden obrazek z jednego rekordu), tyle ze dla raportu bedziesz musial zrobic osobne zapytanie i to bedzi juz wolne.

Pozostało 580 znaków

Odpowiedz

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