![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что за ощибка? [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. Не через то "сделал обрашение к базе"
> Что это означает?
Это означает, что ты обратился к тому, чего нет.