Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.02.2017, 21:04   #1
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию После добавления поля в dataset, access… при скроле

Доброе время суток форумчане,
Такой вопрос:
Делал программу с базой данных№1, в котором есть dataset1 master, dataset2-detail, привязанный к двум таблицам. Добавил в dataset2, новое поле «name_pair», типа lookup, для отображения в нем содержимого поля «name» в dataset1
Теперь при пролистывании dataset1, возникает:

«Access violation at address 004CC6F0 in module 'MetaTrader.exe'. Read of address 00000014»

причем, если сразу спозиционироваться на записи в dataset1 в которой есть привязка в dataset2 - все показывает, но при дальнейшей прокрутке - опять таже ошибка.

Мне так кажется, при ошибка летит тогда, когда в dataset2, есть данные.
При удалении поля «name_pair» - ошибка пропадает.

Решил создать чистый эксперемент, новое приложение, создал новую базу №2 (2 таблицы, несколько полей в каждой, завел несколько строк), два новых dataset, завязал их межу собой, во второй dataset добавил новое поле "name" (в общем все как и в основной программе) – точно такая же ошибка.

В этом же приложении добавил dataset3 и dataset4 связал их (рис.), и привязал базе №1, таже самая фигня.



Выходит у меня сама база где-то неправильная?

Заранее спасибо.

Нашел как получается ошибка:
Если в Grid попадают все строки/данные (по высоте), то я могу свободно перемещаться вверх/вниз - ошибки НЕ будет.
Если же в Grid попадает НЕ все строки (по высоте), ТО ВЫЛЕТАЕТ ошибка...

Последний раз редактировалось KBO; 09.02.2017 в 18:25.
KBO вне форума Ответить с цитированием
Старый 09.02.2017, 15:20   #2
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

[QUOTE=KBO;1662990]Доброе время суток форумчане,
Такой вопрос:
Делал программу с базой данных№1, в котором есть dataset1 master, dataset2-detail, привязанный к двум таблицам. Добавил в dataset2, новое поле «name_pair», типа lookup, для отображения в нем содержимого поля «name» в dataset1
Теперь при пролистывании dataset1, возникает:

«Access violation at address 004CC6F0 in module 'Meta.exe'. Read of address 00000014»

причем, если сразу спозиционироваться на записи в dataset1 в которой есть привязка в dataset2 - все показывает, но при дальнейшей прокрутке - опять таже ошибка.

Мне так кажется, при ошибка летит тогда, когда в dataset2, есть данные.
При удалении поля «name_pair» - ошибка пропадает.

Решил создать чистый эксперемент, новое приложение, создал новую базу №2 (2 таблицы, несколько полей в каждой, завел несколько строк), два новых dataset, завязал их межу собой рис., во второй dataset добавил новое поле (в общем все как и в основной программе) – таже самая ОШИБКА


Заранее спасибо.

Нашел как получается ошибка:
Если в Grid попадают все строки/данные (по высоте), то я могу свободно перемещаться вверх/вниз - ошибки НЕ будет.
Если же в Grid попадает НЕ все строки (по высоте), ТО ВЫЛЕТАЕТ ошибка...

P.S.
При установке галки "UseDebug DCUs" ("Options - Compiler"), во время этой ошибки меня выкидывает в модуль "...delphi7\source\vcl\IBCustomData Set.pas" на строку №1847 (на "function TIBCustomDataSet.IsVisible(Buffer: PChar): Boolean;")... А в этом модуле я изменять ничего не хочу

Последний раз редактировалось KBO; 09.02.2017 в 16:27.
KBO вне форума Ответить с цитированием
Старый 09.02.2017, 16:43   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Выходит у меня сама база где-то неправильная?
Это как? Где-то ошибка в твоем коде или связи не правильно в программе сделал.
Цитата:
А в этом модуле я изменять ничего не хочу
Молодец. Меняй в своем коде
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 09.02.2017, 18:04   #4
KBO
Форумчанин
 
Регистрация: 11.06.2010
Сообщений: 525
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Это как? Где-то ошибка в твоем коде или связи не правильно в программе сделал.
Молодец. Меняй в своем коде
- Кода вообще НЕТ (и это не шутка).
Кроме правда самих запросов в Dataset.
- Взял создал БД на ново, на пустую форму кинул одну "IBDatabase1", два "DataSet", два "DataSource", два "DBGrid", связал их, создал запросы - ВСЕ...

Запрос в DataSet1:
Код:
select * from TABLE1
Запрос в DataSet2:
Код:
select t2.* from  TABLE2 t2 where t2.ID_NAME_FROM_TABLE1 = :ID
Ошибка тогда может быть только в Связи поля "name" (lookUp) в dataset2:
рис.

потому что без этого поля ошибки НЕТ.

Последний раз редактировалось KBO; 09.02.2017 в 18:31.
KBO вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплывающее сообщение после добавления в БД skvair PHP 2 06.06.2014 09:14
Тип поля MEMO в Dataset User_IR_An Помощь студентам 2 13.04.2014 19:28
Обязательно ли создавать поля Dataset? DeveloPerchik БД в Delphi 4 15.08.2012 12:05
Странное исключение при просмотре поля Access adwaer Общие вопросы .NET 2 05.01.2010 09:17