Форум по Delphi программированию

 



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.07.2008, 19:01
Kirill1987 Kirill1987 вне форума
Прохожий
 
Регистрация: 10.07.2008
Сообщения: 10
Репутация: 10
По умолчанию не получается вставить цикл в цикл

Есть кнопка которая по щелчку проставляет, во всех строках поле перевозчик в значение компания, если поле расстояние <=200
Надо сделать чтобы значение компания ставилось не во всех строках, а в определенном количестве которое считывается из поля edit1
Понимаю что надо в цикл запихнуть счетчик, но ни в какаю не получается, вот код кнопки, помогите, а то ни как не получается
Код:
procedure TForm1.N5Click(Sender: TObject);
begin
datamodule2.VednaOtgruzTable.First;
while not datamodule2.VednaOtgruzTable.eof do
begin
if datamodule2.VednaOtgruzTable.FieldByName('Расстояние').AsVariant<=200
then
  begin
  datamodule2.VednaOtgruzTable.Edit;
  datamodule2.VednaOtgruzTable.FieldByName('Перевозчик').AsString:='Компания';
  datamodule2.VednaOtgruzTable.Post;
  end;
  datamodule2.VednaOtgruzTable.Next;
  end;
  end;
Ответить с цитированием
  #2  
Старый 21.07.2008, 20:21
Kirill1987 Kirill1987 вне форума
Прохожий
 
Регистрация: 10.07.2008
Сообщения: 10
Репутация: 10
По умолчанию

Вопрос снимаю было недавно просветление сделал вот так, вроде работает:
Код:
procedure TForm1.N5Click(Sender: TObject);
var
i:integer;
c:integer;
begin
i:=0;
c:=strtoint(edit1.text);
datamodule2.VednaOtgruzTable.First;
while not datamodule2.VednaOtgruzTable.Eof do
if datamodule2.VednaOtgruzTable.FieldByName('Расстояние').AsVariant<=200
then
begin
datamodule2.VednaOtgruzTable.Edit;
datamodule2.VednaOtgruzTable.FieldByName('Перевозчик').AsString:='Компания';
datamodule2.VednaOtgruzTable.Post;
inc(i);
if i<c
then
datamodule2.VednaOtgruzTable.Next
else
datamodule2.VednaOtgruzTable.Last;
end
else
datamodule2.VednaOtgruzTable.Next;
end;
Ответить с цитированием
  #3  
Старый 21.07.2008, 20:21
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 7,599
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
procedure TForm1.N5Click(Sender: TObject);
var
  ACount : Integer;
  ATotal : Integer;
begin
  ACount := 0;
  ATotal := StrToInt(Edit1.Text);
  datamodule2.VednaOtgruzTable.First;
  while not datamodule2.VednaOtgruzTable.eof do
    begin
      if datamodule2.VednaOtgruzTable.FieldByName('Расстояние').AsVariant<=200
        then
          begin
            datamodule2.VednaOtgruzTable.Edit;
            datamodule2.VednaOtgruzTable.FieldByName('Перевозчик').AsString:='Компания';
            datamodule2.VednaOtgruzTable.Post;
            Inc(ACount);
          end;
      If ACount >= ATotal Then Break;
      datamodule2.VednaOtgruzTable.Next;
    end;
end;

Годится?
Ответить с цитированием
  #4  
Старый 21.07.2008, 22:28
Kirill1987 Kirill1987 вне форума
Прохожий
 
Регистрация: 10.07.2008
Сообщения: 10
Репутация: 10
По умолчанию

Супер, еще раз огромное спасибо, если бы не твои ответы, я бы до сих пор думал в какую сторону копать, а сейчас, у меня клиент почти все что надо умеет, может конечно криво, но умеет
Ответить с цитированием
  #5  
Старый 23.07.2008, 23:52
akm12 akm12 вне форума
Прохожий
 
Регистрация: 14.07.2008
Сообщения: 1
Репутация: 10
По умолчанию

Цитата:
Сообщение от Kirill1987
Супер, еще раз огромное спасибо, если бы не твои ответы, я бы до сих пор думал в какую сторону копать, а сейчас, у меня клиент почти все что надо умеет, может конечно криво, но умеет
Imikle красиво придумав, але можна замість
If ACount >= ATotal Then Break;

добавити

while (not datamodule2.VednaOtgruzTable.eof)or(ACount <= ATotal ) do
Ответить с цитированием
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 19:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2020

ВКонтакте   Facebook   Twitter