Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 04.07.2015, 14:52
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию из StringGrid в аксес

Люди подскажите пожалуйста, делаю импорт из грида в аксес таким бразом

Код:
var
i,n:integer;
begin
Form1.ADOConnection1.Connected:=True;
for i:=1 to StringGrid1.RowCount-1 do
begin
ADODataSet1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(paramstr(0))+'DataSet\'+ComboBox1.Text+';Persist Security Info=False';
ADODataSet1.CommandText:='SELECT * From '+ComboBox2.Text;
ADODataSet1.Active:=True;
ADOQuery1.Active:=True;
ADOQuery1.Insert;
for n:=0 to 12 do
ADOQuery1.Fields[n].AsString:=StringGrid1.Cells[n,i];
ADOQuery1.Post;
end;

получается база вида

Код:
2015-07-02	3256.0	3275.0	3229.0	3267.0	13.0	3253.0	1982.0	30398.0	50.0	
2015-07-01	3226.0	3265.0	3229.0	3267.0	13.0	3253.0	1982.0	30398.0	50.0	
2015-06-30	3226.0	3275.0	3229.0	3667.0	13.0	3253.0	1982.0	30398.0	50.0		
2015-07-02	3256.0	3275.0	5229.0	3267.0	13.0	3253.0	1982.0	30398.0	50.0	
Цветом выделены 2 поля, в них одинаковые даты, все остальные значения могут быть разные, как удалить все такие поля, где попадаются одинаковые даты?

Последний раз редактировалось ApxaHGe1, 04.07.2015 в 17:08.
Ответить с цитированием
  #2  
Старый 04.07.2015, 20:40
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Убрать повторы может модификатор DISTINCT в конструкции SELECT
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
ApxaHGe1 (05.07.2015)
  #3  
Старый 05.07.2015, 07:26
ApxaHGe1 ApxaHGe1 вне форума
Активный
 
Регистрация: 08.04.2008
Адрес: Нижний новгород
Сообщения: 311
Репутация: 38
По умолчанию

Ок, уточню, повторы будут только в первол столбце всей базы, а именно в дате, а все остальные значения разные!!!! DISTINCT сдлает и менно то что мне нужно?
Ответить с цитированием
  #4  
Старый 05.07.2015, 21:50
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

нет, distinct работает на всех возвращаемых полях. Т.е. если ты возвращаешь только те 2 поля, которые могут быть одинаковые, то да, сработает. Если ты возвращаешь все поля (о чем говорит * в запросе), то не поможет.
По приведенному коду вообще не понятно, что ты пытаешься сделать.
Ты сначала подключился к какой-то базе, потом получил из нее данные, а потом, не сморя на полученные данные, ты начинаешь что-то вставлять в БД, причем это могут быть разные таблицы, бо как какой запрос в ADOQuery1 ты не показал (да и вообще, использовать ADOQuery для вставки через Insert - это как-то не по человечески, что ли).
Ответить с цитированием
  #5  
Старый 05.07.2015, 23:20
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Были бы какие-нибудь уникальные id у строк, то можно было бы как-нибудь так:
Код:
select * from my_table mt
join (select min(id) as id from my_table group by my_date) jt on jt.id = mt.id
и получить для каждой даты первую по ID-шнику запись.
Если же надо именно
Цитата:
удалить все такие поля, где попадаются одинаковые даты
то есть если дата встречается дважды, то выкинуть оба вхождения, то как-то так:
Код:
select * from my_table mt
join (select min(id) as id from my_table
       group by my_date having count(id) = 1) jt on jt.id = mt.id
__________________
jmp $ ; Happy End!
The Cake Is A Lie.

Последний раз редактировалось Bargest, 06.07.2015 в 00:33.
Ответить с цитированием
Этот пользователь сказал Спасибо Bargest за это полезное сообщение:
ApxaHGe1 (08.07.2015)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:00.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter