Вопрос № 53788: Здравствуйте уважаемые Эксперты. База данных построена на формате DBF работаю через TTable BDE. Происходит запись около 200 000 строк.
После записи каждой строки дулаю Post() Refresh().
Возникает ошибка. Не найдено поле ...
Имя поля всегд...Вопрос № 53814: Волею судьбы мне придётся в ближайшем будущем писать приложение под Oracl 9. Раньше с Oracl не приходилось работать, только с Inter Base 6.5 и MS Access (в основном). Посоветуйте, через какие компоненты подключаться к данным? Вообще я планирую исполь...
Вопрос № 53.788
Здравствуйте уважаемые Эксперты. База данных построена на формате DBF работаю через TTable BDE. Происходит запись около 200 000 строк.
После записи каждой строки дулаю Post() Refresh().
Возникает ошибка. Не найдено поле ...
Имя поля всегда разное, записи таблицы тоже всегда разные.
Ошибка возникает в разных местах. Возникло подозрение на переполнение какого-либо буфера. Так как ошибка никогда не возникает в начале выполнения. Поля указаные в сообщении об ошибки на самом деле существуют. Посоветуйте что делать.
Отправлен: 30.08.2006, 16:53
Вопрос задал: Mongol_ST (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Werewolf
Здравствуйте, Mongol_ST!
Желательно было бы выложить пример.
Так абстрактно могу предположить следующее:
1) Возможно Вы не вызываете метод DisableControls который Ваш TTable наследует от TDataSet и вызываете Application.ProcessMessages который для прорисовки компонент может обращаться к полям таблицы
обычно это делается так
...
Table1:TTable;
....
Table1.DisableControls;
try
...
//Здесь добавление/изменение данных и Post;
finally
Table1.EnableControls;
end;
2) если данные добавляются из другой таблицы можно переделать способ переноса данных с помошью метода BatchMove у TTable
3) если не стоит задачи делать Refresh постоянно лучше его сделать после всей обработки (перед Table1.EnableControls;)
Удачи.
Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 30.08.2006, 17:08 Оценка за ответ: 4 Комментарий оценки: Дело в том что нет не одного компонента отабражающего данные из этой таблицы. BatchMove не подходит так как некоторые поля расчитываются.
Отвечает: din
Здравствуйте, Mongol_ST!
Вызовите метод FlushBuffers компонента TTable. Должно помочь.
P.S. А вообще-то 200 000 в dbf и через BDE смело!!!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 30.08.2006, 17:52 Оценка за ответ: 5 Комментарий оценки: Помогло. Большое спасибо. Программа разработана на "верху". Я автоматизирую задачу, чтобы не вводить это все вручную. Очень сильно "не уважаю" разработчика программы.
Вопрос № 53.814
Волею судьбы мне придётся в ближайшем будущем писать приложение под Oracl 9. Раньше с Oracl не приходилось работать, только с Inter Base 6.5 и MS Access (в основном). Посоветуйте, через какие компоненты подключаться к данным? Вообще я планирую использовать ADO, больше ничего в голову не приходит. И вообще какие-нить мануалы по работе через D7 с Oracl
Отвечает: din
Здравствуйте, Zлоумышленник!
Чтобы работать через ADO нужно будет установить клиентские библиотеки Oracle на комп. Качаете клиента для винды с сайта оракл устанавливаете и создаете ODBC подключение. ODBC драйвер который у них там лежит отдельно требует Universal Installer его я отдельно для скачки не нашел. Другой вариант это компоненты для работы с Оракл, но они все платные.
Вот ссылки http://www.allroundautomations.com/doa.html и http://crlab.com/odac/ordering.html. Последние стоят 100 баксов, вполне нормальная цена за труд.
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: din (статус: Студент)
Ответ отправлен: 30.08.2006, 22:19 Оценка за ответ: 5
Отвечает: sir henry
Здравствуйте, Zлоумышленник!
Если база данных в Оракле спроектирована грамотно, т.е. работа с ней будет протекать как вызовы встроенных процедур, просмотр данных, их изменение и дополнение, то ADO Вам подойдет совершенно точно. Необходимо только будет скачать провайдера для Оракла, чтобы ADO мог через него обращаться к БД Оракла.
Работа будет проходить стандартными методами, описанными в любой книжке по работе Delphi с базами данных.
Провайдера можно скачать с сайта Оракла, но там размер очень большой, я на модеме качать бы не рискнул (от 80 до 210 МБ, зависит от версии Оракла). Лучше взять у Microsoft.
Можно скачать какой-либо компонент для прямого доступа к БД Оракл. Посмотреть можно, например, здесь:
http://www.torry.net/pages.php?id=549
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 31.08.2006, 07:49 Оценка за ответ: 5
Отвечает: Werewolf
Здравствуйте, Zлоумышленник!
посмотрите DOA
http://www.allroundautomations.com/doa.html
Удачи
Ответ отправил: Werewolf (статус: Студент)
Ответ отправлен: 31.08.2006, 10:22