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

Вниз

insert   Найти похожие ветки 

 
Ihtiandr   (2003-02-18 18:02) [0]

Когда делаю команду Insert новая запись вставляется перед текущей. Хотелось-бы чтобы вставлялась после текущей. Подскажите пожалуйста.


 
dim-   (2003-02-18 23:31) [1]

можешь перед insert делать Next :)


 
Pat   (2003-02-19 00:29) [2]

>Ihtiandr © (18.02.03 18:02)
Полное непонимание теории БД... :-\
Сортируй записи как тебе надо


 
DarkGreen   (2003-02-19 06:30) [3]

2 Pat © (19.02.03 00:29)
При чем тут понимание теории БД?? Человек хочет, что бы в гриде у него при добавлени новая запись появлялась после текущей, а не перед ней, а это ИМХО зависит в основном от реализации метода инсерт и от модели памяти используемой для храниения данных на клиенте. Как ты будешь сортировать еще недобавлненную запись?

Ihtiandr © (18.02.03 18:02)
А чем ты доступаешься да БД и какую БД используешь?


 
SerB   (2003-02-19 06:48) [4]

Кстати при использовании "стандартной" парадоксовской и БДЕ таже хренотень получается, особенно когда не грид использую, а что-то наподобие DBEdit. Использование next - не спасает


 
Жук   (2003-02-19 08:09) [5]

Append


 
Соловьев   (2003-02-19 09:31) [6]

Вообще-то ты можешь добавить, а потом отсортировать как тебе надо... А записи хранятся как попопало...


 
DarkGreen   (2003-02-19 09:48) [7]

2 Жук © (19.02.03 08:09)
Аппенд добавляет запись в конец набора данных, а не после текущей записи


 
Жук   (2003-02-19 10:24) [8]

Тогда :
dim- © (18.02.03 23:31)


 
DarkGreen   (2003-02-19 11:19) [9]

Да можно конечно так, вот только зачем это вообще нужно?


 
Desdechado   (2003-02-19 11:52) [10]

Это особенность реализации БДЕ. Побороть я не смог это в свое время, поэтому просто пересел на StringGrid.
Если бы в БДЕ было INSERT после текущей записи, то проблема стала бы с точностью наоборот (особенно как вставить запись в НАЧАЛО отображаемой выборки).


 
Anatoly Podgoretsky   (2003-02-19 12:04) [11]

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


 
Desdechado   (2003-02-19 12:15) [12]

2 Anatoly Podgoretsky © (19.02.03 12:04)
Речь, как я понял, идет о локальной выборке, а не о способе хранения в БД.
Локальный кэш обслуживается БДЕ.


 
Соловьев   (2003-02-19 12:16) [13]

2 Desdechado ©
А в кэш как данные попадают?


 
Desdechado   (2003-02-19 18:11) [14]

запросом через БДЕ


 
Соловьев   (2003-02-19 18:32) [15]


> Локальный кэш

а внешний кэш?(масляно масляный) :)
Я думаю, проблема не в то что доступ через BDE, а в том что нужно Ihtiandr ©, зачем ему показывать юзеру, что вроде эта запись стоит за той...


 
Anatoly Podgoretsky   (2003-02-19 19:23) [16]

Desdechado © (19.02.03 12:15)
Ну в его вопросе на удивление мало конкретности, дело не в том, даже если база позволяет такое понятие как последовательность хранения, то лучше этим понятием не пользоваться.


 
Desdechado   (2003-02-19 21:04) [17]

2 Соловьев © (19.02.03 18:32)
Поверь, такие задачи действительно есть. Например, без использования мастер-деталь в одном гриде показать типа

000 Гадюкино 10
Ванюкино 20
001 Петрухино 18

и если хочу добавить строку перед петрухиным для показа кучкой с ванюкиным.

2 Anatoly Podgoretsky © (19.02.03 19:23)
Мало. Но я с такой проблемой сталкивался, поэтому, имхо, понял, о чем речь.

2 Автор
Что ж ты имел ввиду?


 
MsGuns   (2003-02-19 21:10) [18]

1. Отказаться от стандартного DB-навигатора или что-там в этом роде.
2. "Повесить" {Ctrl+Ins}/{Ins} на экшин, "реагирующий" на добавление
3. Реализация вставки (экшина) по принципу
- Переход на след. запись, если Eof, то Append, если нет, то Insert

А лучше:

Вообще не давать редактировать в гриде, а все делать через обычные контролы. Запись добавлять запросом, после этого "освежать" НД в гриде. Перед добавлением запрос на повтор ключей. Так, кстати, корректнее относительно любого движка, особенно BDE


 
MsGuns   (2003-02-19 21:13) [19]

Если принципиально важна последовательность в гриде, то либо спец.поле (типа Номер ПП в гриде), либо, действительно StringGrid
с произвольным "тасканием" строк. Только мне, как и Соловьеву, тоже не совсем понятно, на фига это надо ?


 
MsGuns   (2003-02-19 21:37) [20]

