Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.20;
Скачать: CL | DM;

Вниз

Добавление новой записи.   Найти похожие ветки 

 
valik   (2003-02-24 13:38) [0]

Помогите разобраться...
При добавлении инсертом записи она помещается в конец базы, а мне надо, чтобы на месте курсора помещалась...
В чем тут проблема, ведь инсерт должен добавлять в нужную позицию.???


 
Reindeer Moss Eater   (2003-02-24 13:44) [1]

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


 
Andrey ©   (2003-02-24 13:50) [2]

>Reindeer Moss Eater
:)

А теперь по русски. Записи отображаются на экране отсортированые определенным образом, а добавляются обычно в конец таблици. Добавить запись в середину таблици нетак просто. Лучше применяй сортировку по индексу.


 
Desdechado ©   (2003-02-26 14:40) [3]

или пользуй TQuery + CachedUpdates


 
skiph ©   (2003-02-27 10:14) [4]

Допустим нужно вставить строку на позицию 5-й. Если таблица небольшая и даже маленьная, то можно сразу после вставки применить следующий алгоритм:
1)После добавления записи (пусть ее номер будет n+1), копируем n-ю запись в запись n+1.
2) Переходим на запись n-1 и копируем значения ее полей в запись n
3) и т.д.
Таким образом как бы "спускаем" все существующие записи на позицию вниз. Когда дойдем до 5-й записи, просто очищаем ее. Все.
Дешево и сердито.
Мастеров прошу метод не пинать :)


 
Desdechado ©   (2003-02-27 11:05) [5]

пинать не буду, просто прибью на месте :)

это вообще изврат и годится только для однопользовательской маленькой БД файл-серверного типа. Или даже не годится вовсе


 
vopros ©   (2003-02-27 11:50) [6]

В целом сама задача изврат


 
vopros ©   (2003-02-27 11:52) [7]

Но можно сделать проще счетчик на каждую запись и предположим +100 на следующую Тобишь 99 записей можем добавить между 2 искомыми


 
MsGuns ©   (2003-02-27 12:00) [8]

Без добавления суррогатного поля - индекса (ключа) не обойтись никак. Правда есть еще простой способ - таблица без ключей и индексов. Что бы здесь не говорили мастаки и не очень по поводу "извращенности" подобного подхода, он (подход) реально существует, как бы им не хотелось в этом признаться.


 
Vovchik_A ©   (2003-02-27 13:15) [9]

Без добавления поля-счетчика тебе это скорее всего не удастся сделать. Что, впрочем, тебе уже MsGuns © сказал


 
sniknik ©   (2003-02-27 13:45) [10]

ну смотря где, в fox-е (а также в дельфях и при доступе через фоксовый драйвер) позволительно обращатся к записи по номеру (вместо счетчика), в том числе и в запросах
типа
SELECT RecNo() as RecNo,* FROM table1
то есть, извращение выльется во вставку записи в текущую позицию и "сдвиг" следуюших. (вернее наоборот сдвиг, вставка) индексов естественно нельзя использовать ибо все перемешается.


 
Johnmen ©   (2003-02-27 14:01) [11]

>sniknik © (27.02.03 13:45)

А все потому, что существует доступное только по чтению для пользователя поле, где лежит recno. И обрабатывается оно самой СУБД (драйвером).
(это так, к слову...:))


 
sniknik ©   (2003-02-27 14:17) [12]

Johnmen © (27.02.03 14:01)
а вот и нет. :-))

не я согласен что СУБД обрабатывает представление RecNo и работу с ним, но в базе его нет точно (расчетное). могу открыть через него таблицу от dBase III (в ней разве есть доп.поле?) тем не менее запрос
SELECT RecNo(),* FROM ms
работает.
структура dBase III описана могу выслать (может а просто не нашол, но не думаю).
вот вся структура с 1-м полем
g A & PRICE N
10.00
где?

ты наверно с IB путаеш (слышал там есть подобное) вот тут спорить вообще не буду (может и еще где есть).


 
Johnmen ©   (2003-02-27 14:37) [13]

>sniknik © (27.02.03 14:17)

Возможно я заблуждаюсь насчет хранения этого поля...Возможно ты прав - оно оперативно пересчитывается средствами СУБД.
Хотя когда-то в довиндовую эру считал, что храниться, пересчитываясь...:))
С IB не путал...:)



Страницы: 1 вся ветка

Текущий архив: 2003.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.018 c
6-64249
stim
2003-01-29 14:08
2003.03.20
Пишу звонилку. Проблема с телефоном провайдера


1-64136
Softik
2003-03-10 06:06
2003.03.20
Как выгрузить корректно из памяти ОЛЕ-объект? ведь присвоение UnA


14-64295
Dimka Maslov
2003-03-06 14:51
2003.03.20
A War for Peace


6-64250
Barmutik
2003-01-26 17:02
2003.03.20
Помогите с WebBrowser


1-64183
SeNtiMeL
2003-03-06 01:03
2003.03.20
как в RichEdit добавить линию разделитель, на весь его размер ?