На главной форме Передаю в диалог три таблицы (GTD Warehouse Nomenclature):
Код:
procedure TFormMain.dxNavBar2Item1Click(Sender: TObject);
begin
if MessageDlg('Новое поступление на склад?', mtConfirmation, [mbYes, mbNo], 0)
= mrYes then
with TFormNewItemOnWarehouse.Create(Application) do
try
Execute(GTD, Warehouse, Nomenclature);
finally
Free;
end
else
// обновление вьюхи склада
end;
В методе Execute:
Код:
function TFormNewGTD.Execute(GTDDataSet: TDataSet): boolean;
begin
dsGTD.DataSet := GTDDataSet;
dsWarehouse.DataSet := WarehouseDataSet;
dsNomenclature.DataSet := NomenclatureDataSet;
Result := ShowModal = mrOk;
end;
Если здесь же попробовать написать:
то никаких ошибок не возникает
Теперь эта форма становится главной и я из неё передаю GTDDataSet дальше:
Код:
procedure TFormNewItemOnWarehouse.btnNewGTDClick(Sender: TObject);
begin
with TFormNewGTD.Create(Application) do
try
dsGTD.DataSet.Insert;
if Execute(dsGTD.DataSet) then
dsGTD.DataSet.Post
else
dsGTD.DataSet.Cancel;
finally
free;
end;
end;
И вот здесь начинаются проблемы, возникает ошибка доступа к памяти на 0x00000000, в строчке, где я пишу
Пробовал эту строчку унести внутрь вызываемого диалога, ошибка та же.
Чую, чего-то я не знаю про передачу DataSet'ов из формы в форму. И корень зла, мне кажется в том, что в первый раз я передаю ADOTable, а второй раз я передаю DataSet из DataSource.
Поправляйте, если что-то не правильно думаю.