Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что за ощибка? [D7, IB6.x]


Xmen ©   (2007-04-13 08:54:00) 

Я создал 2 таблицы (мастер-детал) и соответственно их соеденил. Когда сделал обрашение к базе через грид ну типа скрол, переход в др. запись то он выдал ошибку.
"Access violation at address 00000000. Read of address 00000000"
Что это означает?


Jan1   (2007-04-13 18:49:00) [1]


> А может нужно Delphi переустоновить?

а заодно и винду, а вдруг :)


Xmen   (2007-04-13 16:54:00) [2]

А может нужно Delphi переустоновить?
Дома это прога работал.


ЮЮ   (2007-04-13 11:26:00) [3]

> С помощю F7 и F8?

Это даже лишнее. Ну если только 1 раз :). Ибо когда выскочит исключение, ты уже находишься в том месте, где оно и возникло.
Открой окно  View > Debug Window > Call Stack и оглядись, как ты оказался в этом иетоде, с какими параметрами, должен был здесь оказаться, из-за чего в текущй строке мог возникнуть AV и т.д. и т.п.  

P/S/Для большей информативности это лучше делать со включенной опцией Use Debug DCUs проекта


Xmen   (2007-04-13 11:02:00) [4]


> ЮЮ ©   (13.04.07 10:49) [11]
>
> Тогда, наверное, что-то прописано в обработчиках Detail,
>  коль после отключения связи всё заработало без ошибок.
>
> Отладчик, ИМХО, единственный способ локализовать ошибку,
>  имено она чаще там, где её не ждещь.

Это как сделать?
С помощю F7 и F8?


ЮЮ   (2007-04-13 10:49:00) [5]

Тогда, наверное, что-то прописано в обработчиках Detail, коль после отключения связи всё заработало без ошибок.

Отладчик, ИМХО, единственный способ локализовать ошибку, имено она чаще там, где её не ждещь.


Xmen   (2007-04-13 10:43:00) [6]


> Jan1   (13.04.07 10:25) [7]
>
>
> > Да прописал.
> > Я создал др. приложение и там попытался это сделать. Там
>
> > мастер-детал получается. Туда поставил точно так Датабейс,
>
> >  транзакцию, 2 датасета, 2 датасорса, 2 грида. И соединил
>
> > их. Там все работает все отлично. Но в самом проекте получаю
>
> > ошибку. И еще когда убрал в проекте из значение датасорса
>
> > детал датасета (не розарвал соединение), то прога не дает
>
> > ошибку когда перехожу по гриду. Незнаю вчем там проблема?
>
> >
>
> Почисти экзепляры филдов.

Если это по поводу полей а Dataset1,2 то их занова создал.

> ЮЮ ©   (13.04.07 10:25) [8]
>
> > И еще когда убрал в проекте из значение датасорса детал
> датасета (не розарвал соединение),
> Пожалуй, то самое место, где по-русски не следует. Что у
> кого убрал? А в тестовом оставил?
> А под отладчиком проанализировать место и причину ошибки
> пробовал?

Ну это типа уменя есть 2 DataSet1 (Master) и DataSet2 (Detail) и кним DataSource1, DataSource2. Ну в DataSet2 (Detail) есть DataSource=DataSource1 (для связи мастер детаил). Когда это поля пустое то прога не даёт ошибку когда работаю в DBGrid e., но без мастер детаила.
> Sergey13 ©   (13.04.07 10:29) [9]
>
> > [6] Xmen   (13.04.07 10:20)
>
> Какие есть обработчики у мастер-датасета? Нет ли там чего?
>  Ну и отладчиком конечно можно найти.


Ничего там не прописан.


Sergey13   (2007-04-13 10:29:00) [7]

> [6] Xmen   (13.04.07 10:20)

Какие есть обработчики у мастер-датасета? Нет ли там чего? Ну и отладчиком конечно можно найти.


Jan1   (2007-04-13 10:25:00) [8]


> Да прописал.
> Я создал др. приложение и там попытался это сделать. Там
> мастер-детал получается. Туда поставил точно так Датабейс,
>  транзакцию, 2 датасета, 2 датасорса, 2 грида. И соединил
> их. Там все работает все отлично. Но в самом проекте получаю
> ошибку. И еще когда убрал в проекте из значение датасорса
> детал датасета (не розарвал соединение), то прога не дает
> ошибку когда перехожу по гриду. Незнаю вчем там проблема?
>

Почисти экзепляры филдов.


ЮЮ   (2007-04-13 10:25:00) [9]

> И еще когда убрал в проекте из значение датасорса детал датасета (не розарвал соединение),
Пожалуй, то самое место, где по-русски не следует. Что у кого убрал? А в тестовом оставил?
А под отладчиком проанализировать место и причину ошибки пробовал?


Xmen   (2007-04-13 10:20:00) [10]

Да прописал.
Я создал др. приложение и там попытался это сделать. Там мастер-детал получается. Туда поставил точно так Датабейс, транзакцию, 2 датасета, 2 датасорса, 2 грида. И соединил их. Там все работает все отлично. Но в самом проекте получаю ошибку. И еще когда убрал в проекте из значение датасорса детал датасета (не розарвал соединение), то прога не дает ошибку когда перехожу по гриду. Незнаю вчем там проблема?


Sergey13   (2007-04-13 10:14:00) [11]

> [4] Xmen   (13.04.07 09:42)

Я не понял, ты детальному датасету мастер-датасорс прописал?


Xmen   (2007-04-13 09:42:00) [12]

Ну на гриде перехожу от одной записи в другую.


Sergey13   (2007-04-13 09:33:00) [13]

> [2] Xmen   (13.04.07 09:21)
> но когда делаю бравз грида

Это как?


Xmen   (2007-04-13 09:21:00) [14]

ну тогда поподробние опишу.
создал таблицу  ну основную и там конечно есть ID поля автоинкременант он создается через генератор и другие поля штук 6. А потом создал подчененую таблицу с полями ID, MAIN_ID и ещё полей 7 штук. Здесь MAIN_ID для связи с осн.таблицой на первой таблицы создал первычный ключ к полю ID на втором  создал первычный ключ к полю ID и внещний ключ MAIN_ID (ID->MAIN_ID).
Открыл Дельфи в дата модуле положил Датабейс, транзакцию и два датасета (естественно для интербейса). В первом датасете в SelectSQL написал
select * from MAIN
генератор поля устоновил
ну апдейт поля сделал.
На втором датасете в SelectSQL написал
select * from KONTROL
where main_id=:id
генератор поля устоновил
ну апдейт поля сделал.
в onNEWRECORDE написал qrKontrol['main_id']:=qrMain['id'];
в датасорсе установил датасорс первого Датасета. Потом сделал астивным все элементы.
Делаю компеляцию проги все без ощибки.
В форме есть дбгрид у него там датасоре написан датасорс первого датасета. В гриде все показывает нормално, но когда делаю бравз грида то тогда вылитает это ошибка.


Sergey13   (2007-04-13 09:04:00) [15]

Вариантов масса.
1. Плохо "создал 2 таблицы (мастер-детал)"
2. Плохо "соответственно их соеденил"
3. Плохо "сделал обрашение к базе"
4. Не через то "сделал обрашение к базе"

> Что это означает?
Это означает, что ты обратился к тому, чего нет.


Наверх

Титульная страница Поиск, карта сайта Написать письмо