Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Еще раз о больном: Calculated Fields [D5, Access 2000]


VaZ ©   (2002-09-05 09:06:00) 

Так сказать SOS... Я , значит, написал прогу на диплом "База данных" в Accesse, по ходу дела мне нужна сквозная нумерация записей(т.е 1,2,3...). По глупости сначала я сделал для этих целей отдельное поле, которое и записывал при вставке записи. База выросла и нумерация стала ОЧЕНЬ тормозить, да и порядок исчез (1,3,2...). Решил сделать вычисляемое поле,
в обработчике поставил увеличение(Inc),где правильно обнуление сделать? А то либо заоблачные цифры, либо их нехватка (вместо сотен - десятки). Как вообще реализовать это дело лучше.
SOS!!!


VaZ   (2002-09-09 08:42:00) [1]

Anatoly Podgoretsky
> Что то ты темнишь про заказчиков, нафига им какой то абстрактный
> номер записи, если им и нужен номер, то номер человека.

На самом деле мои заказчики - профсоюзный комитет нашей академии (база данных учета членов профсоюза), и у них была база без этих номеров на FOXе - таки не устраивает. Я переделал ее на DELPHI. А вообще я попробую воспользоваться советом kavlad, мне кажется это самый незамудреный путь из предложенных. Я и спрашивал то потому, что думал есть простой путь, а я его не вижу...Думал кто наставит на путь правильный.


Anatoly Podgoretsky   (2002-09-08 15:08:00) [2]

Что то ты темнишь про заказчиков, нафига им какой то абстрактный номер записи, если им и нужен номер, то номер человека.
Но если уж очень хочется, то надо помучаться с InternalCalc
Если номер нужен в отчете, то все генераторы отчетов позволяют сделать это. Или используй совет kavlad © (08.09.02 14:51), но думаб ты нам можги компостируешь.


kavlad   (2002-09-08 14:51:00) [3]

Хочешь добиться скорости - не стоит хранить нумерацию в базе, это поле тебе вообще не нужно. Если необходимо показывать номер в гриде используй лучше TSrtingGrid, а можно показывать нумерацию в хинте или в отдельном окне с детальной информацией по записи.


V aZ   (2002-09-08 08:37:00) [4]

Спасибо ossза комплимент. Но не я мутный, а заказчики проги. Без этой нумерации почти все идеально работает. Mike9777я конечно попробую, потом напишу что и как...
Если честно, я думал все попроще будет. А насчет того что calcfield постоянно пересчитываются при движении я заметил...
Может у кого есть еще какие идеи?


mike9777   (2002-09-06 15:59:00) [5]

По поводу RecNo - попробуй ADO table и поменять TableDirect. Или CursorLocation и CursorType

Или grid возьми string"овый и сам все вписывай. Это вообще лучше, чем доверять борландовской реализации


DarkGreen   (2002-09-06 12:57:00) [6]

Хм... А может попробовать создать столбец в гриде самостоятельно не назначая ему физического поля БД (он имеет тип TCollectionItem) а при открытии, фильтрации (установка, снятие), удалении, вставки или записи читать количество записей в любом столбце грида (хотя не знаю если пользоваться TTable"ом он сразу закачивает все данные или нет) и соответственно пересоздать самостоятельно созданный столбец.
Других мыслей у меня нет :-/


ЮЮ   (2002-09-06 12:30:00) [7]

Взять Другой Grid, например DbGridEh, в нем в onDrawCell есть доступ к DataLink.ActiveRecord, что и есть номер записи. И рисуй её на здоровье в нужный столбец.


oss   (2002-09-06 12:22:00) [8]

ты конечно мутный :)
сделай дополнительно поле для этого номера, как и есть у тебя,
и сделай дополнительную таблицу,
куда будешь заносить № удаленного,
при вставке будешь брать либо их этой второй таблице, а если она будет аустой, то мах+1 из основной.
Но ето полнейший бред :)


ЮЮ   (2002-09-06 12:10:00) [9]

>Ведь вычисл. поля, если их как-то обнулять где-нибудь, вполне нормально работают.

вычисл. поля пересчитаются постоянно при движению по DataSety.


VaZ   (2002-09-06 12:07:00) [10]

А нужна она не мне, нужна тем кому пишу
Они хотят видеть порядковый номер (1,2,3,4 ...N) напротив фамилии
чувака, общее кол-во в базе их не устраивает, а мне то приходится делать, диплом то всем нужен...


VaZ   (2002-09-06 12:05:00) [11]

так сейчас так и есть, то есть все отслеживается программно
Но тормозит... Насчет хранимых процедур не знаю, не силен.
А вот RecNo я хотел использовать, да ничего не вышло(неправильно делал видимо). Писало всегда -1. Ведь вычисл. поля, если их как-то обнулять где-нибудь, вполне нормально работают. У меня есть след. ситуации, где должна происходить перенумерация:
- при запуске
- при наложении диапазона (выборка по подразделению)
- при фильтрации (алфав. список - по буквам)
- при добавлении, удалении, редактировании


ЮЮ   (2002-09-06 11:23:00) [12]

Я под нумерацией понимаю поле, которое определяет порядок следования записей, отличный от того, в котором записи хранятся в таблице.
А зачем автору сквозная нумерация, бог его знает. Access должен поддерживать RecNo, ведь в его Формах показывается Запись NNN из MMM.


DarkGreen   (2002-09-06 11:13:00) [13]

2ЮЮ
Не советовал бы я такое делать. Даже если в табличке будет порядка 10000 записей, то удаление приведет к такому долгому процессу, что пользователи проги повешают программера на UTP шнуре.
Вообще это можно реализовать с помощью хранимых процедур, но ведь их нету в аксесе, иль есть?


ЮЮ   (2002-09-06 07:19:00) [14]

>По глупости сначала я сделал для этих целей отдельное поле

Если нумерация всё-таки действительно нужна, то и следи за ней программно: переписывай значения полей при удалении и вставке записей. В Вычислимом поле ты ничего такого не получишь, даже не старайся.


VaZ   (2002-09-06 05:16:00) [15]

Ну люди, ну помогите же
Наверняка уже не раз так делали, а я впервые - подскажите как, направьте в нужное русло. Мне бы алгоритм нумерации работающий правильно...Ну плиз...


Наверх

Титульная страница Поиск, карта сайта Написать письмо