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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2010, 12:22   #1
Alinghor
 
Аватар для Alinghor
 
Регистрация: 04.07.2008
Сообщений: 6
По умолчанию Замена записи в таблице Access через Delphi

БД Access подключена к Delphi через ODBC
Ad_little_lines это компонент Table
В таблице нет индексных полей
Часть программы
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
    i,j,sum:integer;
    f: array of Boolean; 
begin
...........
Ad_little_lines.Close; Ad_little_lines.EmptyTable; Ad_little_lines.Open;
..........
 for i:=1 to sum do begin 
...........
  Ad_little_lines.Append;   
  Ad_little_lines.FieldByName('Namber_line').AsInteger:=j;
  Ad_little_lines.FieldByName('f_line').AsBoolean:=f[j];
  Ad_little_lines.Post;
  if f[j-1]=f[j] then begin  
    j:=j-1;       
    Ad_little_lines.Edit;
    Ad_little_lines.FieldByName('Namber_line').AsInteger:=j;
    Ad_little_lines.FieldByName('f_line').AsBoolean:=f[j];
    Ad_little_lines.Post;
  end;
....
  j:=j+1;
 end;
end;
Программа должна если f[j-1]=f[j] заменять предыдущую запись в таблицу на новую. А она вместо этого добавляет новую запись.

Я попробовал оставить только запись в БД:
Код:
procedure TForm1.Button4Click(Sender: TObject);
begin
  Ad_little_lines.Insert;
  Ad_little_lines.FieldByName('Namber_line').AsInteger:=111;
  Ad_little_lines.FieldByName('f_line').AsBoolean:=true;
  Ad_little_lines.Post;
  Ad_little_lines.Edit;;
  Ad_little_lines.FieldByName('Namber_line').AsInteger:=100;
  Ad_little_lines.FieldByName('f_line').AsBoolean:=true;
  Ad_little_lines.Post;
end;
Запись 111 благополучно заменяется на 100. Не пойму в чём проблемма.

Последний раз редактировалось Alinghor; 21.10.2010 в 14:31.
Alinghor вне форума Ответить с цитированием
Старый 21.10.2010, 13:15   #2
WhiteSpirit
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 82
По умолчанию

После изменения
Код:
Ad_little_lines.Edit;
Ad_little_lines.FieldByName('Namber _line').AsInteger:=j;
Ad_little_lines.FieldByName('f_line ').AsBoolean:=f[j];
надо вызвать Post
Код:
Ad_little_lines.Post;
WhiteSpirit вне форума Ответить с цитированием
Старый 21.10.2010, 14:34   #3
Alinghor
 
Аватар для Alinghor
 
Регистрация: 04.07.2008
Сообщений: 6
По умолчанию

А, сори. Post есть, удалил строку случайно.
Пробовал удалять запись. Таже ерунда, отдельно работает, а в цикле нет.
Alinghor вне форума Ответить с цитированием
Старый 21.10.2010, 15:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
    i,j,sum:integer;
    f: array of Boolean; 
begin
...........
Ad_little_lines.Close; Ad_little_lines.EmptyTable; Ad_little_lines.Open;
..........
 for i:=1 to sum do begin 
...........
  if f[j-1]=f[j] then begin  
    j:=j-1;       
    Ad_little_lines.Edit;
  end else begin
   Ad_little_lines.Append;   
  end;
  Ad_little_lines.FieldByName('Namber_line').AsInteger:=j;
  Ad_little_lines.FieldByName('f_line').AsBoolean:=f[j];
  Ad_little_lines.Post;
....
  j:=j+1;
 end;
end;
Сойдет?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.10.2010, 05:55   #5
Alinghor
 
Аватар для Alinghor
 
Регистрация: 04.07.2008
Сообщений: 6
По умолчанию

Теперь елси например идёт 4 одинаковых f[j], то в таблице выводит 2ую и 4ую, получается 1 и 3 замещаются. Не знаю что и думать.
Alinghor вне форума Ответить с цитированием
Старый 22.10.2010, 09:37   #6
Alinghor
 
Аватар для Alinghor
 
Регистрация: 04.07.2008
Сообщений: 6
По умолчанию

Сделал таблицу формата Paradox c теми же полями. Всё норм работате, даннные заменяются как надо. Но мне надо в Access
Alinghor вне форума Ответить с цитированием
Старый 26.10.2010, 10:35   #7
Alinghor
 
Аватар для Alinghor
 
Регистрация: 04.07.2008
Сообщений: 6
По умолчанию

Подключил БД Access через ADO. Всё работает как надо. Всем спасибо.
Alinghor вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическая замена данных в таблице. <Dmitry!> Microsoft Office Excel 4 18.05.2010 12:43
Создание новых таблиц в Access через Delphi mopozoff БД в Delphi 25 05.12.2009 20:18
Вычисляемое поле в таблице ACCESS, создать вычисляемое поля в таблице аксес artlayers Microsoft Office Access 2 04.11.2009 19:29
Добавление записи через список в связанную таблицу(при связи с Access) megaten БД в Delphi 5 17.05.2009 15:57