Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как добавить недостающие записи в базе mdb, расположенные в одной таблице 
:(
    Опции темы
Rodeon
  Дата 27.9.2009, 05:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 28.8.2008
Где: Россия, Ухта

Репутация: нет
Всего: нет



Переделал вопрос, первоначальный вариант был трудночитаемым и большим!
База MDB
Использую ADO
Загружаю таблицу из базы в несколько Query по значению в поле "Код", всего может быть 5 разных кодов: 17,18,19,20,21
Код

ADOQuery17.SQL.Add('SELECT * FROM Well_Komponent WHERE Well_Komponent.Код=17 AND Well_Komponent.Скважина='+IntToStr(Nomer[ComboBox2.ItemIndex])+' ORDER BY Well_Komponent.Кровля');

ADOQuery18.SQL.Add('SELECT * FROM Well_Komponent WHERE Well_Komponent.Код=18 AND Well_Komponent.Скважина='+IntToStr(Nomer[ComboBox2.ItemIndex])+' ORDER BY Well_Komponent.Кровля');

ADOQuery19.SQL.Add('SELECT * FROM Well_Komponent WHERE Well_Komponent.Код=19 AND Well_Komponent.Скважина='+IntToStr(Nomer[ComboBox2.ItemIndex])+' ORDER BY Well_Komponent.Кровля');

ADOQuery20.SQL.Add('SELECT * FROM Well_Komponent WHERE Well_Komponent.Код=20 AND Well_Komponent.Скважина='+IntToStr(Nomer[ComboBox2.ItemIndex])+' ORDER BY Well_Komponent.Кровля');

ADOQuery21.SQL.Add('SELECT * FROM Well_Komponent WHERE Well_Komponent.Код=21 AND Well_Komponent.Скважина='+IntToStr(Nomer[ComboBox2.ItemIndex])+' ORDER BY Well_Komponent.Кровля');

После этого оказываеться что в таблице строк с кодом 17, например больше, чем всех остальных.
Как можно внутри одной таблицы добавить из строки с кодом 17 в новую строку в эту же таблицу, но уже с другим кодом!
Может как-то можно запрос задать по условию на добавление строк не достающих!?
Заранее спасибо за ответ!

Это сообщение отредактировал(а) Rodeon - 28.9.2009, 00:31
PM MAIL   Вверх
Rodeon
  Дата 28.9.2009, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 28.8.2008
Где: Россия, Ухта

Репутация: нет
Всего: нет



Приходиться пока выходить данным способом!
Проверяю в какой таблице больше всего значений, ее беру за источник, далее так:
Код

        ADOQuery21.First;
        For i:=0 to ADOQuery21.RecordCount-1 do
        Begin
          Proverka:=false;
          ADOQuery17.First;
          For j:=0 to ADOQuery17.RecordCount-1 do
          Begin
            If ADOQuery21.Fields.Fields[2].Value=ADOQuery17.Fields.Fields[2].Value then Proverka:=true;
            ADOQuery17.Next;
          End;
          If Proverka=False Then
          Begin
            Counter:=Counter+1;
            ADOTable.Active:=false;
            ADOTable.TableName:='Well_Komponent';
            ADOTable.Active:=true;
            ADOTable.Last;
            ADOTable.Edit;
            Adotable.Insert;
            Adotable.FieldByName('Код').Value:=17;
            Adotable.FieldByName('Скважина').Value:=IntToStr(Nomer[ComboBox2.ItemIndex]);
            Adotable.FieldByName('Кровля').Value:=ADOQuery21.Fields.Fields[2].Value;
            Adotable.FieldByName('Мощность').Value:=ADOQuery21.Fields.Fields[3].Value;
            Adotable.Next;
            adotable.Active:=False;
          End;
          ADOQuery21.Next;
        End;

Так-то работает, но код уж слишком большой получаеться! Для каждого квери отдельная проверка идет!
Может можно как-то обойтись без циклов, напрямую с одного квери копировать в другой нехватающие значения, сразу с заменой значения в определенной ячейке?!

Это сообщение отредактировал(а) Rodeon - 28.9.2009, 02:39
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0383 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.