Новичок
Профиль
Группа: Участник
Сообщений: 21
Регистрация: 10.8.2007
Репутация: нет Всего: нет
|
Доброго времени суток! Есть моя программулина, которая выводит инфу с БД в DBGrid. SQL server 2005 express + ADO компоненты + Delphi. Есть запрос: Код | SET DATEFORMAT DMY
DECLARE @StartDate [DATETIME] DECLARE @EndDate [DATETIME] DECLARE @DateTmp [DATETIME] DECLARE @EndTime [NVARCHAR](10)
DECLARE @columns [NVARCHAR](4000) DECLARE @sql_str [NVARCHAR](4000) DECLARE @sql_str2 [VARCHAR](8000)
SET @StartDate = '01/03/2008' -- start period date SET @EndDate = '25/03/2008' -- end period date SET @EndTime = '18:00:00' -- end period time
SET @columns = '' SET @DateTmp = @StartDate
SELECT sq.[Отдел], sq.[ФИО], sq.[Кол-во раб. часов в месяце], sq.[Кол-во рабочих дней в месяце], sq.[Фактич. кол-во дней на работе], sq.[Фактч. кол-во раб. часов], sq.[Из них кол-во часов после 18:00], sq.[Отпуск кол-во дней], sq.[Важные причины кол-во], sq.[Примечание], st.*, tl.* FROM (SELECT u.UID, g.[GroupName] AS 'Отдел', u.[Name] AS 'ФИО', '' AS 'Кол-во раб. часов в месяце', '' AS 'Кол-во рабочих дней в месяце', (SELECT TOP(1) COUNT(CONVERT([NVARCHAR](15),l2.Date,103)) FROM [dbo].[RALog] l2 WHERE l2.Date > @StartDate AND l2.Date < @EndDate AND l2.UID = u.UID GROUP BY CONVERT([NVARCHAR](15),l2.Date,103)) AS 'Фактич. кол-во дней на работе', (SELECT TOP(1) CONVERT([NVARCHAR](5),SUM(DATEPART(hh,CONVERT([DATETIME],sq.[Time],108))) + CONVERT([INT],SUM(DATEPART(mi,CONVERT([DATETIME],sq.[Time],108)))/60)) + ':' + CONVERT([NVARCHAR](5),SUM(DATEPART(mi,CONVERT([DATETIME],sq.[Time],108))) - CONVERT([INT],SUM(DATEPART(mi,CONVERT([DATETIME],sq.[Time],108))) / 60)*60) + ':' + CONVERT([NVARCHAR](5),SUM(DATEPART(ss,CONVERT([DATETIME],sq.[Time],108)))) FROM (SELECT CONVERT([NVARCHAR](15),l3.Date,103) AS 'Date', CONVERT([NVARCHAR](10),(MAX(CONVERT([DATETIME],l3.[Time])) - MIN(CONVERT([DATETIME],l3.[Time]))),108) AS [Time] FROM [dbo].[RALog] l3 WHERE l3.Date > @StartDate AND l3.Date < @EndDate AND l3.UID = u.UID GROUP BY CONVERT([NVARCHAR](15),l3.Date,103)) AS sq) AS 'Фактч. кол-во раб. часов', (SELECT TOP(1) COALESCE(CONVERT([NVARCHAR](5),SUM(DATEPART(hh,CONVERT([DATETIME],sq.[Time],108))) + CONVERT([INT],SUM(DATEPART(mi,CONVERT([DATETIME],sq.[Time],108)))/60)) + ':' + CONVERT([NVARCHAR](5),SUM(DATEPART(mi,CONVERT([DATETIME],sq.[Time],108))) - CONVERT([INT],SUM(DATEPART(mi,CONVERT([DATETIME],sq.[Time],108))) / 60)*60) + ':' + CONVERT([NVARCHAR](5),SUM(DATEPART(ss,CONVERT([DATETIME],sq.[Time],108)))),'0:0:0') FROM (SELECT CONVERT([NVARCHAR](15),l3.Date,103) AS 'Date', CONVERT([NVARCHAR](10),(MAX(CONVERT([DATETIME],l3.[Time])) - CONVERT([DATETIME],@EndTime)),108) AS [Time] FROM [dbo].[RALog] l3 WHERE l3.Date > @StartDate AND l3.Date < @EndDate AND l3.UID = u.UID AND DATEDIFF(mi,CONVERT([DATETIME],l3.[Time]),CONVERT([DATETIME],@EndTime)) < 0 GROUP BY CONVERT([NVARCHAR](15),l3.Date,103), l3.[Time] HAVING l3.[Time] = (SELECT CONVERT([NVARCHAR](10),(MAX(CONVERT([DATETIME],l5.[Time]))),108) FROM [dbo].[RALog] l5 WHERE l5.UID = u.UID AND CONVERT([NVARCHAR](15),l5.Date,103) = CONVERT([NVARCHAR](15),l3.Date,103))) AS sq) AS 'Из них кол-во часов после 18:00', '' AS 'Отпуск кол-во дней', '' AS 'Важные причины кол-во', '' AS 'Примечание' FROM [dbo].[RALog] l INNER JOIN [dbo].[User] u ON (u.UID = l.UID) INNER JOIN [dbo].[Group] g ON (g.GID = u.GID) WHERE l.Date > @StartDate AND l.Date < @EndDate GROUP BY u.[Name], u.UID, g.[GroupName]) AS sq LEFT JOIN [dbo].[tmp_StartTime] st ON (sq.UID = st.UID) LEFT JOIN [dbo].[tmp_TimeLength] tl ON (sq.UID = tl.UID) ORDER BY [Отдел], [ФИО]
|
В SQL server'e запрос ошибок не возвращает, нормально получаю данные, но из Delphi не могу получить данные. Ошибка: Неправильно определен обьект Parameter. Предоставлены несовместимые или неполные сведения.Как получить выборку именно из Delphi??? Оччень нуна... БД прилагается. Это сообщение отредактировал(а) Spirit_FTZI2 - 12.4.2008, 20:46
Присоединённый файл ( Кол-во скачиваний: 5 )
FASSQL2.rar 612,16 Kb
|