Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 10:50
Оценка:
Столкнулся со следующей проблемой(видимо всё просто, но я новичок в этом деле) — при выводе базы данных через DBGrid надо отображать номера записей, т.е. что-то типа:

Номер    Поле1    Поле2    Поле3
  1      11111    12222    46321
  2      32165    44684    44215
  3      12176    57734    48332
  4      79832    17965    47963
  5      78932    14654    65432
  6      76542    68732    76542


и т.д.

Надо, чтобы номера динамически изменялись при добавлении/удалении записей.
При этом нежелательно хранить номер в БД, хотя, пожалуй, и можно.

Если это важно — БД — paradox.

Читал хелп, но, наверное, я тупой — не нашел про это ничего. Саму таблицу динамически править не хочеться. Хотелось бы через DBGrid.

Заранее спасибо
Re: Нужна помощь с базой данных
От: ak_miass Россия  
Дата: 20.04.05 10:53
Оценка:
Здравствуйте, AlexNiden, Вы писали:

Сам давно не работал с БД, поэтому не ручаюсь что поможет, но попробуй создать вычисляемое поле и выводить в него RecNo.
Re: Нужна помощь с базой данных
От: rico_spb  
Дата: 20.04.05 11:03
Оценка:
Я бы даже сказал, RecNo+1

С уважением,
Кирилл Разуваев
Posted via RSDN NNTP Server 1.9
Re: Нужна помощь с базой данных
От: linker Россия  
Дата: 20.04.05 11:11
Оценка: -1
Здравствуйте, AlexNiden, Вы писали:

AN>Столкнулся со следующей проблемой(видимо всё просто, но я новичок в этом деле) — при выводе базы данных через DBGrid надо отображать номера записей, т.е. что-то типа:


AN>
AN>Номер    Поле1    Поле2    Поле3
AN>  1      11111    12222    46321
AN>  2      32165    44684    44215
AN>  3      12176    57734    48332
AN>  4      79832    17965    47963
AN>  5      78932    14654    65432
AN>  6      76542    68732    76542

AN>


AN>и т.д.


AN>Надо, чтобы номера динамически изменялись при добавлении/удалении записей.

AN>При этом нежелательно хранить номер в БД, хотя, пожалуй, и можно.

AN>Если это важно — БД — paradox.


AN>Читал хелп, но, наверное, я тупой — не нашел про это ничего. Саму таблицу динамически править не хочеться. Хотелось бы через DBGrid.


AN>Заранее спасибо

Как вариант можно сделать поле "Номер" автоинкремент при добавлении будет добавлться как надо, а после удаления надо будет запрос писать
типа,что бы при добавлении записи по порядку шли
alter table table1   AUTO_INCREMENT =0
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re: Нужна помощь с базой данных
От: wildwind Россия  
Дата: 20.04.05 12:15
Оценка:
Здравствуйте, AlexNiden, Вы писали:

AN>при выводе базы данных через DBGrid надо отображать номера записей,


А может, не надо?
Re[2]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 12:58
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AlexNiden, Вы писали:


AN>>при выводе базы данных через DBGrid надо отображать номера записей,


W>А может, не надо?


В том то и дело, что надо
Re[2]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 13:03
Оценка:
Здравствуйте, linker, Вы писали:

L>Здравствуйте, AlexNiden, Вы писали:


AN>>Столкнулся со следующей проблемой(видимо всё просто, но я новичок в этом деле) — при выводе базы данных через DBGrid надо отображать номера записей, т.е. что-то типа:


AN>>
AN>>Номер    Поле1    Поле2    Поле3
AN>>  1      11111    12222    46321
AN>>  2      32165    44684    44215
AN>>  3      12176    57734    48332
AN>>  4      79832    17965    47963
AN>>  5      78932    14654    65432
AN>>  6      76542    68732    76542

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...

Может, не ноль надо присваивать, а последней записи?
Re[2]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 13:04
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Здравствуйте, AlexNiden, Вы писали:


_>Сам давно не работал с БД, поэтому не ручаюсь что поможет, но попробуй создать вычисляемое поле и выводить в него RecNo.


Хм... Попробую — самому в голову такое не пришло... Спасибо.
Re[3]: Нужна помощь с базой данных
От: linker Россия  
Дата: 20.04.05 13:12
Оценка: 2 (1)
AN>Изначально поле автоинкремент было, но при удалении записей нумерация продолжалась дальше, т.е. 1,2,3,4,5(удалено),6,7,8...

AN>Может, не ноль надо присваивать, а последней записи?


Да, точно описался.Тогда в чем проблема?
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Re[4]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 13:30
Оценка:
Здравствуйте, linker, Вы писали:


AN>>Изначально поле автоинкремент было, но при удалении записей нумерация продолжалась дальше, т.е. 1,2,3,4,5(удалено),6,7,8...


AN>>Может, не ноль надо присваивать, а последней записи?


L>Да, точно описался.Тогда в чем проблема?


Вот теперь ни в чём. Спасибо большое!
Re[3]: Нужна помощь с базой данных
От: wildwind Россия  
Дата: 20.04.05 14:21
Оценка:
Здравствуйте, AlexNiden, Вы писали:

W>>А может, не надо?

AN>В том то и дело, что надо
А сможешь обосновать, для чего?
("Заказчик хочет красивые номера" не принимается.)
Re[3]: Нужна помощь с базой данных
От: Danchik Украина  
Дата: 20.04.05 15:17
Оценка:
Здравствуйте, 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;


Ну и выводиш в DBGrid это поле ID
Re[4]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 19:17
Оценка: :))
Здравствуйте, Danchik, Вы писали:

D>Здравствуйте, AlexNiden, Вы писали:


AN>>Здравствуйте, ak_miass, Вы писали:


_>>>Здравствуйте, AlexNiden, Вы писали:


_>>>Сам давно не работал с БД, поэтому не ручаюсь что поможет, но попробуй создать вычисляемое поле и выводить в него RecNo.


AN>>Хм... Попробую — самому в голову такое не пришло... Спасибо.

D>Ну что пробовал ? Я — да, все замечательно выводится.
D>Добавляеш Calculated Field в DataSet (Назовем его ID), в сообщении OnCalcFields пишеш:

D>
D>procedure TForm1.Table1CalcFields(DataSet: TDataSet);
D>begin
D>  DataSet.FieldByName ('ID').AsInteger := DataSet.RecNo;
D>end;
D>


D>Ну и выводиш в DBGrid это поле ID

Попробовал. Только я сделал не asInteger, а
DataSet.FieldByName ('ID').Value := DataSet.RecNo;
Re[4]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 20.04.05 19:21
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AlexNiden, Вы писали:


W>>>А может, не надо?

AN>>В том то и дело, что надо
W>А сможешь обосновать, для чего?
W>("Заказчик хочет красивые номера" не принимается.)
На самом деле, именно "Заказчик хочет красивые номера"
По-моему, естественно знать, под каким номером у тебя запись в БД. Практической цели особой нет, насколько мне известно, но просто приятно — это юзабилити и не более.
Если бы я заказывал что-то подобное, я бы обязательно попросил бы такую же фишку.

Мне лично приятно смотреть номера строк кода в редакторе, просто так, даже когда я не смотрю на сообщения "error at line №...". Мне нравиться знать, сколько строк я написал. Заказчику нравиться видеть сколько он записей имеет
Re[5]: Нужна помощь с базой данных
От: Demiurg  
Дата: 20.04.05 19:30
Оценка: +1
Здравствуйте, AlexNiden, Вы писали:

W>>А сможешь обосновать, для чего?

W>>("Заказчик хочет красивые номера" не принимается.)
AN>На самом деле, именно "Заказчик хочет красивые номера"

Не все понимают, что заказчик всегда прав

AN>По-моему, естественно знать, под каким номером у тебя запись в БД.


Да ну. Если нужно знать в каком порядке они вводились, то для этого можно дату заведения использовать. А обновлять после каждого delete таблицу — бред.

AN> Практической цели особой нет, насколько мне известно, но просто приятно — это юзабилити и не более.

AN>Если бы я заказывал что-то подобное, я бы обязательно попросил бы такую же фишку.

Это поле ничего не значит.

AN>Мне лично приятно смотреть номера строк кода в редакторе, просто так, даже когда я не смотрю на сообщения "error at line №...". Мне нравиться знать, сколько строк я написал. Заказчику нравиться видеть сколько он записей имеет


