|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
не получается вставить цикл в цикл
Есть кнопка которая по щелчку проставляет, во всех строках поле перевозчик в значение компания, если поле расстояние <=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
|
|||
|
|||
Вопрос снимаю было недавно просветление сделал вот так, вроде работает:
Код:
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
|
|||
|
|||
Код:
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
|
|||
|
|||
Супер, еще раз огромное спасибо, если бы не твои ответы, я бы до сих пор думал в какую сторону копать, а сейчас, у меня клиент почти все что надо умеет, может конечно криво, но умеет
|
#5
|
|||
|
|||
Цитата:
If ACount >= ATotal Then Break; добавити while (not datamodule2.VednaOtgruzTable.eof)or(ACount <= ATotal ) do |