Tadotable и Tadostoredproc

  • Автор темы NeviDimka
  • Дата начала
N

NeviDimka

Гость
#1
Трабла№1:
есть ДатаМодуль, на нем помимо процего есть 5 компонентов ADOTable, в которых выбраны "Connection" и "TableName", и "Active" поставлен в true. При запыске вываливается ошибка (см. error1), после нажатия ОК и F7/F8 ошибка вылазит снова (и так 5 раз), после 5го нажатия F8 приложение наконец-то запускается и далее работает без ошибок.:rolleyes:
Трабла№2:
После настройки экз. компонента ADOStoredProc, при попутке выставить в TRUE свойство Active - вылазит ошибка (см error2) :(
 

Вложения

B

Barmutik

Гость
#2
Тяжело сказать так ходу .. вы попробуйте выставить Active у таблиц в рантайме и посмотрите на чём падает .. А какой сервер БД Вы используете ?
 
N

NeviDimka

Гость
#3
Теперь включаю Active при создании формы - таже история, только теперь вылезают ошибки об неправильном чтении/записи из ячейки по адресу Х в ячейку по адресу У, так для каждого из 5 компонентов.
Используется MsSQLServer2000 и C++Builder 6
 
B

Barmutik

Гость
#4
Что-то сздаётся мне Вы не так делаете .. можете код в студию где Вы открываете таблицы...
 
N

NeviDimka

Гость
#5
т.е.??? там элементарная программа, написанная по инструкции (вот главная форма)
//---------------------------------------------------------------------------

void __fastcall TMainForm::N2Click(TObject *Sender)
{
DM->ADOAuthors->Open();
FormAuthors->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N3Click(TObject *Sender)
{
DM->ADOBooks->Open();
FormBooks->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N4Click(TObject *Sender)
{
DM->ADOPublishing_house->Open();
FormPublishing_house->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N5Click(TObject *Sender)
{
DM->ADODelivers->Open();
FormDelivers->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N6Click(TObject *Sender)
{
DM->ADOPurchases->Open();
FormPurchases->Show();
}
//---------------------------------------------------------------------------
void __fastcall TMainForm::N7Click(TObject *Sender)
{
//DM->ADOSP_Count->Open();
FormProcedure->Show();
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::FormCreate(TObject *Sender)
{
DM->ADOPurchases->Active = true;
DM->ADOBooks->Active = true;
DM->ADOAuthors->Active = true;
DM->ADODelivers->Active = true;
DM->ADOPublishing_house->Active = true;
}
//---------------------------------------------------------------------------
 
N

NeviDimka

Гость
#6
не знаю почему, но первый глюк, как выяснилось вылезает у меня только при Run'e из билдера, а про второй - в билдере через ж реализован ODBC драйвер, когда подключился напрямую к SQL - все заработало.
Код выкладывать хлопотно. просто думал - что это распространенный глюк, а я новичок.
 
B

Barmutik

Гость
#7
У меян просто была мысль что Вы обращаетесь к DM в FormCreate MainForm и судя по вему он ещё не создан .. отсюда и ошибки...
 
N

NeviDimka

Гость
#8
Кстати возможно...
Теперь я их активирую при входе в меню.
Можно еще "чайный" вопрос - чем отличается по назначению методы Open и свойство Active?
 
B

Barmutik

Гость
#9
Ничем ... Если Вы посмотрите внутри код метода Open Вы увидите что он устанавливает Active = True
 
N

NeviDimka

Гость
#10
Разобрался с траблой№2: оказывается в Билдерах через Ж.. организована работа ODBC драйвера, если подключиться напрямую к SQL - все работает!
2Barmutik, все-таки отличается -> метод Open дает возможность видеть на ADOTable значения всех полей, если просто активировать, то можно будет редактировать, но вы ничего не увидите в таблицах.
 
B

Barmutik

Гость
#11
Спорить не буду .. уже крайне давно не использовал компоненты TTable .. но так просто приведу реализацию метода Open в исходниках:

Код:
procedure TDataSet.Open;
begin
Active := True;
end;
Если Вы здесь сможете обнаржить что-либо ещё кроме установки Active := True то дайте мне знать :)
 
N

NeviDimka

Гость
#12
Я не спец конечно, говорю то, что наблюдал.