Помогите разобраться .
Есть программулина которая работает с базой Access
Есть пару таблиц справочников, для работі с каждой из них у меня отдельная форма. А вот для работы с данными тех форм у меня уже есть общая форма .
Открываю 1 форму справочника добавляю какието данны, закрываю 1форму.
Затем открываю 2 форму , и при попытке добавить даннные вылазит ошибка.
Ошибка вылазит вне зависимости порядка ввода данных в формы(
Код добавления данных в 1й форме:
procedure TForm_Firm.Button_FirmInsertClick(Sender: TObject);
begin
Form_EditorDictionary.Caption:='Добавление новой записи';
Form_EditorDictionary.DBEdit_EditorDictionary.DataSource:=DataModule1.DataSource_Firm;
Form_EditorDictionary.DBEdit_EditorDictionary.DataField:='Name';
DataModule1.ADOTable_Firm.Insert;
Form_EditorDictionary.ShowModal;
if (DataModule1.ADOTable_Firm.Modified) and (Form_EditorDictionary.ModalResult=mrOk) then
DataModule1.ADOTable_Firm.Post
else
DataModule1.ADOTable_Firm.Cancel;
//Form_Firm.DBGrid_Firm.SetFocus;
end;
Код добавления данных во 2й форме:
procedure TForm_TypeFloat.Button_FloatTypeInsertClick(Sender: TObject);
begin
Form_EditorDictionary.Caption:='Добавление новой записи';
Form_EditorDictionary.DBEdit_EditorDictionary.DataSource:=DataModule1.DataSource_FloatType;
Form_EditorDictionary.DBEdit_EditorDictionary.DataField:='Float_type';
DataModule1.ADOTable_FloatType.Insert;
Form_EditorDictionary.ShowModal;
if (DataModule1.ADOTable_FloatType.Modified) and (Form_EditorDictionary.ModalResult=mrOk) then
DataModule1.ADOTable_FloatType.Post
else
DataModule1.ADOTable_FloatType.Cancel;
//Form_TypeFloat.DBGrid_FloatType.SetFocus;
end;
Собственно текст ошибки :
Porject Fisher.exe raised exceptions class EDatabaseError with message 'DBEdit_EditorDictionaty: Field 'Float_type' not found'.
Process stoped. Use step or Run to continue
Как правильно реализовать задуманное ?
написано же, что поле "Float_type" не найдено. вот и ошибка.
Меня больше интересует как можно избежать этой ошибки
раз ругается, что его нет, можно его добавить, ну, или не обращаться к нему вовсе, или может неправильное название (имя) поля используется, так тогда надо подставить то, которое нужно. вы уж смотрите, что у вас там в наличии.
Не боллшое уточнение :
Ругается на то поле которое последний раз добавлялось..
и соизволь читнуть правила. код у тебя не оформлен.
Не боллшое уточнение :
Ругается на то поле которое последний раз добавлялось..
всмысле на то, которое последний раз добавлялось? т.е. на то поле, которое добавлялось в таблицу базы (непосредственно в определение таблицы)?
Получается да .
Например я добавляю в таблицу d_firm новую строку :
begin
Form_EditorDictionary.Caption:='Добавление новой записи';
Form_EditorDictionary.DBEdit_EditorDictionary.Data Source:=DataModule1.DataSource_Firm;
Form_EditorDictionary.DBEdit_EditorDictionary.Data Field:='Name';
DataModule1.ADOTable_Firm.Insert;
Form_EditorDictionary.ShowModal;
if (DataModule1.ADOTable_Firm.Modified) and (Form_EditorDictionary.ModalResult=mrOk) then
DataModule1.ADOTable_Firm.Post
else
DataModule1.ADOTable_Firm.Cancel;
//Form_Firm.DBGrid_Firm.SetFocus;
end;
Затем выхожу из этой формы , и захожу в другую форму чтобы добавить данные в таблицу d_float_type .
begin
Form_EditorDictionary.Caption:='Добавление новой записи';
Form_EditorDictionary.DBEdit_EditorDictionary.Data Source:=DataModule1.DataSource_FloatType;
Form_EditorDictionary.DBEdit_EditorDictionary.Data Field:='Float_type';
DataModule1.ADOTable_FloatType.Insert;
Form_EditorDictionary.ShowModal;
if (DataModule1.ADOTable_FloatType.Modified) and (Form_EditorDictionary.ModalResult=mrOk) then
DataModule1.ADOTable_FloatType.Post
else
DataModule1.ADOTable_FloatType.Cancel;
//Form_TypeFloat.DBGrid_FloatType.SetFocus;
end;
И вот именно в момент попытки добавить данны в таблицу d_float_type ругается почемуто на поле из таблицы d_firm (
и соизволь читнуть правила. код у тебя не оформлен.
А где можно их почитать ?
Дак его то и не должно быть , по тому что в этот момент я добавляю данные в другую таблицу
Form_EditorDictionary.DBEdit_EditorDictionary.Data Field:='Name';
а данные в
Form_EditorDictionary.DBEdit_EditorDictionary.Data Field:='Float_type';
добавлял перед этим
http://forum.codenet.ru/showthread.php?t=29747
оформи код, иначе вообще читать неохота.
оформи код, иначе вообще читать неохота.
Доброй ночи !
Есть программулина которая работает с базой Access
Есть пару таблиц справочников, для работі с каждой из них у меня отдельная форма. А вот для работы с данными тех форм у меня уже есть общая форма .
Открываю 1 форму справочника добавляю какието данны, закрываю 1форму.
Затем открываю 2 форму , и при попытке добавить даннные вылазит ошибка.
Ошибка вылазит вне зависимости порядка ввода данных в формы(
Код добавления данных в 1й форме:
begin
Form_EditorDictionary.Caption:='Добавление новой записи';
Form_EditorDictionary.DBEdit_EditorDictionary.Data Source:=DataModule1.DataSource_Firm;
Form_EditorDictionary.DBEdit_EditorDictionary.Data Field:='Name';
DataModule1.ADOTable_Firm.Insert;
Form_EditorDictionary.ShowModal;
if (DataModule1.ADOTable_Firm.Modified) and (Form_EditorDictionary.ModalResult=mrOk) then
DataModule1.ADOTable_Firm.Post
else
DataModule1.ADOTable_Firm.Cancel;
//Form_Firm.DBGrid_Firm.SetFocus;
end;
Код добавления данных во 2й форме:
begin
Form_EditorDictionary.Caption:='Добавление новой записи';
Form_EditorDictionary.DBEdit_EditorDictionary.Data Source:=DataModule1.DataSource_FloatType;
Form_EditorDictionary.DBEdit_EditorDictionary.Data Field:='Float_type';
DataModule1.ADOTable_FloatType.Insert;
Form_EditorDictionary.ShowModal;
if (DataModule1.ADOTable_FloatType.Modified) and (Form_EditorDictionary.ModalResult=mrOk) then
DataModule1.ADOTable_FloatType.Post
else
DataModule1.ADOTable_FloatType.Cancel;
//Form_TypeFloat.DBGrid_FloatType.SetFocus;
end;
Собственно текст ошибки если добавляю в 1 таблицу а затем во 2:
Porject Fisher.exe raised exceptions class EDatabaseError with message 'DBEdit_EditorDictionaty: Field 'Name' not found'.
Process stoped. Use step or Run to continue
Собственно текст ошибки если добавляю в 2 таблицу а затем в 1:
Porject Fisher.exe raised exceptions class EDatabaseError with message 'DBEdit_EditorDictionaty: Field 'Float_type' not found'.
Process stoped. Use step or Run to continue
Как правильно реализовать задуманное ?
ну посмотри ты второй код.
ну нет у тебя такого поля, нет. сделай что нибудь :D
ну посмотри ты второй код.
ну нет у тебя такого поля, нет. сделай что нибудь :D
Да ну как же его нет когда оно есть ???
Обьясни плиз поподробней.
Для каждой формы спарвочника создал событие OnClose
И вписал туда вот такую строку кода:
Ну на сколько я все понимаю на данный момент :
Формы справочников у меня разные, а вот форма добавления данных в справочники одна.
Получается после закрытия формы присвоенные данные ни куда не девались и вылазили когда не нужно
Исходя из этого получается , что присвоенные данные нужно удалять после использования, то что я и сделал :
Для каждой формы спарвочника создал событие OnClose
И вписал туда вот такую строку кода:
А вообще , видать я просто не корректно работаю с Form_EditorDictionary.DBEdit_EditorDictionary
Так что учиться , учиться и еще раз учится мне нужно :)