Форум: "Базы";
Текущий архив: 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.039 c