powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Insert и DBF
25 сообщений из 27, страница 1 из 2
Insert и DBF
    #33626202
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При работе с DBF таблицами записи вставляются только в конец :(
Insert вставляет записи между строк, а при Post запись переносится в конец,
как обойти?
...
Рейтинг: 0 / 0
Insert и DBF
    #33626448
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>как обойти?
Никак ненадо обходить. Забыть про физический порядок записей и для упорядочевания использовать индексы и/или запросы с сортировкой
...
Рейтинг: 0 / 0
Insert и DBF
    #33626473
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не подходит, в полях содержаться формулы для вычислений,
...
Рейтинг: 0 / 0
Insert и DBF
    #33626492
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И очень даже подходит. Надо только добавить поле, по которому и будет происходить упорядочивание. Давно изобретенный велосипед.
...
Рейтинг: 0 / 0
Insert и DBF
    #33626607
INSERT RECORD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
INSERT BLANK BEFORE
INSERT BLANK AFTER

???
...
Рейтинг: 0 / 0
Insert и DBF
    #33626619
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
=( грю не подходит, знач не подходит, вкратце ситуация такая:
Имеется сервак на котором валяется >3000 тайблов, менять их структуру
нельзя, программа позволяет просматривать таблицы, выполняет туеву тучу
всяких мерзопакостей а вот недавно был обнаружена фигня, что
нельзя добавить новую запись в середину таблицы, я думаю что эту пакость
надо исправлять на более низком уровне
...
Рейтинг: 0 / 0
Insert и DBF
    #33626627
INSERT RECORD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Повторяю еще раз

INSERT BLANK BEFORE
INSERT BLANK AFTER

???

попробуй - и посмотри какой будет номер записи у вновь добавившейся
...
Рейтинг: 0 / 0
Insert и DBF
    #33626636
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторИ очень даже подходит. Надо только добавить поле, по которому и будет происходить упорядочивание
Я-я, натюрлих. Сейчас как раз отлаживаю такой блок
...
Рейтинг: 0 / 0
Insert и DBF
    #33626664
S866
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если вам обязательно надо добавить запись в конец таблицы то Append Blank - Вас спасет
...
Рейтинг: 0 / 0
Insert и DBF
    #33626755
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
INSERT RECORDПовторяю еще раз
попробуй - и посмотри какой будет номер записи у вновь добавившейся

Понимаю что смеятся, когда кто-то тупит не по своей воле это весело,
но добавлю еще одно условие, прога пишется на дельфях без использования BDE, так что о каких-либо замечательных функциях sql думать не приходится
...
Рейтинг: 0 / 0
Insert и DBF
    #33626862
INSERT RECORD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Feg16

Понимаю что смеятся, когда кто-то тупит не по своей воле это весело,
но добавлю еще одно условие, прога пишется на дельфях без использования BDE, так что о каких-либо замечательных функциях sql думать не приходится

С этого и нужно было начинать, что на дельфях. Как вариант - добавить запись и сместить содержимое записей вниз с нужной позиции
...
Рейтинг: 0 / 0
Insert и DBF
    #33626877
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почти дощли до цели) сместить содержимое записей вниз с нужной позиции

Не подскажешь как или от чего отталкиваться?
И еще вопрос, при работе с индекированными файло все будет нормально?
...
Рейтинг: 0 / 0
Insert и DBF
    #33626948
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Feg16
но добавлю еще одно условие, прога пишется на дельфях без использования BDE, так что о каких-либо замечательных функциях sql думать не приходится
А что, уже ADO и ODBC отменили? В делфях и компоненты хорошие для этого есть...
...
Рейтинг: 0 / 0
Insert и DBF
    #33626966
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.А что, уже ADO и ODBC отменили? В делфях и компоненты хорошие для этого есть...

Позволю себе заметить, что структура данных в "dbf" и "db" несколько разная,
упоминание о BDE было вызвано лишь попыткой навязать sql-решение.
Напоминаю еще раз, это не зависит от компонента млин, это ближе к системному уровню...
...
Рейтинг: 0 / 0
Insert и DBF
    #33627073
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Feg16 Станислав C.А что, уже ADO и ODBC отменили? В делфях и компоненты хорошие для этого есть...

Позволю себе заметить, что структура данных в "dbf" и "db" несколько разная,
упоминание о BDE было вызвано лишь попыткой навязать sql-решение.
Напоминаю еще раз, это не зависит от компонента млин, это ближе к системному уровню...
Про ADO и ODBC я сказал только потому, что они позволяют работать с файлами dbf через sql при наличии соответствующего драйвера (например, Microsoft VisualFoxPro Driver). А компоненты - упрощают работу с источником данных...
А так, тебе совет уже дали:
BurnНикак ненадо обходить. Забыть про физический порядок записей и для упорядочевания использовать индексы и/или запросы с сортировкой
Другого, не видя структуру таблиц и образцы данных, тебе никто не скажет... Извини, но ясновидящие все в отпуске...
...
Рейтинг: 0 / 0
Insert и DBF
    #33628523
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не видя структуру
Структура следующая:

ШИФР формула
-----------------
a1 a2+a3
a2 5
a3 6
----------------- // блок1
a1 a2+a3-a4
a2 5
// к примеру запсь нада вставить сюда
a3 6
a4 7
----------------- // блок2

данные постоянно обновляются и высчитываются формулы, поэтому
добавление между формулами очч важно.

Сместить записи
Кол-во записей в таблице >30000+индексация...
...
Рейтинг: 0 / 0
Insert и DBF
    #33628546
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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. Разблокировать файл.
...
Рейтинг: 0 / 0
Insert и DBF
    #33628565
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант конечно хороший, но таблицы заблокировать нельзя, так как они постоянно пересчитываются. Я думаю нужно добавлять записи на
низком уровне, сейчас копаюсь в коде. Может кто-нибудь уже писал
что-то подобное?
...
Рейтинг: 0 / 0
Insert и DBF
    #33628657
Проходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что значит "на низком уровне"? И куда в этом случае пойдет упоминаемая многопользовательность?
...
Рейтинг: 0 / 0
Insert и DBF
    #33628665
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Feg16Вариант конечно хороший, но таблицы заблокировать нельзя, так как они постоянно пересчитываются. Я думаю нужно добавлять записи на
низком уровне, сейчас копаюсь в коде. Может кто-нибудь уже писал
что-то подобное?

А можно полную постановку задачи?
Потому что (ИМХО) какой-то странный метод решения...
...
Рейтинг: 0 / 0
Insert и DBF
    #33628682
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходящийА что значит "на низком уровне"?
На низком - редактирование через Seek, BlockWrite.

И куда в этом случае пойдет упоминаемая многопользовательность?
Многопользовательским режимом я могу пожертвовать, если нет другого выхода

А можно полную постановку задачи?
Постановка указана выше. Если повторить, то необходимо чтобы запись при post записывалась в том месте, куда мы ее вставили. Если ты конечно знаешь что в idBase и т.п. записи добавляются только в конец
...
Рейтинг: 0 / 0
Insert и DBF
    #33628699
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Feg16 А можно полную постановку задачи?
Постановка указана выше. ...
то необходимо чтобы запись при post записывалась в том месте, куда мы ее вставили.
Это уже какое-то решение. А сама задача?
Считать формулы?
...
Рейтинг: 0 / 0
Insert и DBF
    #33628717
Фотография Feg16
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Основная задача программы - редактирование записей .
Но при этом записи должны быть строго структурированы, тоесть если мы с бухты барахты поменяем какую-либо формулу, то накроется вычислитель.
Посему вставка записей в определенном месте имеет самую высокую важность
Приведу пример - CDBF v1.2 позволяет вставлять записи не только в конец, но автора хрен найдешь...
...
Рейтинг: 0 / 0
Insert и DBF
    #33629935
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Вы "завязаны" на физический порядок следования записей, то при любом раскладе на момент вставки записи придется выгонять всех пользователей. Как минимум, блокировать доступ к этой таблице.

Многопользовательское решение - это введение дополнительного поля с порядковым номером следования плюс индекс по этому дополнительному полю. Однако это решение требует изменения программного кода, чего Вы, судя по всему, сделать не можете (хотя странно. Блок вычислений - это должна быть одна процедура, т.е. изменения коснуться только одного модуля.)

Методику вставки в нужное место Вам, по сути, тоже уже объяснили. Возможны 2 варианта:

1) APPEND BLANK + сдвиг содержимого записей на одну запись вниз до тех пор пока не освободится нужная запись. Как "сдвинуть"? Ну, тут возможны варианты...

2) Существуют старые DOS-команды

INSERT BLANK BEFORE
INSERT BLANK AFTER

Физическая вставка записи перед/после текущей записью. Но эти команды требуют эксклюзивный доступ к таблице плюс ряд ограничений на свойства таблиц. Т.е. работают, но в очень ограниченных условиях.
...
Рейтинг: 0 / 0
Insert и DBF
    #33633916
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi Feg16!

Интересно, Вы себе представляете хотя-бы в общих чертах как именно хранятся
данные в dbf-ах? Хотя чего спрашиваю... Если бы представляли, то таких
вопросов бы не задавали. Никак нельзя "вставить в середину" - там просто НЕТ
МЕСТА для новой записи - так что только путём полного пересоздания файла (а
способы уже разные описаны) это и можно сделать - криво, убого конечно и
наверняка совершенно излишне - т.к. должен быть другой способ - такой, чтобы
не требовалось записи "вставлять в середину" физического файла.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Insert и DBF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]