Zapytanie SQL - problem z przerobieniem na makro w excelu

0

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:
20240220_131907.jpg

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

WZOR.xlsm

Z góry dzięki za pomoc

1

Dane wynikowe nic nie dają, więc ten załącznik to trochę bezsensowny.
O ile średnio rozumiem język francuski, to mogę wywnioskować z komunikatu, że wywala się na "<" - nie rozumie tego. Skoro inne zapytania też to mają, a działają, to pewnie pomiędzy stworzeniem GetZapytanie a jego wykonaniem coś się dzieje. I tam szukaj rozwiązania,

EDIT: Spróbuj zamienić <PARAMETR1> na <PARAM_001> tak, jak masz w działającym przykładzie.

0

Spróbuj tak podać parametr:

GetZapytanie = GetZapytanie & "     AND XO.MAJDAT >= '" & PARAMETR1 & "'" & Znak
GetZapytanie = GetZapytanie & "     AND XO.MAJDAT <= '" & PARAMETR2 & "'" & Znak

1 użytkowników online, w tym zalogowanych: 0, gości: 1