• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Tadotable и Tadostoredproc

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

NeviDimka

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

Вложения

  • error1.jpg
    error1.jpg
    15,8 КБ · Просмотры: 503
  • error2.jpg
    error2.jpg
    8,8 КБ · Просмотры: 517
B

Barmutik

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

NeviDimka

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

Barmutik

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

NeviDimka

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

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

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

Barmutik

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

NeviDimka

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

Barmutik

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

NeviDimka

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

Barmutik

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

Код:
procedure TDataSet.Open;
begin
Active := True;
end;

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

NeviDimka

Я не спец конечно, говорю то, что наблюдал.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!