Столкнулся со следующей проблемой(видимо всё просто, но я новичок в этом деле) — при выводе базы данных через DBGrid надо отображать номера записей, т.е. что-то типа:
Здравствуйте, AlexNiden, Вы писали:
AN>Столкнулся со следующей проблемой(видимо всё просто, но я новичок в этом деле) — при выводе базы данных через DBGrid надо отображать номера записей, т.е. что-то типа:
AN>
AN>и т.д.
AN>Надо, чтобы номера динамически изменялись при добавлении/удалении записей. AN>При этом нежелательно хранить номер в БД, хотя, пожалуй, и можно.
AN>Если это важно — БД — paradox.
AN>Читал хелп, но, наверное, я тупой — не нашел про это ничего. Саму таблицу динамически править не хочеться. Хотелось бы через DBGrid.
AN>Заранее спасибо
Как вариант можно сделать поле "Номер" автоинкремент при добавлении будет добавлться как надо, а после удаления надо будет запрос писать
типа,что бы при добавлении записи по порядку шли
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, AlexNiden, Вы писали:
AN>>при выводе базы данных через DBGrid надо отображать номера записей,
W>А может, не надо?
Здравствуйте, linker, Вы писали:
L>Здравствуйте, AlexNiden, Вы писали:
AN>>Столкнулся со следующей проблемой(видимо всё просто, но я новичок в этом деле) — при выводе базы данных через DBGrid надо отображать номера записей, т.е. что-то типа:
AN>>
AN>>и т.д.
AN>>Надо, чтобы номера динамически изменялись при добавлении/удалении записей. AN>>При этом нежелательно хранить номер в БД, хотя, пожалуй, и можно.
AN>>Если это важно — БД — paradox.
AN>>Читал хелп, но, наверное, я тупой — не нашел про это ничего. Саму таблицу динамически править не хочеться. Хотелось бы через DBGrid.
AN>>Заранее спасибо L>Как вариант можно сделать поле "Номер" автоинкремент при добавлении будет добавлться как надо, а после удаления надо будет запрос писать L>типа,что бы при добавлении записи по порядку шли L>
L>alter table table1 AUTO_INCREMENT =0
L>
Не понял, как этот запрос исправит порядок записей?
Изначально поле автоинкремент было, но при удалении записей нумерация продолжалась дальше, т.е. 1,2,3,4,5(удалено),6,7,8...
Может, не ноль надо присваивать, а последней записи?
Здравствуйте, ak_miass, Вы писали:
_>Здравствуйте, AlexNiden, Вы писали:
_>Сам давно не работал с БД, поэтому не ручаюсь что поможет, но попробуй создать вычисляемое поле и выводить в него RecNo.
Хм... Попробую — самому в голову такое не пришло... Спасибо.
AN>Изначально поле автоинкремент было, но при удалении записей нумерация продолжалась дальше, т.е. 1,2,3,4,5(удалено),6,7,8...
AN>Может, не ноль надо присваивать, а последней записи?
AN>>Изначально поле автоинкремент было, но при удалении записей нумерация продолжалась дальше, т.е. 1,2,3,4,5(удалено),6,7,8...
AN>>Может, не ноль надо присваивать, а последней записи?
L>Да, точно описался.Тогда в чем проблема?
Здравствуйте, AlexNiden, Вы писали:
W>>А может, не надо? AN>В том то и дело, что надо
А сможешь обосновать, для чего?
("Заказчик хочет красивые номера" не принимается.)
Здравствуйте, AlexNiden, Вы писали:
AN>Здравствуйте, ak_miass, Вы писали:
_>>Здравствуйте, AlexNiden, Вы писали:
_>>Сам давно не работал с БД, поэтому не ручаюсь что поможет, но попробуй создать вычисляемое поле и выводить в него RecNo.
AN>Хм... Попробую — самому в голову такое не пришло... Спасибо.
Ну что пробовал ? Я — да, все замечательно выводится.
Добавляеш Calculated Field в DataSet (Назовем его ID), в сообщении OnCalcFields пишеш:
procedure TForm1.Table1CalcFields(DataSet: TDataSet);
begin
DataSet.FieldByName ('ID').AsInteger := DataSet.RecNo;
end;
Здравствуйте, Danchik, Вы писали:
D>Здравствуйте, AlexNiden, Вы писали:
AN>>Здравствуйте, ak_miass, Вы писали:
_>>>Здравствуйте, AlexNiden, Вы писали:
_>>>Сам давно не работал с БД, поэтому не ручаюсь что поможет, но попробуй создать вычисляемое поле и выводить в него RecNo.
AN>>Хм... Попробую — самому в голову такое не пришло... Спасибо. D>Ну что пробовал ? Я — да, все замечательно выводится. D>Добавляеш Calculated Field в DataSet (Назовем его ID), в сообщении OnCalcFields пишеш:
D>
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, AlexNiden, Вы писали:
W>>>А может, не надо? AN>>В том то и дело, что надо W>А сможешь обосновать, для чего? W>("Заказчик хочет красивые номера" не принимается.)
На самом деле, именно "Заказчик хочет красивые номера"
По-моему, естественно знать, под каким номером у тебя запись в БД. Практической цели особой нет, насколько мне известно, но просто приятно — это юзабилити и не более.
Если бы я заказывал что-то подобное, я бы обязательно попросил бы такую же фишку.
Мне лично приятно смотреть номера строк кода в редакторе, просто так, даже когда я не смотрю на сообщения "error at line №...". Мне нравиться знать, сколько строк я написал. Заказчику нравиться видеть сколько он записей имеет
Здравствуйте, AlexNiden, Вы писали:
W>>А сможешь обосновать, для чего? W>>("Заказчик хочет красивые номера" не принимается.) AN>На самом деле, именно "Заказчик хочет красивые номера"
Не все понимают, что заказчик всегда прав
AN>По-моему, естественно знать, под каким номером у тебя запись в БД.
Да ну. Если нужно знать в каком порядке они вводились, то для этого можно дату заведения использовать. А обновлять после каждого delete таблицу — бред.
AN> Практической цели особой нет, насколько мне известно, но просто приятно — это юзабилити и не более. AN>Если бы я заказывал что-то подобное, я бы обязательно попросил бы такую же фишку.
Это поле ничего не значит.
AN>Мне лично приятно смотреть номера строк кода в редакторе, просто так, даже когда я не смотрю на сообщения "error at line №...". Мне нравиться знать, сколько строк я написал. Заказчику нравиться видеть сколько он записей имеет
Здравствуйте, AlexNiden, Вы писали:
AN>По-моему, естественно знать, под каким номером у тебя запись в БД.
Для того, чтобы знать под каким номером у тебя запись нужно вводить поле ID и хранить это в самой базе, а не так как это у вас делается. Если же коснуться теории БД, то записи хранятся в общем случае совсем не по порядку, они просто есть в таблице и закладываться на то, что эта запись идет под №3 нельзя ни в коем случае.
Здравствуйте, AlexNiden, Вы писали:
AN>На самом деле, именно "Заказчик хочет красивые номера"
Да, заказчик бывает упертый и иногда с ним не поспоришь. Если никуда не деться, сделай номера в гриде, но базу ворошить незачем.
Но имей в виду, что в конечном счете тебе это выйдет дороже, чем сразу просветить заказчика, что смысла в этих номерах не больше, чем в адресах памяти, где лежат записи. Обязательно начнутся проблемы типа "Ваша программа неправильно работает. Я занес эту запись под номером 3, а теперь она под номером 126..." и т.п.
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, AlexNiden, Вы писали:
AN>>На самом деле, именно "Заказчик хочет красивые номера"
W>Да, заказчик бывает упертый и иногда с ним не поспоришь. Если никуда не деться, сделай номера в гриде, но базу ворошить незачем.
W>Но имей в виду, что в конечном счете тебе это выйдет дороже, чем сразу просветить заказчика, что смысла в этих номерах не больше, чем в адресах памяти, где лежат записи. Обязательно начнутся проблемы типа "Ваша программа неправильно работает. Я занес эту запись под номером 3, а теперь она под номером 126..." и т.п.
Я подумал и сделал в гриде.
А дело не в том, что заказчик будет вносить записи под конкретными номерами — ему надо просто нумеровать записи автомитически — это совершенно бессмысленное и неинформативное поле, с этим я согласен, но действительно заказчик всегда прав.
Здравствуйте, fetis, Вы писали:
F>Здравствуйте, AlexNiden, Вы писали:
AN>>По-моему, естественно знать, под каким номером у тебя запись в БД. F>Для того, чтобы знать под каким номером у тебя запись нужно вводить поле ID и хранить это в самой базе, а не так как это у вас делается. Если же коснуться теории БД, то записи хранятся в общем случае совсем не по порядку, они просто есть в таблице и закладываться на то, что эта запись идет под №3 нельзя ни в коем случае.
Номер записи не имеет никакой ценности в БД, поэтому он там у меня и не хранится. Он просто выводится на экран
Здравствуйте, Demiurg, Вы писали:
D>Здравствуйте, AlexNiden, Вы писали:
AN>>По-моему, естественно знать, под каким номером у тебя запись в БД.
D> Да ну. Если нужно знать в каком порядке они вводились, то для этого можно дату заведения использовать. А обновлять после каждого delete таблицу — бред.
Таблицы микроскопические — 10-100 записей, причём 100 — это СИЛЬНЫЙ перебор. Такие можно и обновлять
AN>> Практической цели особой нет, насколько мне известно, но просто приятно — это юзабилити и не более. AN>>Если бы я заказывал что-то подобное, я бы обязательно попросил бы такую же фишку.
D> Это поле ничего не значит.
AN>>Мне лично приятно смотреть номера строк кода в редакторе, просто так, даже когда я не смотрю на сообщения "error at line №...". Мне нравиться знать, сколько строк я написал. Заказчику нравиться видеть сколько он записей имеет
D> Для этого есть count.