Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/16: Рейтинг темы: голосов - 16, средняя оценка - 4.63
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39

лаг Paradox 7...

09.01.2012, 14:15. Показов 3082. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Такой вопрос, не могу понять в чем лаг: использую Paradox 7, создаю таблицу, заношу данные в таблицу как пользователь, используя экзешник. Все вроде бы нормально, но бывает так, что данные бац и после следующего открытия проги с БД часть внесенных перед этим данных исчезает..О_о

в чем проблема может быть?????????????
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2012, 14:15
Ответы с готовыми решениями:

update лаг
Проблема в том что какой-то из 4-х пилит лаг и в стинггрид выводится совсем не то что нужно.Например должно быть имя процесса(из БД...

paradox
Всем привет! помогите пожалуйста сделать распечатку! на кнопку нажимаю она должно распечатать данные из моей базы данных! Добавлено...

Paradox 7
Уважаемы программисты тут такая, проблема у меня ОС "Vista", и при открытий программы с базой данных в Парадокс выходит такая ошибка...

15
86 / 86 / 24
Регистрация: 27.02.2010
Сообщений: 397
09.01.2012, 16:56
Вы напишите какой "экзешник".
Может в нем вся пролема, а не в paradox??
0
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
10.01.2012, 00:26  [ТС]
есть форма, на ней: Table1,Datasource1, DBGrid1,DBNavigaror...
...
Delphi
1
2
3
4
DataSource1.Dataset=Table1;
Table1.TableName:='my.db';
DBGrid1.Datasource:=DataSource1;
DBNavigaror1.Datasource:=DataSource1;
...
все стандартно...как по книге...не раз делалось...но лаг какой-то не пойму.
Запускаю эту форму("экзешник")...вношу данные в таблицу...сохраняю штук 10...потом закрываю...и иногда данные просто не сохраняются!!
ну??
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
10.01.2012, 14:14
1. Работайте с парадоксом через TDataBase, открывая его в начале и закрывая в конце ЯВНО ! Для создания нужного алиаса используйте методы TSession
2. Книгу в печку !
1
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
10.01.2012, 16:49  [ТС]
можно в двух словах о TDataBase и его исп-е??(в чем преимущества) впервые слышу...опыта мало(

Добавлено через 10 минут
и еще такой момент, прочитав про него, вопрос возник: псевдонимы через TDataBase создаются как бы динамические???..т.е внутри программы? если я перетащу программу на другой комп работать будет?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
10.01.2012, 18:39
Delphi
1
псевдонимы через TDataBase создаются как бы динамические???..т.е внутри программы?
Я сказал где читать - TSession + F1. Читали ?

Delphi
1
если я перетащу программу на другой комп работать будет?
Будет если:
- На ПК предустановлен "правильный" BDE;
- Ваша программа использует "нужный" алиас, либо сама создавая его (то ли постоянно, то ли на время работы, "прибивая" перед завершением), либо который был предварительно создан программистом, устанавливавшим программу на ПК (например через BDE Admin).

Добавлено через 8 минут
Преимущество использования TDataBase в централизации интерфейса с базой данных.
В частности:
- Если в проекте много объектов связи с БД (TTable, TQuery...), то в случае изменения "адреса" БД (например при установке на ПК пользователя программы вместе с папкой БД) НЕ придется менять путь к базе во ВСЕХ этих объектах - достаточно изменить только в TDataBase. А при наличии ссылки на алиас и этого делать не нужно, т.к. путь к базе задается в алиасе, а править алиас можно не влазия в программу.
- Можно использовать многие полезные функции, например, получить список таблиц в БД (вместо того, что сканировать каталог перебирая файлы "ручками")
- Прозрачность логики интерфейса, привыкание к современной клиент-серверной технологии, строящейся на идеологии "соединения"
- Читабельность кода, особенно в случае использования нескольких баз данных одновременно
1
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
10.01.2012, 21:40  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
Я сказал где читать - TSession + F1. Читали ?
Та читала, просто еще не пробовала...пока не понятно, т.к. привыкла делать по книге...

Надо попробовать поработать с TDataBase, конечно, т.к. лаги мне совсем не нужны!
Спасибо
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
11.01.2012, 06:29
Цитата Сообщение от var3107 Посмотреть сообщение
Надо попробовать поработать с TDataBase, конечно, т.к. лаги мне совсем не нужны
А еще лучше выбросить, если это зависит от Вас, Paradox вместе с BDE вмусорную корзину и использовать нормальную клиент - серверную систему!
1
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
11.01.2012, 12:33
Delphi
1
т.к. привыкла делать по книге...
В ПЕЧКУ ЕЕ !!!
1
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
11.01.2012, 15:58  [ТС]
ага...и ее, и препода вместе с ней, старье преподает студентам((

Добавлено через 8 минут
Цитата Сообщение от MsGuns Посмотреть сообщение
- Ваша программа использует "нужный" алиас, либо сама создавая его (то ли постоянно, то ли на время работы, "прибивая" перед завершением), либо который был предварительно создан программистом, устанавливавшим программу на ПК (например через BDE Admin).
вот еще что интересует: как сделать чтобы на время работы программа создавала алиас? Находила примерчики...но не пойму почему не хочет работать:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
procedure TForm1.FormCreate(Sender: TObject);
var AParams: TStringList;
begin
Dir := ExtractFilePath(ParamStr(0));
AParams := TStringList.Create;
if not Session.IsAlias('Myworkal') then
begin
Session.AddStandardAlias('Myworkal', Dir+'data\', 'PARADOX');
Session.SaveConfigFile;
end
else exit;
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Session.DeleteAlias('Myworkal');
Session.SaveConfigFile;
end;

Добавлено через 7 минут
На счет темы топика...
о, а вот такую версию мне выдвинули: возможно, после работы программы не сохраняются изменения в базе Paradox и надо писать:
Delphi
1
2
3
Table.Open; 
Check(dbiSaveChanges(Table.Handle));
Table.Close;
что означает строчка, помогите расшифровать:
Delphi
1
Check(dbiSaveChanges(Table.Handle));
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
12.01.2012, 11:52
Delphi
1
вот еще что интересует: как сделать чтобы на время работы программа создавала алиас? Находила примерчики...но не пойму почему не хочет работать:
Для начала надо определиться:

1) Если Вы ориентируете приложение на ЗАРАНЕЕ созданный (админом при установке проги) алиас, то не надо его создавать, а просто используйте в св-ве TdataBase.AliasName как константу

2) Если Вы хотите сделать программу независимой от локальных DBE-настроек, то надо создать ВРЕМЕННЫЙ алиас, но при завершении программы (например в OnDestroy формы) убивать его (хотя, ЕМНИП он вроде автоматом убивается). В этом случае никакого SaveConfigFile не нужно. Да и вообще это опасно потому, что у пользователя, работающего с Вашей прогой, может не оказаться достаточнных прав и прога тупо будет глючить еще и при попытке сохранить алиас в коф-файле БДЕ.

о, а вот такую версию мне выдвинули: возможно, после работы программы не сохраняются изменения в базе Paradox и надо писать:



Не надо запоминать созданный на время работы алиас

Добавлено через 17 минут
Delphi
1
а вот такую версию мне выдвинули: возможно, после работы программы не сохраняются изменения в базе Paradox и надо писать
Использование вызовов библиотеки BDE используется в тех случаях, когда "не хватает" функционала компонент BDE (TDataBase, TTable, TQuery etc), т.е. в "тонких" моментах. Как Вы понимаете, требующих определенной квалификации и понимания особенностей "движка" от программиста. Тупое копирование, конечно, может заставить прогу "работать", но чаще приводит к непрогнозируемым последствиям, например, слетанию индексов, неожиданным блокировкам, сетевым конфликтам и т.д. После чего "кулибины" и "мичурины" удивленно чешут репы и возмущаются чего, мол, этот парадокс (дбф, фокс и т.д.) перестал работать.
Ну и кроме того предваряющая работу татальная проверка базы просто приведет к тормозам и зависанию проги при старте. Эффект этот будет усугубляться при увеличении кол-ва как таблиц, так и данных в таблицах.
Вдобавок такие проверки требуют еще и монопольного доступа к таблице, что опять же приведет к конфликтам при многопользовательской работе.

Короче, Вы поняли что подводных камней масса, поэтому используйте стандартные средства, достаточно функциональные и надежные (если это слово вообще может быть применено в отношении БДЕ), тем более что их за глаза хватает при правильной постановке задачи и грамотном проектировании. В частности потеря данных у Вас случается потому, что Вы не выполняете корректно закрытие таблицы после завершения внесения в нее изменений.

Потери информации, нарушения индексов, порушенные таблицы, "висячие" блокировки и т.д. - вот неполный перечень "радостей" парадокса. Конечно, при определенной технологии работы с базой и программой, хороших руководствах по копированию-восстановлению базы, грамотных и внимательных пользователях все эти прелести можно свести к минимуму, но избавиться от них полностью НЕВОЗМОЖНО !

Поэтому если это возможно - скорее забудьте про парадокс и БДЕ - это уже не вчерашний, это позавчерашний день !
1
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
12.01.2012, 16:25  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
[ В частности потеря данных у Вас случается потому, что Вы не выполняете корректно закрытие таблицы после завершения внесения в нее изменений.
...
Поэтому если это возможно - скорее забудьте про парадокс и БДЕ - это уже не вчерашний, это позавчерашний день !
Спасибо большое за столь подробное объяснение (у многих моих одногруппников такая же проблемная тема о лагах этих и никто не поймет почему!?!?!?а ответ получить хотелось бы..)

Забыть до конца этого года про парадокс и БДЕ пока, к сожалению, не возможно(

На счет корректного закрытия таблицы, что вы имели ввиду??
Я закрываю в главной форме все свои таблички Table.Close или Table.Active=false, так?? (сорри, если вопрос покажется глупым,только с БД и парадоксом начали работать с этого учеб. года, знаний, сами понимаете, не хватает)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
12.01.2012, 18:48
Если Вы закрываете редактировавшийся набор данных так, как пишете здесь (т.е Close или Active = false, что одно и то же) и при этом он (набор данных) был РЕДАКТИРУЕМЫМ (CanModify = true) и этот код у Вас ОТРАБАТЫВАЕТ при закрытии программы, то данные в таблицу попадут физически. (При условии конечно, что нет других ошибок, например по блокировкам или нарушении целостности).
А вот если код не отрабатывает (например, программа вывалилась по AV и нужный код просто не был обработан - в результате БДЕ не венесла нужных поправок в ФИЗИЧЕСКИЕ таблицы, то получите либо "где мои изменения" либо еще что похлеще
Наиболее частая ошибка новичков, работающих по Фаронову-Архангельскому (т.е. в принципе неправльно, зато напето что мол пишем "базовые" приложения за полчаса чуть ли не одной мышой, покуривая и почесывая пониже живота) , - открытие таблиц в дизайне. При запуске возникает "эффект экселя" - т.е. форма показывает "живую" таблицу БД, которую можно редактировать вдоль и поперек. И ни один из перечисленных авторов не говорит, что в этом случае имеется уже МНОГОПОЛЬЗОВАТЕЛЬСКОЕ юзание таблиц, где один юзер - это наше приложение а рантайме, а второй - сама делфя.
Отсюда и конфликты, и пропажи информации и глюки при попытках выполнить операции, требующие "монополии" (например, реструктуризация таблиц, за которую в ран тайме надо вообще отрывать горе-программистам пальцы и я.., ну Вы поняли короче).
При этом "умельцы" обычно приводят "железные" агрументы типа "у меня все работало 20 лет" (ну да, при этом прога за эти двадцать лет запускалась 3 раза и все эти три раза вызывали его, гения кодинга, чтобы он "чинил базу") или еще лучше: "в книжке написано". При этом не учитывают, что в некоторых книжках написано не больше правды, чем на заборах.
Поэтому НИКОГДА при отладке логики программы не делайте пуск на выполнение при открытых БДЕ-наборов данных. Открыли, настроили например сетки и сразу закрыли.
1
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
12.01.2012, 20:08  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
Если Вы закрываете редактировавшийся набор данных так, как пишете здесь (т.е Close или Active = false, что одно и то же) и при этом он (набор данных) был РЕДАКТИРУЕМЫМ (CanModify = true) и этот код у Вас ОТРАБАТЫВАЕТ при закрытии программы, то данные в таблицу попадут физически. (При условии конечно, что нет других ошибок, например по блокировкам или нарушении целостности).
вот возможно и из-за этого у меня и не сохранялось тоже...оееей. Горе-программист с меня((

Цитата Сообщение от MsGuns Посмотреть сообщение
Поэтому НИКОГДА при отладке логики программы не делайте пуск на выполнение при открытых БДЕ-наборов данных. Открыли, настроили например сетки и сразу закрыли.
оеееей, такое тут понаписывали, что я как раз и наделала!!! Хорошо хоть не поздно)
Мне конечно с парадокса никак не слезть, но исправляться в хоть в этом плане надо
0
3 / 3 / 0
Регистрация: 14.11.2011
Сообщений: 39
29.01.2012, 14:49  [ТС]
КАК правильно закрыть программу с БД ?????
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
30.01.2012, 12:18
TDataBase.Close;
Еще совет. Предпочтительнее все компоненты работы с БД (TDataBase,TTable,TQuery etc) выносить в отдельный модуль (TdataModule), где также можно написать УНИФИЦИРОВАННЫЕ участки кода (например, процедуру поиска в произвольном датасете, сортировку и т.д.)
Открытие (установление соединения) и закрытие выполнять не при создании/уничтожении модуля, а контекстными командами главной формы.
Все действия с БД, включая открытие и закрытие как БД, так и таблиц (датасетов) кодировать НЕ непосредственно в обработчиках событий, а в отдельный методах датамодуля, оформляя по возможности независимым от конкретных объектов (ссылку на датасет, поле, и прочее можно вполне передавать черезь параметры процедур или функций) - таким образом Вы добьетесь существенного уменьшения ИЗБЫТОЧНОСТИ кода, упроситв отладку и сократив размер исходников. Обращаться к процедурам легко из любого места кода, в т.ч. и из событийных обработчиков
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.01.2012, 12:18
Помогаю со студенческими работами здесь

Paradox 7
Доброго времени суток, дамы и господа у меня возник такой вопрос как сделать так чтобы например: при выборе отдела сразу же открывался...

Не редактируется БД Paradox
Здравствуйте. Подскажите пожалуйста в чем может быть проблема? Есть код, который должен редактировать базу каждый день. ...

Delphi и Paradox
Здравствуйте. У меня такой вопрос, я работаю с БД Paradox. Извлекаю я данные таким оброзом Form9.Query3.DatabaseName:=Path; ...

Сортировка Paradox
общем есть таблица парадокс в ней есть такие столбци fio, imy, otch, address, rojd, kurs, spec теперь вопрос как можно сделать сортировку...

Delphi и Paradox
Имеется таблица Paradox на комп1. Как мне на комп2 по IP подключиться сначало к комп1, а потом к таблице???


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru