ПредишенСледващото

Prompt как да DBGrid1 дисплей само част от записите, а когато

Уважаеми магистър Delphi! Prompt как да DBGrid1 дисплей само част от записите на сървъра за маса, и следващия път, когато потребителят кликне върху бутона - бяха добавени показват записите в DBGrid1 и следващите н записите на масата.

Е, всички нормални компоненти на достъпа до сървъра на базата данни, за да се изтеглят само това, което се вижда на екрана в момента.

Къде мога да намеря такъв компонент да се види на екрана в момента, всички 743 записа, че сървърът е върнал

Да, но аз трябва да след от сървъра към клиента ще получи набор от документи и показва в DBGrid, той остана и добавя в следващия искане DBGrid стойност.
Т.е., има маса от 100,000 записи, чрез натискане на бутон на DBGrid показва заявка 50-заинтересован потребител записите sleduyuzhy към сървъра - дори 50, но в DBGrid показва вече 100 записа, и така с всеки следващ докосване. В този случай, от сървъра към клиента пристига в 50.

diokant (18.06.03 16:19)
да не се използва DBGrid

juzat или временни табла, които се сливат данните от сървъра (ако 50 броя записи :)))


> Къде мога да намеря такъв компонент да се види на екрана
> В момента всички 743 записва, че сървърът е върнал

Аз не пиша за това.
На дисплея могат да се настанят 20 записа - от сървъра изпомпва само тези 20 записа.
компресиране на изображения технология не притежава. )))

> Juzat или временни табла, които се сливат данните от сървъра
Мисля, че няма да работи, защото трябва да редактирате данните в DBGrid1.

> Не използвайте DBGrid
Ако не е трудно - разкажете ми повече

diokant (18.06.03 17:55)
Да Най-малко стандартната StringGrid, данните се съхраняват в структурата на TList + запис. Когато имате нужда да добавите данни за структурата и масата, за да хване промени в данните в таблица - актуализация "Иш сметка на сървъра.

> горе
Ако не е трудно - разкажете ми повече

А може да бъде разтворен в един данни дисплей DBGrid не един, а няколко DataSource. Ако това е така (и може да се редактира) - тогава мисля, че ще се вмести.

Уважаеми магистър Delphi!
Имам нужда да дърпате части рекордни клиент на сървъра на маса, но така, че в DBGrid видите записите на всички партиди и да било от вписванията може да се редактира директно в DBGrid.

Моля, кажете ми "най-красивата" въплъщение.


> Diokant (19.06.03 09:46)

Това не е съвсем ясно, все пак, това, което не сте доволни от поведението по подразбиране на TDataSet. Данните в него и така не се изтеглят всички наведнъж, а именно части. Т.е. нещо като това:
Има DataSet и свързан DBGrid. Отваряне на набор от данни. Той инжектира сървъра толкова записи, както се вижда в мрежата. Когато потребителят започва да се движи чрез записи в мрежата, ако трябва да се покаже, все още не са качени записи от сървъра изпомпват нова порция и се добавят към буфер DataSet ", както добре.

Фактът, че клиентът комуникира със сървъра чрез комутируема връзка.
Ако направя заявка SELECT * FROM T1 - искането ще бъде изпълнена за дълго време.
Затова искам да:
- докладва броя на записите в таблицата (да речем 50 000)
- потребителят е конфигуриран за състоянието,
- След това определяне на броя на записите, които съответстват на състоянието и го информира за потребителя
- ако потребителят иска да види тези записи, а броят на записите е по-малко от, да кажем 100 (100, защото това е времето, когато около 10 секунди), аз ги показват в DBGrid (ако те не се вписват на екрана - има вертикално превъртане)
- Потребителят създава ново състояние,
- След това определяне на броя на записите, които отговарят на условието (сред тях определя броя на вече съществуващата на клиента (в DBGrid) и сумата, която все още трябва да получи клиент-сървър)
- ако броят на записите е по-малко от, да кажем 100 (100, защото това е времето, когато около 10 секунди), аз ги показват в DBGrid, т.е. в DBGrid ще бъде по-стар запис + нова дефинирани.

По този начин, клиентът ще има много записи (всички те са на разположение в DBGrid, и ако те не се вписват на екрана - има вертикално превъртане), които са подгрупи на набор от документи, който отговаря на всички условия, които са се образували от потребителя. Потребителят е в състояние да редактират всеки от показаните записи в DBGrid


> Diokant (19.06.03 11:00)

Доколкото разбирам, в действителност, трябва да, това ще ви позволи да видите (и редактиране в мрежата), в резултат на няколко последователни запитвания.
Едно решение: използвайте MemoryTable, в които и двете се сливат резултатите от заявката.

Аз също бих добавил: къде вертикално превъртане в мрежата. Вие многократно се опита да каже (и аз ще се опитам отново :)), че голям брой записи в мрежата - просто не е нужно. Е, не е в състояние на нормален човек да работи с няколко хиляди записи. В идеалния случай, искането трябва да се върне възможно най-много данни, както е удобно във видимата част на решетката.

> Доколкото разбирам, в действителност, трябва да, че потребител може> види (и редактиране в мрежата), в резултат на няколко последователни> искания.
Да.

> Един от вариантите за решения: използвайте MemoryTable,> в които и двете се сливат резултатите от заявката.
И това е възможно малко повече?


> Diokant (19.06.03 11:57)

Има компоненти, потомците на TDataSet, които работят с данните, не е по никакъв база данни и паметта. Веднъж използван TRxMemoryTable (може и да греша в заглавието, това е дълъг период от време), питам - тук ви посъветва как най-добре да се използва и къде да се получи.
И алгоритъма изглежда така:
Искането е направено. Получената набор данни от заявките се записва в MemoryTable. Се извършва следващата заявка - в резултат на набор от данни се добавя към снимачната площадка в MemoryTable. И т.н.
За да редактирате данните могат да се изпращат към сървъра в този MemoryTable писмено манипулатор, например, OnBeforePost, в която и двете извърши заявка UPDATE.

Подкрепете проекта - споделете линка, благодаря!