На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела C/C++: Базы данных
Модераторы: B.V.
  
    > Динамически меняющийся запрос в ADOQuery
      есть запрос в ADOQuery, в который в ходе выполнения цикла подставляется новая переменная, но дело в том, что он выводит результат только по первой переменной, далее запрос тупо не выполняется.
      Вот код:
      ExpandedWrap disabled
        void __fastcall TForm1::IdIcmpClient1Reply(TComponent *ASender,                                  //обработка icmp ответа
             const TReplyStatus &AReplyStatus)
        {
                c=new const char();
               AnsiString s=AReplyStatus.FromIpAddress;
         
               if ((s!="0.0.0.0")&&(s!=g_lastAddress))
               {
                       RichEdit1->Lines->Add("TTL: "+IntToStr(g_ttl)+"; Байт получено: "+IntToStr(AReplyStatus.BytesReceived)+"; Промежуточный адрес: "+s);
                                               //вывод строчки ответа
         
                       g_lastAddress=s;
                      
                       c=s.c_str();   //конвертим AnsiString в const char
                       maddr1=htonl(inet_addr(c));
                       StringGrid1->RowCount=RichEdit1->Lines->Count+1;
                       StringGrid1->Cells [0][RichEdit1->Lines->Count] = g_ttl;
         
                     if (!ADOConnection1->Connected)
                    {
                       ADOQuery1->Parameters->ParamByName("maddr1")->Value=maddr1;
                       ADOQuery1->Open();
                       latitude=ADOQuery1->FieldByName("latitude")->AsString;
                       longtitude=ADOQuery1->FieldByName("longtitude")->AsString;
                       StringGrid1->Cells [1][RichEdit1->Lines->Count] = latitude;
                       StringGrid1->Cells [2][RichEdit1->Lines->Count] = longtitude;
                       ADOQuery1->Close();
                    }

      Сам запрос:
      ExpandedWrap disabled
        SELECT latitude, longtitude FROM Location WHERE num=(SELECT num FROM Blocks WHERE :maddr1 BETWEEN min AND max)

      Запрос работает, проверял насильно пихая в него maddr1.
      maddr1 - переменная, которая изменяется в ходе выполнения цикла
        а цикл где?У тебя же только одна строка одбарабывается.
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0164 ]   [ 15 queries used ]   [ Generated: 18.05.24, 21:32 GMT ]