Для этого есть count.
... << RSDN@Home 1.1.4 beta 6 rev. 422>>
Re[5]: Нужна помощь с базой данных
От: fetis  
Дата: 21.04.05 06:50
Оценка: +1
Здравствуйте, AlexNiden, Вы писали:

AN>По-моему, естественно знать, под каким номером у тебя запись в БД.

Для того, чтобы знать под каким номером у тебя запись нужно вводить поле ID и хранить это в самой базе, а не так как это у вас делается. Если же коснуться теории БД, то записи хранятся в общем случае совсем не по порядку, они просто есть в таблице и закладываться на то, что эта запись идет под №3 нельзя ни в коем случае.
Re[5]: Нужна помощь с базой данных
От: wildwind Россия  
Дата: 21.04.05 08:12
Оценка: +1
Здравствуйте, AlexNiden, Вы писали:

AN>На самом деле, именно "Заказчик хочет красивые номера"


Да, заказчик бывает упертый и иногда с ним не поспоришь. Если никуда не деться, сделай номера в гриде, но базу ворошить незачем.

Но имей в виду, что в конечном счете тебе это выйдет дороже, чем сразу просветить заказчика, что смысла в этих номерах не больше, чем в адресах памяти, где лежат записи. Обязательно начнутся проблемы типа "Ваша программа неправильно работает. Я занес эту запись под номером 3, а теперь она под номером 126..." и т.п.
Re[6]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 21.04.05 16:27
Оценка:
Здравствуйте, wildwind, Вы писали:

W>Здравствуйте, AlexNiden, Вы писали:


AN>>На самом деле, именно "Заказчик хочет красивые номера"


W>Да, заказчик бывает упертый и иногда с ним не поспоришь. Если никуда не деться, сделай номера в гриде, но базу ворошить незачем.


W>Но имей в виду, что в конечном счете тебе это выйдет дороже, чем сразу просветить заказчика, что смысла в этих номерах не больше, чем в адресах памяти, где лежат записи. Обязательно начнутся проблемы типа "Ваша программа неправильно работает. Я занес эту запись под номером 3, а теперь она под номером 126..." и т.п.

Я подумал и сделал в гриде.
А дело не в том, что заказчик будет вносить записи под конкретными номерами — ему надо просто нумеровать записи автомитически — это совершенно бессмысленное и неинформативное поле, с этим я согласен, но действительно заказчик всегда прав.
Re[6]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 21.04.05 16:28
Оценка:
Здравствуйте, fetis, Вы писали:

F>Здравствуйте, AlexNiden, Вы писали:


AN>>По-моему, естественно знать, под каким номером у тебя запись в БД.

F>Для того, чтобы знать под каким номером у тебя запись нужно вводить поле ID и хранить это в самой базе, а не так как это у вас делается. Если же коснуться теории БД, то записи хранятся в общем случае совсем не по порядку, они просто есть в таблице и закладываться на то, что эта запись идет под №3 нельзя ни в коем случае.
Номер записи не имеет никакой ценности в БД, поэтому он там у меня и не хранится. Он просто выводится на экран
Re[6]: Нужна помощь с базой данных
От: AlexNiden  
Дата: 21.04.05 16:30
Оценка:
Здравствуйте, Demiurg, Вы писали:

D>Здравствуйте, AlexNiden, Вы писали:


AN>>По-моему, естественно знать, под каким номером у тебя запись в БД.


D> Да ну. Если нужно знать в каком порядке они вводились, то для этого можно дату заведения использовать. А обновлять после каждого delete таблицу — бред.

Таблицы микроскопические — 10-100 записей, причём 100 — это СИЛЬНЫЙ перебор. Такие можно и обновлять


AN>> Практической цели особой нет, насколько мне известно, но просто приятно — это юзабилити и не более.

AN>>Если бы я заказывал что-то подобное, я бы обязательно попросил бы такую же фишку.

D> Это поле ничего не значит.


AN>>Мне лично приятно смотреть номера строк кода в редакторе, просто так, даже когда я не смотрю на сообщения "error at line №...". Мне нравиться знать, сколько строк я написал. Заказчику нравиться видеть сколько он записей имеет


D> Для этого есть count.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.