Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Вставка в DBEdit из другой формы  [new]
grav
Member

Откуда: Н. Новгород
Сообщений: 369
Имеется связка ibdatabase+dbdataset+dbedit.
расположены на форме MDIChild1, объявлена в MDIForm, создана там же MDIChild1.Create(Application); dbdataset в режиме insert.
Там же объявлена форма MDIChild1, создана из формы MDIChild1 так MDIForm.MDIChild2.Create(Application)

Пытаюсь в MDIChild2. сделать так: MDIChild1.DbEdit1.text:=UserSG.Cells[1,UserSG.Row]
выдает access violation

Подскажите, как правильно ввести данные с формы 2 в форму1 в dbedit.
спасибо
20 мар 17, 17:54    [20315043]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 9303
grav
создана там же MDIChild1.Create(Application);
........
создана из формы MDIChild1 так MDIForm.MDIChild2.Create(Application)
Давайте реальный код, а то это какая-то лажа

grav
Пытаюсь в MDIChild2. сделать так: MDIChild1.DbEdit1.text:=UserSG.Cells[1,UserSG.Row]
Обращение DbEdit1.text - это из разряда извращений. Не уверен, что будет работать. Обращение должно идти к полю

grav
Подскажите, как правильно ввести данные с формы 2 в форму1 в dbedit.
Начнем сначала. Какая цель преследуется?
20 мар 17, 18:10    [20315108]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
grav
Member

Откуда: Н. Новгород
Сообщений: 369
_Vasilisk_,

Имеется таблица со списком сотрудников со стандартными полями (фио, должность и тд) и еще одно поле Логин - пользователь базы данных firebird. Добавление пользователей, изменение, удаление в отдельной форме. Нужно привязать логин к сотруднику.
Вот и была идея из формы с таблицей Сотрудники вызвать форму с пользователями базы данных и выбрать нужный логин.

Разницы нет, присваивать значение свойству text dbedit или dbdataset.fieldbyname, ошибка та же.

В принципе все работает через глобальную переменную, т.е. присваиваю переменной значение поля таблицы пользователей бд, а потом свойству текст dbedit значение переменной. Но это кажется совсем уж извращением.
20 мар 17, 19:05    [20315302]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4239
grav,

Не делай Action:=caFree
Делай Free после получения результата
20 мар 17, 19:13    [20315320]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
grav
Member

Откуда: Н. Новгород
Сообщений: 369
Gerasimenko,

caFree у меня наOnClose формы. На даблклик грида присваивается значение dbedit и потом закрывается форма. Вроде бы последовательность соблюдена. Или нет?
20 мар 17, 19:43    [20315405]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
Gerasimenko
Member

Откуда:
Сообщений: 4239
grav
Gerasimenko,

caFree у меня наOnClose формы. На даблклик грида присваивается значение dbedit и потом закрывается форма. Вроде бы последовательность соблюдена. Или нет?


автор
Вот и была идея из формы с таблицей Сотрудники вызвать форму с пользователями базы данных и выбрать нужный логин.

Вот у формы с пользователями совершенно не обязательно должно быть Action:=caFree
Сначала обработай то, что выбрал в ней пользователь, а уж потом делай Free
20 мар 17, 22:05    [20315730]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
grav
Member

Откуда: Н. Новгород
Сообщений: 369
Gerasimenko,

закомментировал Action := caFree; все равно Access violation на EmplFrm.EmplDS.FieldByName('login').AsString:=UserSG.Cells[1,UserSG.Row];
21 мар 17, 12:12    [20317075]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
schi
Member

Откуда: Москва
Сообщений: 1311
grav
Gerasimenko,

закомментировал Action := caFree; все равно Access violation на EmplFrm.EmplDS.FieldByName('login').AsString:=UserSG.Cells[1,UserSG.Row];


Пора использовать отладчик
21 мар 17, 12:22    [20317126]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
grav
Member

Откуда: Н. Новгород
Сообщений: 369
schi,

Ставлю точку прерывания на EmplFrm.EmplDS.FieldByName('login').AsString:='user';
Жму F7 и сразу ошибка Access Violation.
Чем мне это может помочь? Понятно, что как-то не так пишу данные в первую форму. А скорее всего, саму форму создал не так.
21 мар 17, 12:49    [20317254]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
grav
Member

Откуда: Н. Новгород
Сообщений: 369
Сделал я. Может пригодится кому.
With MainFrm do //Это MDIForm 
   begin
    for k := MDIChildCount-1 downto 0 do // цикл по количеству MDIChild
     begin
      if MDIChildren[k] is TEmplFrm then   // Смотрим является ли форма MDIChildren[k] нашим классом TEmplFrm
           // если да, то обращаемся к элементу tdataset (EmpDS)    
            TEmplFrm(MDIChildren[k]).EmplDS.FieldByName('login').AsString:=UserSG.Cells[1,UserSG.Row];
     end;
   end;
21 мар 17, 13:46    [20317542]     Ответить | Цитировать Сообщить модератору
 Re: Вставка в DBEdit из другой формы  [new]
schi
Member

Откуда: Москва
Сообщений: 1311
grav
schi,

Ставлю точку прерывания на EmplFrm.EmplDS.FieldByName('login').AsString:='user';
Жму F7 и сразу ошибка Access Violation.
Чем мне это может помочь? Понятно, что как-то не так пишу данные в первую форму. А скорее всего, саму форму создал не так.


Мой хрустальный шар говорит, что EmplFrm не присвоено значение.
21 мар 17, 15:24    [20318070]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить