Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
3-64023
Melbis
2003-03-01 16:01
2003.03.20
Как программно выделить строку в DBGrid


3-63941
ki11er
2003-03-03 16:44
2003.03.20
Одновременные запросы (BDE)...


4-64437
Donatas
2003-01-22 20:54
2003.03.20
?readprocessmemory?


4-64441
ISergey
2003-01-25 12:15
2003.03.20
Речь о длл. Будьте бдительны! Глюк Delphi 6!


6-64269
Delphi 5.01
2002-12-06 16:35
2003.03.20
Irc na Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский