Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2011, 20:12   #11
Apostol13
Пользователь
 
Регистрация: 02.06.2011
Сообщений: 31
По умолчанию

DBGrid1.Columns.Items[0].FieldName:=FloatToStr(Pr);
DBGrid1.Columns.Items[1].FieldName:=FloatToStr(d);

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

Последний раз редактировалось Apostol13; 03.06.2011 в 20:30.
Apostol13 вне форума Ответить с цитированием
Старый 03.06.2011, 23:53   #12
Apostol13
Пользователь
 
Регистрация: 02.06.2011
Сообщений: 31
По умолчанию

Прошу подсказки.
Если Pr сразу совпадает с нужным значением, то оно выводится, в ином случае цикл выполняется много раз и выводится значение конечной строки базы данных (двадцатой).
Где мог допустить оплошность - пока только этот алгоритм работает. Прошу отталкиваться от него. Заранее благодарен.
Код:
 d:=0;
    k:=0;
    AdoTable1.First;
    while not AdoTable1.Eof do
  begin
    if k=1 then break;
    while k=0 do

    begin

    d:=d+1;

      if Adotable1.Fields.Fields[2].AsInteger=Pr then
        begin
          k:=1;
          DBGrid1.Columns.Items[0].FieldName:=FloatToStr(Pr);
          DBGrid1.Columns.Items[1].FieldName:=FloatToStr(d);
          break;
        end
      else AdoTable1.Next;
      if d mod 20 = 1 then
          begin
          Pr:=Pr+1;
          if Pr>20000 then k:=1;
          end;
    end;


  end;
Apostol13 вне форума Ответить с цитированием
Старый 06.06.2011, 12:13   #13
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

НЕ предусмотрен ВОЗВРАТ к первой ЗАПИСИ. при изменении проверочного значения Pr:=Pr+1;
соответственно проверятся записи 1..20, 21..40,41..60,...
Цитата:
Делаю я все то же самое: сравниваю столбцы строк[0..20] по столбцу 2 со значением Pr, при отсутствии совпадений Pr:=Pr+1 и опять сравниваем содержимое столбца 2 построчно в
Если таких записей нет то либо они добавляются автоматически, либо оператор Next выполняет пустое действие без возбуждения исключения и мы остаемся на последней записи.(вот и бесконечный цикл)

Код:
if d mod 20 = 1 then
          begin
          Pr:=Pr+1;
          if Pr>20000 then k:=1;
          end;
Цитата:
выводится значение конечной строки базы данных (двадцатой).
Выводит всегда независимо от нашли\не нашли для каждой двадцатой итерации цикла, которую ты считаешь проверкой двадцатой записью (см. первой замечание).
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 06.06.2011 в 12:22.
evg_m вне форума Ответить с цитированием
Старый 06.06.2011, 14:42   #14
Apostol13
Пользователь
 
Регистрация: 02.06.2011
Сообщений: 31
По умолчанию

От Души, Дорогой, теперь все работает, стоило сделать возврат к 1-ой записи как ты и сказал - всего лишь одной строки не было = )

Код:
if d mod 20 = 1 then
          begin
          Pr:=Pr+1;
          if Pr>20000 then k:=1;
          AdoTable1.First;
          end;
еще раз Огромное спасибо тем, кто принимал Участие. В особенности Evg_M.
Ныне проблема полностью превращена в работоспособную Штуку = ).
Apostol13 вне форума Ответить с цитированием
Старый 06.06.2011, 15:01   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

вот эти строчки в ТВОЕМ коде излиши.
Код:
   while not AdoTable1.Eof do

        begin
        if k=1 then break;
ну и конечно же соответствующее end.
в твоем алгоритме НЕВОЗМОЖНО дойти до конца нД (EOF) поскольку все время откатываемя на начало (First).
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.06.2011, 13:05   #16
Apostol13
Пользователь
 
Регистрация: 02.06.2011
Сообщений: 31
По умолчанию

но на удивление все работает безотказно.
Есть вопрос:
Если я хочу разместить базу данных на сайте, как к ней обратиться через программу делфи(или можно прямо в AdoConnector вписать требуемое)? какие компоненты использовать и как скооперировать ее с провайдером, при наличии такового?
просто подскажите направление - буду думать = )
Apostol13 вне форума Ответить с цитированием
Старый 07.06.2011, 14:25   #17
OlegPrograming5
Пользователь
 
Регистрация: 12.01.2009
Сообщений: 42
Лампочка

Замечательная статья по использованию запросов - http://azbukavb.narod.ru/dbdoc/SQLDB.html
OlegPrograming5 вне форума Ответить с цитированием
Старый 07.06.2011, 15:05   #18
Apostol13
Пользователь
 
Регистрация: 02.06.2011
Сообщений: 31
По умолчанию

Нет Нет Нет - только работа с Делфи и никаких SQL`ей = )
Apostol13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сравнение slavsmo Microsoft Office Excel 2 05.04.2010 17:51
Цикл по времени - Как сделать так чтобы цикл выполнялся к примеру 10 секунд ? Anarki Общие вопросы C/C++ 3 13.11.2009 19:23
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34