powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка в ADOQuery
5 сообщений из 5, страница 1 из 1
Ошибка в ADOQuery
    #38624632
duh_si
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте..
Вот состряпал такой код, который узнает имя пользователя компа, потом берет его номер из таблицы БД и выдает ему Сообщения(если есть) с новостью

Код на Форме 1(MessageNews)
тут вроде все верно работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
void __fastcall TMessageNews::Timer1Timer(TObject *Sender)
{
 TRegistry *reg = new TRegistry();
 reg->RootKey = HKEY_LOCAL_MACHINE;
 reg->OpenKeyReadOnly("SYSTEM\\CurrentControlSet\\services\\LanmanServer\\Parameters");
 AnsiString opis;
 opis = reg->ReadString("srvcomment");   //имя в описании компа
 //ShowMessage(opis);
 reg->CloseKey();
 delete reg;
 
 DataModuleABS->ADOQueryEmployee->Active = true;
 DataModuleABS->ADOQueryEmployee->Close();
 DataModuleABS->ADOQueryEmployee->SQL->Clear();
 DataModuleABS->ADOQueryEmployee->SQL->Add("Select Код From dbo.Employee Where Фамилия = '"+opis+"'");
 DataModuleABS->ADOQueryEmployee->Open();
 Way = DataModuleABS->ADOQueryEmployee->FieldByName("Код")->AsInteger;
 //Доработать: если Way = 0, выдать сообщение, чтобы пользователь ввел свое имя в описании
 
 DataModuleABS->ADOQueryZakaz->Active = true;
 DataModuleABS->ADOQueryZakaz->Close();
 DataModuleABS->ADOQueryZakaz->SQL->Clear();
 DataModuleABS->ADOQueryZakaz->SQL->Add("Select Заказ FROM dbo.ТипНовости INNER JOIN (dbo.EmployeeNews INNER JOIN dbo.ВременТабл ON dbo.EmployeeNews.ТипНовости = dbo.ВременТабл.ТипНовости) ON dbo.ТипНовости.Код = dbo.ВременТабл.ТипНовости WHERE dbo.ВременТабл.idUser="+IntToStr(Way)+" AND dbo.ВременТабл.ОтменаПоказа = 1 AND dbo.EmployeeNews.Сотрудник="+IntToStr(Way));
 DataModuleABS->ADOQueryZakaz->Open();
 nomerZak = DataModuleABS->ADOQueryZakaz->FieldByName("Заказ")->AsInteger ;
 
 if ( nomerZak == 0)
   {
 Timer1->Interval = 25000;
   }
 else
   {
  DataModuleABS->ADOQueryNews->Active = true;
  DataModuleABS->ADOQueryNews->Close();
  DataModuleABS->ADOQueryNews->SQL->Clear();
  DataModuleABS->ADOQueryNews->SQL->Add("Select Сообщение From dbo.ВременТабл Where ОтменаПоказа = 1 AND idUser="+IntToStr(Way));
  DataModuleABS->ADOQueryNews->Open();
  strNews = DataModuleABS->ADOQueryNews->FieldByName("Сообщение")->AsString;
 
 FormMessag->Timer1->Interval = 1000;
 FormMessag->Timer1->Enabled = true;
 Timer1->Interval = 15000;
 FormMessag->Show();
   }
}




На второй форме(FormMessag), вот такой код, который после просмотра сообщения с новостью, делает ОтменаПоказа = 0 в БД, чтобы эта запись больше не появлялась..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 void __fastcall TFormMessag::Timer3Timer(TObject *Sender) 
//Какой то код
 
 DataModuleABS->ADOQueryNewsUpDate->Active = true;
 DataModuleABS->ADOQueryNewsUpDate->Close();
 DataModuleABS->ADOQueryNewsUpDate->SQL->Clear();
 DataModuleABS->ADOQueryNewsUpDate->SQL->Add("Update dbo.ВременТабл Set ОтменаПоказа = 0 Where Заказ ="+IntToStr(nomerZak)); //ОтменаПоказа <> 0 AND idUser="+IntToStr(Way));
 DataModuleABS->ADOQueryNewsUpDate->ExecSQL();
  //Close();
}



Вот тут у меня собственно и возникает ошибка, допустим записей в таблице 2, первую показал запись ( все нормально ), и в БД ОтменаПоказа сделал 0, т.е теперь эта запись выводиться не будет, а вот когда показал вторую и подходит время выполнить этот код, то
Выдает ошибку( См.рис ) вот на эту строку
Код: plaintext
1.
 DataModuleABS->ADOQueryNewsUpDate->Close();



Project Project1.exe raised exception class EDatabaseError with message 'ADOQueryNews: CommandText does not return a result set'.

Подскажите что не так делаю, почему она возникает???
...
Рейтинг: 0 / 0
Ошибка в ADOQuery
    #38624919
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
duh_siВыдает ошибку( См.рис ) вот на эту строку
Код: plaintext
1.
 DataModuleABS->ADOQueryNewsUpDate->Close();

А в чем смысл этой команды?

duh_si Project Project1.exe raised exception class EDatabaseError with message 'ADOQueryNews: CommandText does not return a result set'.

Подскажите что не так делаю, почему она возникает???Тебе перевести текст ошибки или сам словарь найдешь?
...
Рейтинг: 0 / 0
Ошибка в ADOQuery
    #38625053
duh_si
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторWhite Owl Тебе перевести текст ошибки или сам словарь найдешь?
Если не затруднит, то перевести и если не затруднит с объяснением что делаю не так
...
Рейтинг: 0 / 0
Ошибка в ADOQuery
    #38625074
londinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перевожу

>>CommandText does not return a result set

CommandText не вернул набор данных.
...
Рейтинг: 0 / 0
Ошибка в ADOQuery
    #38625103
duh_si
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
londinium Спасибо за перевод и подробное объяснение
Разобрался со своей проблемой..
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Ошибка в ADOQuery
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]