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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2008, 19:20   #31
Stanislav
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
 
Регистрация: 29.09.2007
Сообщений: 1,824
По умолчанию

Цитата:
Сообщение от D-mon Посмотреть сообщение
Сори, но у меня на работе 5-я делфа. Немлгу открыть твой проект. Дома вечером посмотрю.
Буду ждать а то вся дальнейшие эксперементы остановились...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
Stanislav вне форума Ответить с цитированием
Старый 26.06.2009, 13:29   #32
gumika
Новичок
Джуниор
 
Регистрация: 23.06.2009
Сообщений: 1
По умолчанию Сложные запросы с использованием 2 баз

у меня есть запрос который работает на SQL Servere, но не работает в Delphi? Подскажите в чем ошибка.
Вот запрос на SQL Server:

SELECT b.ID as Номер_п, b.PatientName as ФИО_пациента, b.Quantity as Количество, b.BirthOfDate as Дата_р, b.Description as ФИО_врача, b.DateReception as Дата_приема, b.Deleted, d.p_usl, d.p_price as Цена, g.DivName as Отделение
from
[ISRDCSYSPPR].[dbo].[Person] as a
inner join
[RDC.MONITORING].[dbo].[FinishedServices]as b
on
b.FinanceName like a.p_idle and b.FinanceType = '1'
inner join
[ISRDCSYSPPR].[dbo].[Price]as d
on
d.p_id like a.p_prid
inner join [RDC.MONITORING].[dbo].Services as e
on e.ID = b.Sevice
inner join
[RDC.MONITORING].[dbo].ServiceRenderedbyDoctor as f
on f.ID_Service=e.ID
inner join [RDC.MONITORING].[dbo].Division as g on g.ID=f.ID_Division
where
(b.DateReception between '06/23/2009 00:00:00' AND '06/23/2009 23:59:59')and (b.deleted='0')
order by g.DivName

Вот запрос на Delphi:
with ADOQuery2 do
begin
Close;
SQL.Clear;
SQL.Add('SELECT b.ID as Номер_п, b.PatientName as ФИО_пациента, b.Quantity as Кол, b.BirthOfDate as Дата_р,');
SQL.Add('b.Description as ФИО_врача, b.DateReception as Дата_приема, b.Deleted, d.p_usl, d.p_price as Цена,');
SQL.Add('g.DivName as Отделение ');
SQL.Add('FROM [ISRDCSYSPPR].[dbo].[Person] as a inner join [RDC.MONITORING].[dbo].[FinishedServices]as b');
SQL.Add('on b.FinanceName like a.p_idle inner join [ISRDCSYSPPR].[dbo].[Price]as d');
SQL.Add('on d.p_id like a.p_prid inner join [RDC.MONITORING].[dbo].[Services] as e');
SQL.Add('on e.ID = b.Sevice inner join [RDC.MONITORING].[dbo].[ServiceRenderedbyDoctor] as f');
SQL.Add('on f.ID_Service=e.ID inner join [RDC.MONITORING].[dbo].[Division] as g on g.ID=f.ID_Division');
SQL.Add(' where (b.DateReception >='''+FormatDateTime('mm/dd/yyyy',DateTimePicker1.Date)+''') and (b.DateReception <='''+FormatDateTime('mm/dd/yyyy',DateTimePicker2.Date)+''')');
SQL.Add('and b.FinanceType = 1');
SQL.Add('order by g.DivName');
Open();
Active:=true;
end;
gumika вне форума Ответить с цитированием
Старый 26.06.2009, 21:58   #33
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну, не знаю, в этом ли дело, но запросы немного отличаются!
вот, навскидку (без детального анализа):
1) в одном случае b.DateReception between, в другом - b.DateReception >= ...
2) в первом случае у Вас дата со временем, в Дельфи - без времени
3)
Цитата:
Open();
Active:=true;
это, кстати, тоже неверно! надо или Open;
или Active := True;
что означает - "но не работает в Delphi?"?? возращает пустой набор? или возникает ошибка при выполении запроса?

попробуйте перед Active := true; вывести текст запроса
Код:
ShowMessage(ADOQuery2.SQL.Text);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.06.2009, 22:02   #34
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Сообщение от gumika Посмотреть сообщение
у меня есть запрос который работает на SQL Servere, но не работает в Delphi?
Вы бы хоть написали - какую ошибку выдает (а то лениво чего-то на ночь разбираться в приведенном коде )

Ну раз уж юзаете SQL Server, то запустите SQL Profiler (очень полезная утилита такая, поставляется вместе с SQL Server). Тогда сможете увидеть текст запроса, который передается на сервер из вашего приложения. Если проблема с запросом, то тогда быстро найдете ошибку в вашем коде.
edgy вне форума Ответить с цитированием
Старый 26.06.2009, 22:09   #35
edgy
Форумчанин
 
Регистрация: 15.06.2008
Сообщений: 271
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вывести текст запроса
Код:
ShowMessage(ADOQuery2.SQL.Text);
Да, можно и так. Как вариант для просмотра текста запроса.
edgy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADOQuery Только_Учусь Помощь студентам 2 16.07.2008 00:31
ADOQuery Roof БД в Delphi 2 12.07.2008 18:08
ADOQuery + поток Гена БД в Delphi 0 27.03.2007 09:55
adoquery Toxa БД в Delphi 10 12.02.2007 20:07
ADOQuery & WIN98 v4.10 NovaC БД в Delphi 2 09.01.2007 13:27