Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > программное изменение DBEdit


Автор: osmus 6.1.2009, 00:54
Вот прочитал тему http://forum.vingrad.ru/forum/topic-116643/hl/dbedit/index.html вроде бы все понятно но не получается, не знаю из за чего летят критич. ошибки..

Project xxxx raised exception class yyyyy with message 'zzzzzz'.
Process stopped.  Use Step or Run to continue.
по подробней: http://pic.ipicture.ru/uploads/090106/31802/36EvltmVUs.gif

Что я делаю:
Есть таблица Active = true;

Вызов формы на редактирование:
Код

 GaragesTab->Append();
  DBGrid1->SetFocus(); 


   TAddGararagesF * AddGararagesF  = new TAddGararagesF(Application);
      if (!AddGararagesF)return;
       AddGararagesF->Show();
 



при при вводе значения в  MaskEdit (к примеру MaskEdit1Change) питаемся обновить DBEdit 
Код

    SupGarF->GaragesTab->Edit();  //пробывал и без него, результата нет
    SupGarF->GaragesTab->FieldByName("number")->AsString =  MaskEdit1->Text;
    SupGarF->GaragesTab->Post();


Работаю с помощью MyDAC and ADO , летит на обеих компонентах

Автор: Rodman 6.1.2009, 09:54
смари...
1. ДБЭдит должен быть связан с юазой шоб что нить показывать.
2. При работе с данными есть текущая запись, а есть остальные.. в нем текущая показывается. тебе просто надо текущую переключать...

а шо то не вижу этого...

Автор: osmus 6.1.2009, 12:35
Цитата(Rodman @ 6.1.2009,  09:54)
смари...
1. ДБЭдит должен быть связан с юазой шоб что нить показывать.
2. При работе с данными есть текущая запись, а есть остальные.. в нем текущая показывается. тебе просто надо текущую переключать...

а шо то не вижу этого...

DBEdit:
DataSourse:  SupGarF->DSGarages   //DataSourse
DataField:      number

Побывал и на текущей сделать вышеописанное, результат не изменился..... 

Автор: Данкинг 6.1.2009, 12:47
osmus, давай полный код... smile 

Автор: osmus 6.1.2009, 14:00
не знаю вроде бы и так все описал что моно:
Есть форма SupGarF с таблицей GaragesTab, на ней же и лежит DataSourse по имени DSGarages.
На форме есть кнопка "изменить запись" которая вызывает другую форму с списком DBEdit-тов связанных с таблицей GaragesTab при помощи 
DSGarages.
Код кнопки:
Код

void __fastcall TSupGarF::BitBtn2Click(TObject *Sender)
{

     if( GaragesTab->IsEmpty() == true)
        ShowMessage("Нечего редактировать");
       else
       {
         DBGrid1->SetFocus(); //устанавливает фокус на DBGrid-e
         TEditGararagesF * EditGararagesF  = new TEditGararagesF(Application);
         if (!EditGararagesF)return;
         EditGararagesF->Show();
       }
}



На фоме EditGararagesF есть едиты по вводу (именению которых должен изменятся DBGrids)
К примеру один из обработчиков эдита:

Код

void __fastcall TEditGararagesF::Edit4Change(TObject *Sender)
{
 SupGarF->GaragesTab->Edit();
 SupGarF->GaragesTab->FieldByName("number")->AsString =  Edit4->Text;
}
 

Ну вроде бы расписал все что мог smile 

Автор: Данкинг 6.1.2009, 14:12
А ошибка-то на какой именно строке вылетает?

Автор: osmus 6.1.2009, 14:55
На  SupGarF->GaragesTab->Edit();
Если её уберу то на  SupGarF->GaragesTab->FieldByName("number")->AsString =  Edit4->Text;    Тоже.
 


Автор: Данкинг 6.1.2009, 15:19
А если не динамически создавать edit'ы, а сразу их сделать?

Автор: osmus 6.1.2009, 15:53
Смысле? Не создаю я динамически.... Че-то я не понимаю......

Автор: Vyacheslav 8.1.2009, 15:44
Скорее всего 
Либо SupGarF , либо GaragesTab равны NULL
В отладчике смотрел?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)