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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2012, 19:36   #1
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию перезапись в бд

Здравствуйте, у меня стала следующая задача, никак не могу реализовать:

В БД есть поля (Name ACTIVE, NUMBER)
Условие таково, если Name='disconect' то присваиваем полю ACTIVE='0' и NUMBER='-'
Далее в цикле нужно проверить ВСЮ базу, если ACTIVE<>'0' то полю NUMBER присвоить значение переменной цикла, а если ACTIVE='0', то просто ничего не писать

я делаю таким образом:

Код:
while not  Table1.Eof do begin
if  (Table1.FieldByName('name').Value='disconect')
        then begin

       Table1.Edit;
       Table1.FieldByName('Active').Value:='0';
       Table1.FieldByName('number').Value:='-';
       Table1.Post;
      Break;
    end
    else begin
    Table1.Next;
   end;  end;

Table1.First; ii:=0;
  while not  Table1.Eof do begin
if (Table1.FieldByName('Active').Value='0') then Table1.Next
else begin
  Table1.Next;
  Table1.Edit;
  Table1.FieldByName('number').Value:=IntToStr(ii);
  Table1.Post;
  Table1.Next; ii:=ii+1;
 end;  Table1.Next;
   end;
Все работает впринципе корректно, за исключением одного случая: если в базе осталось одно поле Active не нулевое и я его обнуляю, то значение полей не перезаписуется

Помогите пожалуйста одолеть неувязку. Кстати решение должно быть обязательно реляционным, без SQL
hunter03 вне форума Ответить с цитированием
Старый 18.09.2012, 20:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
без SQL
Почему?
Цитата:
должно быть обязательно реляционным
Сам то понял что сказал? Реляция - это связка одного объекта с другим. Какое отношение к связкам имеет циклический проход по таблице?

Я бы все это переписал так:
Код:
ii:=0;
while not  Table1.Eof do begin inc(ii);
Table1.Edit;
if  (Table1.FieldByName('name').Value='disconect')       then begin
       Table1.FieldByName('Active').Value:='0';
       Table1.FieldByName('number').Value:='-';
    end else begin
     if (Table1.FieldByName('Active').Value<>'0') then
      Table1.FieldByName('number').Value:=IntToStr(ii);
    end;
    Table1.Next;
   end;  
Table1.Post;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2012, 21:45   #3
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию

по условию сказали сделать навигационным методом( перепутал, глупость сказал"реляционным методом")
кстати получилось, спасибо большое! )))
hunter03 вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Случайная перезапись файла alexsampler Microsoft Office Excel 5 06.08.2012 15:14
Цикл перезапись имени detalik Общие вопросы Delphi 3 18.10.2011 16:19
Перезапись программы, C# Gogent Помощь студентам 2 15.08.2010 13:51
Перезапись строк Сергей33 Паскаль, Turbo Pascal, PascalABC.NET 5 16.05.2010 16:48
Перезапись файла в MFC nazavrik Visual C++ 15 13.02.2010 13:29