Witajcie, mam gotowe zapytanie SQL, które działa poprawnie, ale potrzebuje je "wstawić" jako makro w excelu (nie pytajcie dlaczego po prostu muszę). Niestety wyskakuje mi błąd w liniach, gdzie są parametry z datą i nie mogę sobie z tym poradzić.
Oryginalne zapytanie:
SELECT LEFT(RIGHT('00000000' || XO.MAJDAT, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || XO.MAJDAT, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || XO.MAJDAT, 8), 2) AS DATA1
,LEFT(RIGHT('000000' || XO.MAJHMS, 6), 2) || ':' || SUBSTRING(RIGHT('000000' || XO.MAJHMS, 6), 3, 2) || ':' || RIGHT(RIGHT('000000' || XO.MAJHMS, 6), 2) AS GODZINA
,CHR(39) || XO.CODOBS AS SS
,CHR(39) || XO.CODOBL AS CC
,XO.AVIREF AS NR
,XO.MAJUTI AS LOGIN
,XE.AVIETA AS STATUS
,LEFT(RIGHT('00000000' || XE.DATLIV, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || XE.DATLIV, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || XE.DATLIV, 8), 2) AS DATA2
FROM <BIBLIOTEKA>.GEAVEXO XO
JOIN <BIBLIOTEKA>.GEAVEXE XE
ON XE.AVIREF = XO.AVIREF
WHERE XO.CODOBS <> ''
AND XO.MAJDAT BETWEEN ? AND ?
Zapytanie jako makro w excelu, które też działa, ale tylko wtedy, gdy wstawię konkretne daty jako ciąg znaków w dwóch ostatnich linijkach kodu
GetZapytanie = GetZapytanie & " SELECT LEFT(RIGHT('00000000' || XO.MAJDAT, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || XO.MAJDAT, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || XO.MAJDAT, 8), 2) AS DATA1" & Znak
GetZapytanie = GetZapytanie & " LEFT(RIGHT('000000' || XO.MAJHMS, 6), 2) || ':' || SUBSTRING(RIGHT('000000' || XO.MAJHMS, 6), 3, 2) || ':' || RIGHT(RIGHT('000000' || XO.MAJHMS, 6), 2) AS GODZINA" & Znak
GetZapytanie = GetZapytanie & " CHR(39) || XO.CODOBS AS SS," & Znak
GetZapytanie = GetZapytanie & " CHR(39) || XO.CODOBL AS CC," & Znak
GetZapytanie = GetZapytanie & " XO.AVIREF AS NR," & Znak
GetZapytanie = GetZapytanie & " XO.MAJUTI AS LOGIN," & Znak
GetZapytanie = GetZapytanie & " XE.AVIETA AS STATUS," & Znak
GetZapytanie = GetZapytanie & " LEFT(RIGHT('00000000' || XE.DATLIV, 8), 4) || '-' || SUBSTRING(RIGHT('00000000' || XE.DATLIV, 8), 5, 2) || '-' || RIGHT(RIGHT('00000000' || XE.DATLIV, 8), 2) AS DATA2" & Znak
GetZapytanie = GetZapytanie & " FROM <BIBLIOTEKA>.GEAVEXO AS XO" & Znak
GetZapytanie = GetZapytanie & " JOIN <BIBLIOTEKA>.GEAVEXE AS XE" & Znak
GetZapytanie = GetZapytanie & " ON XE.AVIREF = XO.AVIREF " & Znak
GetZapytanie = GetZapytanie & " WHERE XO.CODOBS <> ''" & Znak
GetZapytanie = GetZapytanie & " AND XO.MAJDAT >= '20240219'" & Znak
GetZapytanie = GetZapytanie & " AND XO.MAJDAT <= '20240220'" & Znak
Problem dotyczy dwóch ostatnich linijek kodu, które powinny teoretycznie wyglądać jak poniżej, a parametry (data) pobierana jest z formularza vba
GetZapytanie = GetZapytanie & " AND XO.MAJDAT >= <PARAMETR1>" & Znak
GetZapytanie = GetZapytanie & " AND XO.MAJDAT <= <PARAMETR2>" & Znak
Jednak wtedy wyskakuje mi poniższy błąd:
W załączniku jest wzór pobranych danych z kwerendy dla problematycznych linijek kodu (pierwsza dotyczy daty, a druga godziny).
Poniżej zamieszczam podobne linijki kodu z innych zapytań dotyczące daty i godziny, w których dodane są różne funkcje (CAST, BIGINT), gdzie nie rozumiem za bardzo co zmieniają, że w tamtych przypadkach makro/zapytanie działa.
GetZapytanie = GetZapytanie & " WHERE CAST (RECE.DTMREC || RIGHT('0000' || RECE.HERREC, 4) AS BIGINT) >= CAST (<PARAM_001> || '0600' AS BIGINT)" & Znak
GetZapytanie = GetZapytanie & " AND CAST (RECE.DTMREC || RIGHT('0000' || RECE.HERREC, 4) AS BIGINT) <= CAST (<PARAM_002> || '0559' AS BIGINT)"
GetZapytanie = GetZapytanie & " WHERE CAST(SUPD.DATPRB2 || RIGHT('0000' || SUPD.HEUPRB2, 6) AS BIGINT) >= CAST(<PARAM_001> || '00' AS BIGINT)" & Znak
GetZapytanie = GetZapytanie & " AND CAST(SUPD.DATPRB2 || RIGHT('0000' || SUPD.HEUPRB2, 6) AS BIGINT) <= CAST(<PARAM_002> || '00' AS BIGINT)" & Znak
Z góry dzięki za pomoc