|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Нумерация в DBGrid
Добрый день! Помогите, пожалуйста решить такую задачку:
Есть таблица отраженная в DBGrid с полями: Номер п/п, Дата поступления, Организация и т.д. Возможно ли при добавлении новой записи в таблицу сделать автоматическую нумерацию строк, чтоб номера отображались в столбце Номер п/п. |
#2
|
||||
|
||||
Сделай поле автоинкрементное в таблице и отображай его в DBGrid
|
#3
|
|||
|
|||
А поподробней можно или ссылку где почитать?
|
#4
|
||||
|
||||
База какая? В аксесе- это поле создается автоматически при создании таблицы (в 2007 аксесе- это поле называется КОД, тип данных- СЧЕТЧИК). В paradox создаете поле с любым именем с типом AUTOINC (вроде там такой тип). В InterBase- надо создать генератор и написать тригер для подстановки значения генератора...
Вообще наберите в поисковике: тип своей базы + автоинкремет. |
#5
|
|||
|
|||
У меня БД в Access, подключенная через ADO.
|
#6
|
||||
|
||||
Я не понимаю в чем проблема. Открой свою базу в аксесе, открой структуру своей таблицы, выбери поле Номер п/п и установи его тип- СЧЕТЧИК. Все, после выполнения операции POST, новой записи будет присвоен новый номер.
|
#7
|
|||
|
|||
Извините за глупые вопросы, но опыта в программировании у меня маловато. Поставила я в Access поле Номер п/п – счетчик.
Когда заносишь данные в DBGrid в колонке номер п/п ни чего не отображается. |
#8
|
||||
|
||||
Счетчик срабоает только после отправки данных в базу.
Как заносишь данные? Смотри личные сообщения, я отправи номер аськи, там будет проще и быстрее объяснить. |
#9
|
||||
|
||||
Автоинкрементное поле не подходит, т.к. оно уникально и не сместится на одно значение.
В начале был Бит, потом Байт и только потом появилось Слово... |
#10
|
|||
|
|||
По кнопке Добавить запись появляется форма, в нее необходимо занести данные. Мне нужно, чтоб поле Номер п/п заполнялся автоматически.
См.рис. Вложение 1 |
#11
|
||||
|
||||
Сам столкнулся с такой же проблемой...в сети ничего не нашел...дело в том что у DBGrid нет автоматической нумерации...таблицу можно заполнить только посредством набора данных...т.е. через TTable или TQuery...т.е. помимо выборки нужно еще и обновлять поле номер базы данных, т.е. нумеровать...
В начале был Бит, потом Байт и только потом появилось Слово... |
#12
|
|||
|
|||
Неужели нет ни какого выхода?
|
#13
|
||||
|
||||
DBGrid это ни что иное как графическое представление данных базы, ессесно оно ниче кроме как показать что есть в таблице не может.
Еще раз поторяю, делайте автоинкрементное поле! Не нравится автоиткремент- проставляйте номера вручную, не нравиться проставлять вручную- сделайте вычисляемое поле, и при каждом обращении к таблице оно будет само пересчитываться. |
#14
|
||||
|
||||
Повторюсь автоинкрементное поле не подходит, т.к. при выборке данных номер автоикрементного поля не изменится...пример...
1 Саша 2 Дима 3 Денис 4 Вася 5 Алеша 6 Петя если выбрать только те имена которые имеют 4 буквы то вот что получится... 1 Саша 2 Дима 4 Вася 6 Петя Вариант заново проставлять все номера в наборе данных, но поле не автоинкрементное, т.к. его менять нельзя, BDE само увеличивает его значение на 1...т.е. к примеру изначально было так... 1 Саша 2 Дима 3 Денис 4 Вася 5 Алеша 6 Петя После выборки так, 1 Саша 2 Дима 3 Вася 4 Петя а в базе данных осталось так 1 Саша 2 Дима 3 Денис //остался прежний номер 3 Вася 5 Алеша //остался прежний номер 4 Петя А как сделать поле вычисляемым ума не приложу... На одном из форумов читал, парни просто рисуют на канве номера, а еще есть нестандартный компонент таблица, который позволяет нумеровать строки, но по моему он платный... В начале был Бит, потом Байт и только потом появилось Слово... |
#15
|
||||
|
||||
Небольшая подсказка: При любом типе выборки, независимо от вида сортировки RecNo будет возвращать порядковый номер строки в этой выборке, т.е. то что вы хотите. Осталось только сделать поле которое будет выводить этот номер в гриде.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |