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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2014, 03:28   #1
Poltish
Пользователь
 
Регистрация: 16.03.2013
Сообщений: 35
Печаль Удаление дубликатов, фильтр по дате...

Всем доброго дня. Проблема в следующем:
1) В базе (BDE база, Paradox), так получается, что точно будут дубликаты. Честно искал и по форуму и в google, да для bde не нашёл. Подскажите, пожалуйста, как удалить эти самые дубликаты. Написал данный код:

Код:
for i := 1 to form1.Table1.RecordCount do
  begin

    buf:= Form1.Table1Названиепоставщика.Text;  

      for j := Form1.Table1.RecordCount downto 1 do
        begin
            if j = i then Break; 

              if
              (form6.Table1Названиепоставщика.Text = buf)  then form1.DBGrid1.DataSource.DataSet.Delete else
              ShowMessage('Это не дубликат!');

        end;
  end;
Хоть условие НЕ на дубликаты и срабатывает, DbGrid всё-равно чистый :'(

И проблема №2:

Так получилось, что приходится использовать кириллицу в полях (что видно из кода выше). В следствии этого очень сильно жизнь мне испортили обычные фильтры. С типичным Filter для кириллицы разобраться не смог, заюзал событие OnFilterRecord. Проблема в том, что не могу придумать или нагуглить код, который будет делать выборку по цене (грубо говоря, значение поля должно быть > , < , =) значению, введённому в соответствующий Edit.

Написал код события:

Код:
if Form1.Edit1.Text <> '' then accept:= (DataSet.FieldByName('Цена').AsInteger > StrToInt(Form1.Edit1.Text));
Кидает ошибку "Invalid variant operation"

И так же с выборкой даты, не могу понять как реализовывать. Большое, заранее, спасибо.

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

А ты в событии фильтрации не проверяешь на NULL?
Кстати почему у тебя цена целочисленная?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.04.2014, 08:27   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дубликаты запросом лучше всего искать. А приведенный код вообще не понятно что делает, вернее должен почистить всю таблицу или оставить одну запись, если изначально одна и была
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2014, 15:10   #4
Poltish
Пользователь
 
Регистрация: 16.03.2013
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дубликаты запросом лучше всего искать. А приведенный код вообще не понятно что делает, вернее должен почистить всю таблицу или оставить одну запись, если изначально одна и была
Можно подробнее, каким запросом? Я понимаю, что где-то накосячил в коде, поэтому и прошу помощи.
Poltish вне форума Ответить с цитированием
Старый 07.04.2014, 15:11   #5
Poltish
Пользователь
 
Регистрация: 16.03.2013
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты в событии фильтрации не проверяешь на NULL?
Кстати почему у тебя цена целочисленная?
Вопрос ведь не в этом..
Валюта цены в отдельной колонке, сама цена в виде числа, мне так удобнее. Главное понять, как фильтр сделать. Если знаете, скажите, пожалуйста.

Последний раз редактировалось Poltish; 07.04.2014 в 15:16.
Poltish вне форума Ответить с цитированием
Старый 07.04.2014, 15:27   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так я же сказал: возможен NULL, коево ты не обрабатываешь.
Если ты говоришь что цена у тебя целочисленная то тут я не спорю. А вот на проверку этого поля на пустоту стоит описать.
Код:
if not DataSet.FieldByName('Цена').IsNull then...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление дубликатов с ListBox celovec Общие вопросы Delphi 7 13.09.2016 09:07
Удаление дубликатов Wind-up Bird Microsoft Office Excel 9 02.02.2012 12:49
Удаление дубликатов строк hon Паскаль, Turbo Pascal, PascalABC.NET 10 02.08.2011 05:29
удаление дубликатов в ListView fate Общие вопросы Delphi 8 12.05.2011 16:51
Удаление дубликатов Deltist Microsoft Office Excel 11 14.01.2011 16:01