Показать сообщение отдельно
  #1  
Старый 27.01.2015, 10:38
schuher schuher вне форума
Прохожий
 
Регистрация: 27.01.2015
Сообщения: 3
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Объединение 2 таблиц с одинаковыми полями, но частично с разными данными

Всем привет!!!
Буду благодарен за Вашу помощь!!!
Возникли проблемки в написание кода объединения 2 таблиц(tb1,tb2) с полями tb1(n,name,kol,ed_izm) и tb2(n,name,dw,kol,ed_izm).
То есть суть такова, мне необходимо в общую таблицу tb1 внести данные, которые будут в tb2, но не просто объединить, а произвести действия с ними. К примеру: [IMG] [/IMG]
Поясняю:
пока не конец tb2 делаю
Если1 в tb1.name равно tb2.name делаю
если2 tb2.dw='прих' делаю tb1.kol:=tb1.kol+tb2.kol
иначе2 если3 tb2.dw='расх' делаю tb1.kol:=tb1.kol-tb2.kol
иначе1 tb1 добовляем строки из tb2
Работаю с помощью ADOQuere, таблицы в Access2003.
То есть не получается написать правильно код!
Возможно условие цикла не правильно задаю!
Код:
procedure TForm1.Button4Click(Sender: TObject);
var
s:integer;
begin
if DM.ADOQuery2.Modified then begin
  DM.ADOQuery2.Post;
  DM.ADOQuery2.First;
  while not DM.ADOQuery2.Eof do begin
    s:= DM.ADOQuery2.FieldByName('kol').AsInteger;
    if Trim(AnsiLowerCase(DM.ADOQuery2.FieldByName('name').Text))=  Trim(AnsiLowerCase(DM.ADOQuery1.FieldByName('name').Text))
        then begin
        DM.ADOQuery1.Close;
        DM.ADOQuery1.SQL.Clear;
        DM.ADOQuery1.SQL.Add('UPDATE Dvig SET kol=kol+s');
        DM.ADOQuery1.ExecSQL;
         end;
    DM.ADOQuery2.Next;
  end;
end;

Сам код на компиляцию ошибок не выдает, но при выполнении ругается на переменную S. Тем самым попробывал в запросе вместо S поставить цифру 5, данные изменяются причем все, а нужно чтобы изменились только совподающии данные с поля(name) из таблиц (tb1,tb2) . Поправьте код, или мою направленность, если такое возможно или подскажите как правильно обращаться к ячейке на коде программировании и выполнять с ней какие либо действия
Ответить с цитированием