Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

на форме MDIchild access violetion   Найти похожие ветки 

 
macsd ©   (2004-04-21 11:54) [0]

при попытке обращения к адо конекшн или адокюери или адо тейбл возникает аксес виолейшн.

все компоненты лежат на той же МДИчаилд форме и из модуля той ж формы идет обращение.

Вчем проблема то?


 
macsd ©   (2004-04-21 11:56) [1]

В юнит 1 -

procedure TForm1.N2Click(Sender: TObject);
begin
with TForm2.Create(Application) do
 begin
  Caption:="New Form";
  Show;
 end;
end;

В юнит 2 -

procedure TForm2.Button1Click(Sender: TObject);
var
 temp_c:longint;
begin
if not(form2.ADOtable1.Locate("GRNAME",form2.Edit3.Text,[])) then
 begin
  form2.ADOtable1.Insert;
  randomize;
  repeat
   temp_c:=random(1000000);
  until not(form2.ADOtable1.Locate("GRCODE",temp_c,[]));
  form2.ADOtable1.FieldByName("GRCODE").AsString:=inttostr(temp_c);
  form2.ADOtable1.Post;
  form2.ADOtable1.UpdateBatch(arAll);
  form2.ADOtable2.Insert;
  form2.ADOtable2.FieldByName("GOGRCODE").AsString:=inttostr(temp_c);
  form2.ADOtable2.FieldByName("GOCODE").AsString:=form2.Edit1.Text;
  form2.ADOtable2.FieldByName("GONAME").AsString:=form2.Edit2.Text;
  form2.ADOtable2.Post;
  form2.ADOtable2.UpdateBatch(arAll);
 end
else
 begin
  form2.ADOtable2.Insert;
  form2.ADOtable2.FieldByName("GOGRCODE").AsString:=form2.ADOtable1.FieldByName("GRCODE").AsString;
  form2.ADOtable2.FieldByName("GOCODE").AsString:=form2.Edit1.Text;
  form2.ADOtable2.FieldByName("GONAME").AsString:=form2.Edit2.Text;
  form2.ADOtable2.Post;
  form2.ADOtable2.UpdateBatch(arAll);
 end;
end;


 
Reindeer Moss Eater ©   (2004-04-21 12:02) [2]

procedure TForm1.N2Click(Sender: TObject);
begin
with TForm2.Create(Application) do
begin
 Caption:="New Form";
 Show;
end;
end;

Ну и где сохраняется ссылка но новоиспеченный экземпляр?

if not(form2.ADOtable1.Locate("GRNAME",form2.Edit3.Text,[])) then

Кто проинициализировал переменную form2 ?
Дед мороз?


 
Reindeer Moss Eater ©   (2004-04-21 12:04) [3]

procedure TForm2.Button1Click(Sender: TObject);
var
temp_c:longint;
begin
if not(form2.ADOtable1.Locate("GRNAME",form2.Edit3.Text,[])) then
begin
 form2.ADOtable1.Insert;
 randomize;
 repeat
  temp_c:=random(1000000);

Зачем вообще в методе класса упоминать имя какой-то левой переменной?


 
macsd ©   (2004-04-21 12:08) [4]

а как правильно сохранить ссылку?


 
Vlad ©   (2004-04-21 12:11) [5]

var:
Form2: TForm2;
....
Form2:=TForm2.Create(Application);
Caption:="New Form";


 
Reindeer Moss Eater ©   (2004-04-21 12:11) [6]

Достаточно убрать из procedure TForm2.Button1Click(Sender: TObject); любые упоминания о form2.

Сам-то подумай.
Программа может создать N экземпляров TForm2.
Но метод Button1Click зачем-то всегда по тупому будет ломиться к переменной form2.


 
Vlad ©   (2004-04-21 12:14) [7]

Правда, думаю не в этом дело.
Скорее всего дело в том, что в методах класса TForm2 нужно везде убрать ссылку на переменную Form2, которая:
во-первых не нужна, если уж так хочется, используй Self
во-вторых, судя по твоему коду она вобще nil, отсюда и AV


 
macsd ©   (2004-04-21 12:16) [8]

пасибо, все заработало =))



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.036 c
9-1072161089
Dmitrich
2003-12-23 09:31
2004.05.16
Перемещение юнита


1-1083254115
van20
2004-04-29 19:55
2004.05.16
RxLib для Delphi7


14-1082789040
Инкогнито
2004-04-24 10:44
2004.05.16
Истинная сущность человека, или что значит быть Человеком!


1-1083240819
фыва
2004-04-29 16:13
2004.05.16
canvas


14-1082962967
McSimm
2004-04-26 11:02
2004.05.16
Вы нам писали...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский