Поиск:

Ответ в темуСоздание новой темы Создание опроса
> > DELPHI Paradox 5.x Выборка за промижуток дат и в 
:(
    Опции темы
Ripperr
  Дата 22.12.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



Надо произвести выборку за период дат дата1-дата2 с последующим введением ограничения датавремя1 -датавремя2.
Парадокс связан через ADO MicroSoftJEt

Код
SELECT CallDate, UserName, Duration, PhoneNumber, Country, ROUND(SumMoney,2) AS SumMoney FROM Statist WHERE  CallDate + CallBegin >= :firstDate AND CallDate + CallBegin <= :secodDate


form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add(query1);
form1.ADOQuery1.Parameters.ParamByName('firstDate').Value:=SplitString(datetostr(form1.DateTimePicker1.Date),'.',1)+'/'+SplitString(datetostr(form1.DateTimePicker1.Date),'.',0)+'/'+SplitString(datetostr(form1.DateTimePicker1.Date),'.',2)+' 00:00:00';
form1.ADOQuery1.Parameters.ParamByName('secodDate').Value:=SplitString(datetostr(form1.DateTimePicker2.Date),'.',1)+'/'+SplitString(datetostr(form1.DateTimePicker2.Date),'.',0)+'/'+SplitString(datetostr(form1.DateTimePicker2.Date),'.',2)+' 23:00:00';
form1.ADOQuery1.ExecSQL;
form1.ADOQuery1.Active:=true;


неработает результат пусто

значения праметра
Код
firstDate
'01/01/2008 00:00:00'

Код
secodDate
'12/22/2008 23:00:00'


я уже незнаю что с этим делать стою на одном месте уже голова болит с MSSQL, MySQL, Access некогда таких боков небыло.  smile:
PM MAIL ICQ   Вверх
pseud
Дата 22.12.2008, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



такая штука в SQL Explorer отрабатывает нормально?
Код

SELECT 
  CallDate, 
  UserName, 
  Duration, 
  PhoneNumber, 
  Country, 
  ROUND(SumMoney,2) AS SumMoney 
FROM 
  Statist 
WHERE  
  CallDate + CallBegin >= '01/01/2008 00:00:00' 
  AND CallDate + CallBegin <= '12/22/2008 23:00:00'

а лучше такая
Код

SELECT 
  CallDate, 
  UserName, 
  Duration, 
  PhoneNumber, 
  Country, 
  ROUND(SumMoney,2) AS SumMoney 
FROM 
  Statist 
WHERE  
  CallDate + CallBegin >= '01.01.2008 00:00:00' 
  AND CallDate + CallBegin <= '12.22.2008 23:00:00'



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Ripperr
Дата 22.12.2008, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



Если оба запроса вставить на пряму в адокювери результат пусто


Код

SELECT 
  CallDate, 
  UserName, 
  Duration, 
  PhoneNumber, 
  Country, 
  ROUND(SumMoney,2) AS SumMoney 
FROM 
  Statist 
WHERE  
  CallDate >= '01/01/2008' 
  AND CallDate <= '12/22/2008'



если так то говорит "несоотведствие типов в выражении условий отбора"

если без каваычек результат пусто

Это сообщение отредактировал(а) Ripperr - 22.12.2008, 16:55
PM MAIL ICQ   Вверх
pseud
Дата 22.12.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



CallDate и CallBegin - это кто?


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Ripperr
Дата 22.12.2008, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



Это поле дата и время
отдельные
PM MAIL ICQ   Вверх
pseud
Дата 22.12.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



а так?
Код

SELECT 
  CallDate, 
  UserName, 
  Duration, 
  PhoneNumber, 
  Country, 
  ROUND(SumMoney,2) AS SumMoney 
FROM 
  Statist 
WHERE  
  (CallDate BETWEEN  '01.01.2008'  AND '12.22.2008')
  AND
  (CallBegin BETWEEN '00:00:00' AND '23:00:00')



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Ripperr
Дата 22.12.2008, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



это немного по логике другой вопрос но пишет что не совмесимость типов данных и выражений в условиях отбора... 

Тут походу особеность что это Paradox и ADO.  ..  надо поробовать через BDE хотя я ранше некогда им не пользовался...

Драйвер подключения для адо соствален так :


Код

Provider=Microsoft.Jet.OLEDB.4.0;
Password="";
User ID=Admin;
Data Source=C:\Tarificator\Phone Inspector\Database;
Mode=Share Deny None;
Extended Properties=Paradox 5.x;
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";
Jet OLEDB:Database Password="";
Jet OLEDB:Engine Type=82;
Jet OLEDB:Database Locking Mode=0;
Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;
Jet OLEDB:New Database Password="";
Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;
Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False




Это сообщение отредактировал(а) Ripperr - 22.12.2008, 20:24
PM MAIL ICQ   Вверх
Akella
Дата 22.12.2008, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Ripperr @  22.12.2008,  15:36 Найти цитируемый пост)
form1.ADOQuery1.ExecSQL;
form1.ADOQuery1.Active:=true;

когда народ начнёт различать Exec и Open?

Добавлено через 7 минут и 45 секунд
Ripperr, запомни, если твой запрос должен что-то тебе вернуть, показать, например, в гриде, или тебе нужна навигация по записям полученного набора данных, то
Код

form1.ADOQuery1.Active:=true;

или
Код

form1.ADOQuery1.Open;

затем нужно закрывать 
Код

form1.ADOQuery1.Close;



Если тебе нужно выполнить, например, хранимую процедуру, или вставить/обновить запись, то
Код

form1.ADOQuery1.ExecSQL;

в этом случае уже закрывать не нужно, т.к. закрывать нечего, ты послал запрос серверу БЕЗ получения данных.

Добавлено через 12 минут и 8 секунд
Вот ещё будет полезно

Добавлено через 13 минут и 38 секунд
А здесь ближе к концу страницы

Цитата

Open или ExecSQL?

После того, как составлен SQL запрос, есть два различных способа выполнить его. Если Вы хотите получить курсор, то нужно вызывать Open. Если выражение SQL не подразумевает возвращение курсора, то нужно вызывать ExecSQL. Например, если происходит вставка, удаление или обновление данных (т.е. SQL запросы INSERT, DELETE, UPDATE), то нужно вызывать ExecSQL. Тоже самое можно сказать по-другому: Open вызывается при запросе типа SELECT, а ExecSQL - во всех остальных случаях...... читай дальше

PM MAIL   Вверх
pseud
Дата 23.12.2008, 12:08 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Цитата(Ripperr @  22.12.2008,  20:11 Найти цитируемый пост)
Тут походу особеность что это Paradox и ADO.

никогда не пользовал парадокс/АДО
бде мой последний запрос съедает запросто


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Ripperr
Дата 23.12.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



Цитата(pseud @ 23.12.2008,  12:08)
Цитата(Ripperr @  22.12.2008,  20:11 Найти цитируемый пост)
Тут походу особеность что это Paradox и ADO.

никогда не пользовал парадокс/АДО
бде мой последний запрос съедает запросто

Я копирую твой запрост просто а ADOQuery 

если так как оно у тебя написано говорит несоотведствие типов

если возле дат и врмени убрать кавыки говорит что неопределены параметры если убрать даты то запрос выполняется без ощибки но результат пустота....



PM MAIL ICQ   Вверх
Ripperr
Дата 23.12.2008, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



Запрос сейчас который скармливается ADO выглядит так


Код

SELECT 
               CallDate, UserName, Duration, PhoneNumber, Country, ROUND(SumMoney,2) AS SumMoney 
FROM 
               Statist 
WHERE  
               CallDate + CallBegin >= :firstDate AND CallDate + CallBegin <= :secodDate



код адо

Код

form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add(query1);
form1.ADOQuery1.Parameters.ParamByName('firstDate').Value:=''+SplitString(datetostr(form1.DateTimePicker1.Date),'.',1)+'/'+SplitString(datetostr(form1.DateTimePicker1.Date),'.',0)+'/'+SplitString(datetostr(form1.DateTimePicker1.Date),'.',2)+' 00:00:00''';
form1.ADOQuery1.Parameters.ParamByName('secodDate').Value:=''+SplitString(datetostr(form1.DateTimePicker2.Date),'.',1)+'/'+SplitString(datetostr(form1.DateTimePicker2.Date),'.',0)+'/'+SplitString(datetostr(form1.DateTimePicker2.Date),'.',2)+' 23:00:00''';
form1.ADOQuery1.Active:=true;
form1.ADOQuery1.Close;

Результат пустота не ощибки не данных....

PM MAIL ICQ   Вверх
Akella
Дата 23.12.2008, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Цитата(Ripperr @  23.12.2008,  19:34 Найти цитируемый пост)
form1.ADOQuery1.Active:=true;
form1.ADOQuery1.Close;

 smile я просто под столом...

Ripperr, ты перед этим всем этим ИЗУЧИ хоть маломальски методы компонент, а ты ты так и будешь тыкаться по форумам как слепой котёнок.
Что такое Close, что такое Active, что такое Open хотябы  smile 

Это сообщение отредактировал(а) Akella - 23.12.2008, 20:08
PM MAIL   Вверх
Ripperr
Дата 23.12.2008, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



Цитата(Akella @  22.12.2008,  20:14 Найти цитируемый пост)
Ripperr, запомни, если твой запрос должен что-то тебе вернуть, показать, например, в гриде, или тебе нужна навигация по записям полученного набора данных, то
Выделить всёкод Pascal/Delphi
1:
    
form1.ADOQuery1.Active:=true;

или
Выделить всёкод Pascal/Delphi
1:
    
form1.ADOQuery1.Open;

затем нужно закрывать 
Выделить всёкод Pascal/Delphi
1:
    
form1.ADOQuery1.Close;



я просто прочитал что тут было написано

Добавлено через 4 минуты и 49 секунд
Ты меня направляеш в книжки а я ищю решение чтобы знать в чем прикол. Я ранше с этим не сталкивался всегда когда запрос выполнялся в SQL редакторе в такойже форме он работал и в ADO а тут непонятно что.
PM MAIL ICQ   Вверх
pseud
Дата 24.12.2008, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

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



Ripperr, пояняю смех Акеллы:
Код

ADOQuery1.Active:=true;
ADOQuery1.Close;

это тоже самое, что и
Код

ADOQuery1.Active := True;
ADOQuery1.Active := False;

и
Код

ADOQuery1.Open;
ADOQuery1.Close;

т.е. ты, не успев открыть выборку, ее сразу закрываешь.
так что ты хочешь увидеть, если выборка закрыта???


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Ripperr
Дата 24.12.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 1.11.2008

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



В исправленом варианте тоже пустота... Неощибки не результата просто пустая таблица.......


Код

Для "SELECT * FROM Statist WHERE  CallDate <= :firstDate AND CallDate =>  :secodDate"


Пишет Ощибка синтаксиса пропущен оператор в выражении запроса...

где

Код

form1.ADOQuery1.SQL.Clear;
form1.ADOQuery1.SQL.Add(query1);
form1.ADOQuery1.Parameters.ParamByName('firstDate').Value:='01/01/2008';
form1.ADOQuery1.Parameters.ParamByName('secodDate').Value:='12/31/2008';
form1.ADOQuery1.Active:=true;


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

Запрещено:

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

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


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

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

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


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

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


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

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


 




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


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

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