|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.06.2008, 19:20 | #31 |
Квадрокоптерист
Участник клуба Подтвердите свой е-майл
Регистрация: 29.09.2007
Сообщений: 1,824
|
Буду ждать а то вся дальнейшие эксперементы остановились...
Я часть той силы, что вечно хочет зла, но вечно совершает благо..
|
26.06.2009, 13:29 | #32 |
Новичок
Джуниор
Регистрация: 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; |
26.06.2009, 21:58 | #33 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
ну, не знаю, в этом ли дело, но запросы немного отличаются!
вот, навскидку (без детального анализа): 1) в одном случае b.DateReception between, в другом - b.DateReception >= ... 2) в первом случае у Вас дата со временем, в Дельфи - без времени 3) Цитата:
или Active := True; что означает - "но не работает в Delphi?"?? возращает пустой набор? или возникает ошибка при выполении запроса? попробуйте перед Active := true; вывести текст запроса Код:
|
|
26.06.2009, 22:02 | #34 | |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
Цитата:
Ну раз уж юзаете SQL Server, то запустите SQL Profiler (очень полезная утилита такая, поставляется вместе с SQL Server). Тогда сможете увидеть текст запроса, который передается на сервер из вашего приложения. Если проблема с запросом, то тогда быстро найдете ошибку в вашем коде. |
|
26.06.2009, 22:09 | #35 |
Форумчанин
Регистрация: 15.06.2008
Сообщений: 271
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |