Форум: "Базы";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
ВнизЕще раз о больном: Calculated Fields Найти похожие ветки
← →
VaZ (2002-09-05 09:06) [0]Так сказать SOS... Я , значит, написал прогу на диплом "База данных" в Accesse, по ходу дела мне нужна сквозная нумерация записей(т.е 1,2,3...). По глупости сначала я сделал для этих целей отдельное поле, которое и записывал при вставке записи. База выросла и нумерация стала ОЧЕНЬ тормозить, да и порядок исчез (1,3,2...). Решил сделать вычисляемое поле,
в обработчике поставил увеличение(Inc),где правильно обнуление сделать? А то либо заоблачные цифры, либо их нехватка (вместо сотен - десятки). Как вообще реализовать это дело лучше.
SOS!!!
← →
VaZ (2002-09-06 05:16) [1]Ну люди, ну помогите же
Наверняка уже не раз так делали, а я впервые - подскажите как, направьте в нужное русло. Мне бы алгоритм нумерации работающий правильно...Ну плиз...
← →
ЮЮ (2002-09-06 07:19) [2]>По глупости сначала я сделал для этих целей отдельное поле
Если нумерация всё-таки действительно нужна, то и следи за ней программно: переписывай значения полей при удалении и вставке записей. В Вычислимом поле ты ничего такого не получишь, даже не старайся.
← →
DarkGreen (2002-09-06 11:13) [3]2ЮЮ
Не советовал бы я такое делать. Даже если в табличке будет порядка 10000 записей, то удаление приведет к такому долгому процессу, что пользователи проги повешают программера на UTP шнуре.
Вообще это можно реализовать с помощью хранимых процедур, но ведь их нету в аксесе, иль есть?
← →
ЮЮ (2002-09-06 11:23) [4]Я под нумерацией понимаю поле, которое определяет порядок следования записей, отличный от того, в котором записи хранятся в таблице.
А зачем автору сквозная нумерация, бог его знает. Access должен поддерживать RecNo, ведь в его Формах показывается Запись NNN из MMM.
← →
VaZ (2002-09-06 12:05) [5]так сейчас так и есть, то есть все отслеживается программно
Но тормозит... Насчет хранимых процедур не знаю, не силен.
А вот RecNo я хотел использовать, да ничего не вышло(неправильно делал видимо). Писало всегда -1. Ведь вычисл. поля, если их как-то обнулять где-нибудь, вполне нормально работают. У меня есть след. ситуации, где должна происходить перенумерация:
- при запуске
- при наложении диапазона (выборка по подразделению)
- при фильтрации (алфав. список - по буквам)
- при добавлении, удалении, редактировании
← →
VaZ (2002-09-06 12:07) [6]А нужна она не мне, нужна тем кому пишу
Они хотят видеть порядковый номер (1,2,3,4 ...N) напротив фамилии
чувака, общее кол-во в базе их не устраивает, а мне то приходится делать, диплом то всем нужен...
← →
ЮЮ (2002-09-06 12:10) [7]>Ведь вычисл. поля, если их как-то обнулять где-нибудь, вполне нормально работают.
вычисл. поля пересчитаются постоянно при движению по DataSety.
← →
oss (2002-09-06 12:22) [8]ты конечно мутный :)
сделай дополнительно поле для этого номера, как и есть у тебя,
и сделай дополнительную таблицу,
куда будешь заносить № удаленного,
при вставке будешь брать либо их этой второй таблице, а если она будет аустой, то мах+1 из основной.
Но ето полнейший бред :)
← →
ЮЮ (2002-09-06 12:30) [9]Взять Другой Grid, например DbGridEh, в нем в onDrawCell есть доступ к DataLink.ActiveRecord, что и есть номер записи. И рисуй её на здоровье в нужный столбец.
← →
DarkGreen (2002-09-06 12:57) [10]Хм... А может попробовать создать столбец в гриде самостоятельно не назначая ему физического поля БД (он имеет тип TCollectionItem) а при открытии, фильтрации (установка, снятие), удалении, вставки или записи читать количество записей в любом столбце грида (хотя не знаю если пользоваться TTable"ом он сразу закачивает все данные или нет) и соответственно пересоздать самостоятельно созданный столбец.
Других мыслей у меня нет :-/
← →
mike9777 (2002-09-06 15:59) [11]По поводу RecNo - попробуй ADO table и поменять TableDirect. Или CursorLocation и CursorType
Или grid возьми string"овый и сам все вписывай. Это вообще лучше, чем доверять борландовской реализации
← →
V aZ (2002-09-08 08:37) [12]Спасибо oss за комплимент. Но не я мутный, а заказчики проги. Без этой нумерации почти все идеально работает. Mike9777 я конечно попробую, потом напишу что и как...
Если честно, я думал все попроще будет. А насчет того что calcfield постоянно пересчитываются при движении я заметил...
Может у кого есть еще какие идеи?
← →
kavlad (2002-09-08 14:51) [13]Хочешь добиться скорости - не стоит хранить нумерацию в базе, это поле тебе вообще не нужно. Если необходимо показывать номер в гриде используй лучше TSrtingGrid, а можно показывать нумерацию в хинте или в отдельном окне с детальной информацией по записи.
← →
Anatoly Podgoretsky (2002-09-08 15:08) [14]Что то ты темнишь про заказчиков, нафига им какой то абстрактный номер записи, если им и нужен номер, то номер человека.
Но если уж очень хочется, то надо помучаться с InternalCalc
Если номер нужен в отчете, то все генераторы отчетов позволяют сделать это. Или используй совет kavlad © (08.09.02 14:51), но думаб ты нам можги компостируешь.
← →
VaZ (2002-09-09 08:42) [15]Anatoly Podgoretsky
> Что то ты темнишь про заказчиков, нафига им какой то абстрактный
> номер записи, если им и нужен номер, то номер человека.
На самом деле мои заказчики - профсоюзный комитет нашей академии (база данных учета членов профсоюза), и у них была база без этих номеров на FOXе - таки не устраивает. Я переделал ее на DELPHI. А вообще я попробую воспользоваться советом kavlad, мне кажется это самый незамудреный путь из предложенных. Я и спрашивал то потому, что думал есть простой путь, а я его не вижу... Думал кто наставит на путь правильный.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c