|
|
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
При работе с DBF таблицами записи вставляются только в конец :( Insert вставляет записи между строк, а при Post запись переносится в конец, как обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 08:20 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
>как обойти? Никак ненадо обходить. Забыть про физический порядок записей и для упорядочевания использовать индексы и/или запросы с сортировкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 10:30 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Не подходит, в полях содержаться формулы для вычислений, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 10:38 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
И очень даже подходит. Надо только добавить поле, по которому и будет происходить упорядочивание. Давно изобретенный велосипед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 10:47 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
INSERT BLANK BEFORE INSERT BLANK AFTER ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:18 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
=( грю не подходит, знач не подходит, вкратце ситуация такая: Имеется сервак на котором валяется >3000 тайблов, менять их структуру нельзя, программа позволяет просматривать таблицы, выполняет туеву тучу всяких мерзопакостей а вот недавно был обнаружена фигня, что нельзя добавить новую запись в середину таблицы, я думаю что эту пакость надо исправлять на более низком уровне ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:20 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Повторяю еще раз INSERT BLANK BEFORE INSERT BLANK AFTER ??? попробуй - и посмотри какой будет номер записи у вновь добавившейся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:22 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
авторИ очень даже подходит. Надо только добавить поле, по которому и будет происходить упорядочивание Я-я, натюрлих. Сейчас как раз отлаживаю такой блок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:24 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
если вам обязательно надо добавить запись в конец таблицы то Append Blank - Вас спасет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 11:33 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
INSERT RECORDПовторяю еще раз попробуй - и посмотри какой будет номер записи у вновь добавившейся Понимаю что смеятся, когда кто-то тупит не по своей воле это весело, но добавлю еще одно условие, прога пишется на дельфях без использования BDE, так что о каких-либо замечательных функциях sql думать не приходится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 12:04 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Feg16 Понимаю что смеятся, когда кто-то тупит не по своей воле это весело, но добавлю еще одно условие, прога пишется на дельфях без использования BDE, так что о каких-либо замечательных функциях sql думать не приходится С этого и нужно было начинать, что на дельфях. Как вариант - добавить запись и сместить содержимое записей вниз с нужной позиции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 12:45 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
почти дощли до цели) сместить содержимое записей вниз с нужной позиции Не подскажешь как или от чего отталкиваться? И еще вопрос, при работе с индекированными файло все будет нормально? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 12:50 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Feg16 но добавлю еще одно условие, прога пишется на дельфях без использования BDE, так что о каких-либо замечательных функциях sql думать не приходится А что, уже ADO и ODBC отменили? В делфях и компоненты хорошие для этого есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:17 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Станислав C.А что, уже ADO и ODBC отменили? В делфях и компоненты хорошие для этого есть... Позволю себе заметить, что структура данных в "dbf" и "db" несколько разная, упоминание о BDE было вызвано лишь попыткой навязать sql-решение. Напоминаю еще раз, это не зависит от компонента млин, это ближе к системному уровню... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:23 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Feg16 Станислав C.А что, уже ADO и ODBC отменили? В делфях и компоненты хорошие для этого есть... Позволю себе заметить, что структура данных в "dbf" и "db" несколько разная, упоминание о BDE было вызвано лишь попыткой навязать sql-решение. Напоминаю еще раз, это не зависит от компонента млин, это ближе к системному уровню... Про ADO и ODBC я сказал только потому, что они позволяют работать с файлами dbf через sql при наличии соответствующего драйвера (например, Microsoft VisualFoxPro Driver). А компоненты - упрощают работу с источником данных... А так, тебе совет уже дали: BurnНикак ненадо обходить. Забыть про физический порядок записей и для упорядочевания использовать индексы и/или запросы с сортировкой Другого, не видя структуру таблиц и образцы данных, тебе никто не скажет... Извини, но ясновидящие все в отпуске... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2006, 13:56 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Не видя структуру Структура следующая: ШИФР формула ----------------- a1 a2+a3 a2 5 a3 6 ----------------- // блок1 a1 a2+a3-a4 a2 5 // к примеру запсь нада вставить сюда a3 6 a4 7 ----------------- // блок2 данные постоянно обновляются и высчитываются формулы, поэтому добавление между формулами очч важно. Сместить записи Кол-во записей в таблице >30000+индексация... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 06:01 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Feg16 Не видя структуру Структура следующая: ШИФР формула ----------------- a1 a2+a3 a2 5 a3 6 ----------------- // блок1 a1 a2+a3-a4 a2 5 // к примеру запсь нада вставить сюда a3 6 a4 7 ----------------- // блок2 данные постоянно обновляются и высчитываются формулы, поэтому добавление между формулами очч важно. Сместить записи Кол-во записей в таблице >30000+индексация... А как определяется принадлежность блоку 1, или блоку 2, или... Если это полная структура файла, то мне тебя очень жалко... Здесь только полное копирование файла (будет работать достаточно медленно и невозможно работать в многопользовательской среде): 0. Заблокировать файл 1. Скопировать начальную часть исходного файла (до того места, куда надо вставить запись) в промежуточный файл 2. Вставить запись в конец промежуточного файла 3. Скопировать остаток исходного файла в промежуточный файл 4. Удалить исходный файл и переименовать промежуточный файл в исходный... 5. Разблокировать файл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 07:03 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Вариант конечно хороший, но таблицы заблокировать нельзя, так как они постоянно пересчитываются. Я думаю нужно добавлять записи на низком уровне, сейчас копаюсь в коде. Может кто-нибудь уже писал что-то подобное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 07:26 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
А что значит "на низком уровне"? И куда в этом случае пойдет упоминаемая многопользовательность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 09:04 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Feg16Вариант конечно хороший, но таблицы заблокировать нельзя, так как они постоянно пересчитываются. Я думаю нужно добавлять записи на низком уровне, сейчас копаюсь в коде. Может кто-нибудь уже писал что-то подобное? А можно полную постановку задачи? Потому что (ИМХО) какой-то странный метод решения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 09:08 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
проходящийА что значит "на низком уровне"? На низком - редактирование через Seek, BlockWrite. И куда в этом случае пойдет упоминаемая многопользовательность? Многопользовательским режимом я могу пожертвовать, если нет другого выхода А можно полную постановку задачи? Постановка указана выше. Если повторить, то необходимо чтобы запись при post записывалась в том месте, куда мы ее вставили. Если ты конечно знаешь что в idBase и т.п. записи добавляются только в конец ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 09:20 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Feg16 А можно полную постановку задачи? Постановка указана выше. ... то необходимо чтобы запись при post записывалась в том месте, куда мы ее вставили. Это уже какое-то решение. А сама задача? Считать формулы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 09:27 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Основная задача программы - редактирование записей . Но при этом записи должны быть строго структурированы, тоесть если мы с бухты барахты поменяем какую-либо формулу, то накроется вычислитель. Посему вставка записей в определенном месте имеет самую высокую важность Приведу пример - CDBF v1.2 позволяет вставлять записи не только в конец, но автора хрен найдешь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 09:40 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Если Вы "завязаны" на физический порядок следования записей, то при любом раскладе на момент вставки записи придется выгонять всех пользователей. Как минимум, блокировать доступ к этой таблице. Многопользовательское решение - это введение дополнительного поля с порядковым номером следования плюс индекс по этому дополнительному полю. Однако это решение требует изменения программного кода, чего Вы, судя по всему, сделать не можете (хотя странно. Блок вычислений - это должна быть одна процедура, т.е. изменения коснуться только одного модуля.) Методику вставки в нужное место Вам, по сути, тоже уже объяснили. Возможны 2 варианта: 1) APPEND BLANK + сдвиг содержимого записей на одну запись вниз до тех пор пока не освободится нужная запись. Как "сдвинуть"? Ну, тут возможны варианты... 2) Существуют старые DOS-команды INSERT BLANK BEFORE INSERT BLANK AFTER Физическая вставка записи перед/после текущей записью. Но эти команды требуют эксклюзивный доступ к таблице плюс ряд ограничений на свойства таблиц. Т.е. работают, но в очень ограниченных условиях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2006, 15:12 |
|
||
|
Insert и DBF
|
|||
|---|---|---|---|
|
#18+
Hi Feg16! Интересно, Вы себе представляете хотя-бы в общих чертах как именно хранятся данные в dbf-ах? Хотя чего спрашиваю... Если бы представляли, то таких вопросов бы не задавали. Никак нельзя "вставить в середину" - там просто НЕТ МЕСТА для новой записи - так что только путём полного пересоздания файла (а способы уже разные описаны) это и можно сделать - криво, убого конечно и наверняка совершенно излишне - т.к. должен быть другой способ - такой, чтобы не требовалось записи "вставлять в середину" физического файла. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2006, 02:46 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33633916&tid=1591999]: |
0ms |
get settings: |
10ms |
get forum list: |
23ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 512ms |

| 0 / 0 |