Есть еще и такое 2 способа. Я их применял именно в случаях, когда юзер требовал, "чтоб было видно, как я вводил". В основном это касалось деталов.

Способ 1. (записей детала немного - например, сложная проводка по документу)

1.Добавляется поле в первичный ключ как integer
2.При вставке-удалении записи тупо перенумеровываются простым перебором след.образом.
- при удалении - сверху вниз
- при вставке - снизу вверх с начальным инкрементом самому нижнему
(если вставка непосредственно в грид, то номер добавляемой записи = номер предыдущей, перед добавлением запомненной+1, затем запись копируется в память, НД дается Cancel, записи перенумеровываются с учетом "дырки" для номера новой записи. После этого AppendRecord запомненной записи)

Перед пересчетом грид от НД отсоединять, после - присоединять
Работает незаметно для глаза

Способ 2 (в детале может быть много записей)
1.Добавляется поле в первичный ключ как extended с расчетом на большую дробь
2.Перед вставкой запоминаются значения этого поля смежных записей. Номер вставлляемой вычисляется по несколько вычурному алгоритму. Смысл вычислений

Пред. запись След.запись Добавляемая

1 5 2
1 2 1.1
1 1.1 1.01
1. 1.2 1.1

Есть один недостаток у обоих методов (особенно у первого) - при работе с одним подмножеством детала одновременно нескольких пользователей. Я решал это принципом "один документ может редактировать один чел".

А есть самый "надежный" и уж точно самый нехлопотливый способ. Добавляешь поле "Номер пп" и даешь его на откуп Юзеру. Пусть вводит какой надо ! Если хочет переместить, то пусть и редактит все перемещаемые !

Для некоторых документов, например накладных, счетов и т.п. такое требование, ИМХО, справедливо !


 
Anatoly Podgoretsky   (2003-02-19 21:46) [21]

Последний метод полностью решает все проблемы с пользователем.


 
MsGuns   (2003-02-19 21:52) [22]

>Anatoly Podgoretsky © (19.02.03 21:46)
>Последний метод полностью решает все проблемы с пользователем.

Ах, если бы, если бы ...


 
Anatoly Podgoretsky   (2003-02-19 22:02) [23]

Решает одназначно, да еще так, что потом пользователь просит убрать эту нумерацию, но сам же просил возможность произвольного упорядочивания.


 
DarkGreen   (2003-02-20 05:20) [24]

Извеняюсь за оффтоп, но все таки:
Проблемы с пользователем решает только веревка и мыло, либо для себя, либо для него...


 
Соловьев   (2003-02-20 09:35) [25]

2 DarkGreen ©
не ну мы для них же и работаем, и они нам платят деньги :)


 
MsGuns   (2003-02-20 10:41) [26]

>Соловьев © (20.02.03 09:35)
>не ну мы для них же и работаем, и они нам платят деньги :)

Конечно, но если отношения с заказчиком товарно-денежные. Если же административно-бюрократические, то прав, как всегда, Anatoly Podgoretsky ©


 
Anatoly Podgoretsky   (2003-02-20 10:52) [27]

Товарно денежные, просит ввести вводим, просит после этого убрать убираем, перед первым пунктом предупреждаем о последствиях его решения и как правило первый пункт не наступает.


 
MsGuns   (2003-02-20 10:57) [28]

>Anatoly Podgoretsky © (20.02.03 10:52)

С продвинутыми пользователями так и бывает в основном. Но где их набрать на всех-то нас, продвинутых ?:)
Намного чаще ситуация обратная, когда есть чел (бух, например), которая говорит : "сделайте мне вот так и никак иначе, в противном случае идите вы...". И делаем


 
Desdechado   (2003-02-20 14:09) [29]

народ, ушли от темы

2 MsGuns © (19.02.03 21:10)
>Вообще не давать редактировать в гриде, а все делать через
>обычные контролы. Запись добавлять запросом, после этого
>"освежать" НД в гриде.
На клиент-сервер это не очень похоже. Особенно если мне нужно уменьшить траффик (а всякие "освежания" его сильно раздувают) или сохранять все пачкой (CachedUpdates). Короче, интерфейсные решения могут быть разные. Иногда удобнее дать пользователю редактировать грид, чтобы у него все перед глазами было, а не только карточка на 1 строчку.

Повторюсь, я вышел из положения StringGrid"ом.

А автора все не видно ...



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

Форум: "Базы";
Текущий архив: 2003.03.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.009 c
14-39506
Думкин
2003-02-21 06:05
2003.03.13
Россия


4-39643
LaJolla
2003-01-22 17:08
2003.03.13
DOS в буфер обмена


1-39372
ЮРИЙ_К
2003-02-28 17:17
2003.03.13
Как обратиться к Item и SubItem компонента ListView


3-39149
Оксана
2003-02-19 10:13
2003.03.13
Ошибки BDE Engine


1-39284
nester
2003-03-03 22:23
2003.03.13
Как сделать так, чтобы форма не отображалась в TaskBar





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский