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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2010, 00:59   #1
хИринах
 
Регистрация: 22.06.2010
Сообщений: 4
Вопрос Поиск "почти" одинаковых полей в таблице

Всем привет.
Помогите пожалуйста с проблемой.
Ситуация такая:
У меня есть 2а Query. По структуре они идентичны.
Данные из них я копирую в Table1, индексирую.
Теперь собственно проблема получить Table2(попробую схематично объяснить):
_____________________
Table1
------------------------
заказ цех цена кол-во
-----------------------
121.....1.....5.....10
122.....2.....10.....1
122.....2.....1.......5
122.....2.....5.......1
---------------------
_____________________
Table2
------------------------
СТРОКА
-----------------------
121.....1.....5.....10
122.....2.....10.....1
.................1.......5
.................5.......1
---------------------
Посоветовали сравнить текущую строку с последующей...Но как это сделать ....?

(.... - пробелы)

Последний раз редактировалось хИринах; 22.06.2010 в 01:18.
хИринах вне форума Ответить с цитированием
Старый 22.06.2010, 03:31   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

Может вам стоит использовать функцию DISTINCT?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 22.06.2010, 07:40   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ира, ты может всетки подробнее обьяснишь что тебе надо?
пока что я вижу что ты хочешь выбрать все строки, присутствующие в обоих таблицах. Это делается объединением JOIN, с указанием ключевых полей. Можно конечно и через distinct и даже (если не ошибаюсь) через группировку, но... Задание вкрай непонятное.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 09:12   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а не проще ли будет просто использовать сортировку в запросе +
обработку записей на клиенте?!
И на клиенте организовать простой цикл вида:
Код:
  CurNumber := '@@@@####';
  Query1.First;
  while Not Query1.EOF do begin
     if Query1.FieldByName('Цех').AsString = CurNumber then begin
   Query1.Edit;
   Query1.FieldByName('Цех').AsString := '';
   Query1.Post;
end
else {встретили новый номер}
    CurNumber := Query1.FieldByName('Цех').AsString;
  Query1.Next;
 end;
p.s. код, разумеется, приблизительный..

p.p.s. на SQL это, имхо, тоже возможно нарисовать... но запрос будет совершенно "недетский" (да и конкретную СУБД надо точно знать)....


Stilet, Виталий, если я правильно понял, она хочет "свернуть" повторяющиеся номера. Т.е. если в строке такой же номер, как в предыдущей, не выводить его.
Ну, как в бухгалтерии, если в следующей графе идёт повтор содержимого предыдущей строчки,
ставят значок --//--

Последний раз редактировалось Serge_Bliznykov; 22.06.2010 в 09:20.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.06.2010, 09:39   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ы-ы-ы, Серж, вон он что...
Мрачная задача У меня такая же заморочка была при работе со спецификациями по ГОСТу, там тоже стандартные детали сворачивались таким образом... Ну тогда твой способ пойдет
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 22.06.2010, 22:18   #6
хИринах
 
Регистрация: 22.06.2010
Сообщений: 4
По умолчанию

Спасибо всем))))
додумалась я))))
Сокращенно код выглядит так(не считая копирования в таблицу из 2-х квери, в табле2 находится только один столбец):
Код:

str:='------------------------------------------------------------------------------------------------------------------------';
Table1.Insert;
Table1.FieldByName('STROKA').AsString:= str;

str:='ШИФР ПО ПЛАНУ  ЗАКАЗ  ЦЕХ  ПОТРЕБНОСТЬ  ЕИ  :ШИФР ПО ФАКТУ  КОЛИЧЕСТВО  ЦЕНА(РУБ.КОП)  СУММА(РУБ.КОП)  НОМ.ДОК  ДАТА  СКЛ  ШД';
Table1.Insert;
Table1.FieldByName('STROKA').AsString:= str;

str:='------------------------------------------------------------------------------------------------------------------------';
Table1.Insert;
Table1.FieldByName('STROKA').AsString:= str;

str:='------------------------------------------------------------------------------------------------------------------------';
Table1.Insert;
Table1.FieldByName('STROKA').AsString:= str;

Z:=Z+12;

goto  p_zap;
////////////////////////////////////////////////////////////////
Query3.First;
Table2.First;

for i:=1 to Table2.RecordCount do

          begin

          p_zap:

          if Z>68 then goto  p_zak;
          IF Table2.Eof = true  then
      
            begin
            str:='ИТОГ:  '+Query3.FieldByName('SUM OF SUMMA').AsString;
            Table1.Insert;
            Table1.FieldByName('STROKA').AsString:= str;

            str:=' ';
            Table1.Insert;
            Table1.FieldByName('STROKA').AsString:= str;

            str:=' ';
            Table1.Insert;
            Table1.FieldByName('STROKA').AsString:= str;

            str:=' ';
            Table1.Insert;
            Table1.FieldByName('STROKA').AsString:= str;

          str:='ПОДПИСИ :         ' ;
          Table1.Insert;
          Table1.FieldByName('STROKA').AsString:= str;

            Table2.Close;
          //  Table2.DeleteTable;
            exit ;
            end;

          str:= (Table2NAME.AsString)   ;
          str:= AnsiUpperCase(str);
          Table1.Insert;
          Table1.FieldByName('STROKA').AsString:= str;

          str:= (Table2DRAFT.AsString) ;
          str:= AnsiUpperCase(str);
          Table1.Insert;
          Table1.FieldByName('STROKA').AsString:= str;

          str:=(Table2MAT.AsString)+'  '+(Table2ZAKAZ.AsString)+'  '+(Table2CEH.AsString)+'  '+(Table2POTR.AsString)+'  '+AnsiUpperCase(Table2EI.AsString)+'  '+(Table2CODE.AsString)+'  '+(Table2QUANTITY.AsString)+'  '+(Table2PRICE.AsString)+'  '+(Table2SUMMA.AsString)+'  '+(Table2NUM_DOK.AsString)+'  '+(Table2INS_DATE.AsString)+'  '+(Table2SKLAD.AsString)+'  '+(Table2SHIFR.AsString);
          Table1.Insert;
          Table1.FieldByName('STROKA').AsString:= str;

p_sr:
str1:=Table2.FieldByName('ZAKAZ').AsString+Table2.FieldByName('MAT').AsString+Table2.FieldByName('CEH').AsString+Table2.FieldByName('POTR').AsString+Table2.FieldByName('EI').AsString;
Table2.Next;
IF Table2.Eof = true  then goto p_it;
str2:=Table2.FieldByName('ZAKAZ').AsString+Table2.FieldByName('MAT').AsString+Table2.FieldByName('CEH').AsString+Table2.FieldByName('POTR').AsString+Table2.FieldByName('EI').AsString;
if str1=str2 then

begin
str:={(Table2MAT.AsString)+'  '+(Table2ZAKAZ.AsString)+'  '+(Table2CEH.AsString)+'  '+(Table2POTR.AsString)+'  '+AnsiUpperCase(Table2EI.AsString)+}'                         '+(Table2CODE.AsString)+'  '+(Table2QUANTITY.AsString)+'  '+(Table2PRICE.AsString)+'  '+(Table2SUMMA.AsString)+'  '+(Table2NUM_DOK.AsString)+'  '+(Table2INS_DATE.AsString)+'  '+(Table2SKLAD.AsString)+'  '+(Table2SHIFR.AsString);
Table1.Insert;
Table1.FieldByName('STROKA').AsString:= str;

goto p_sr;



end;

          p_it:
          str:='------------------------------------------------------------------------------------------------------------------------';
          Table1.Insert;
          Table1.FieldByName('STROKA').AsString:= str;

          Z:=Z+4;

        end;

end;
хИринах вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск "почти" одинаковых записей в Table хИринах Помощь студентам 1 22.06.2010 09:19
Количество одинаковых слов в таблице K608723 Microsoft Office Excel 1 22.09.2009 00:33
Подсчет полей в таблице Arkatic Общие вопросы C/C++ 0 10.05.2009 22:52
Слияние шаблона с данными из таблице, и как подсичтать значение количества полей в таблице n4ela Microsoft Office Access 3 07.03.2009 12:04
Параметр TTAble определяющий кол-во одинаковых записей в таблице Таня84 БД в Delphi 4 09.02.2007 14:51