Použití SQL View v zobrazení
V zobrazení lze použít i tzv. SQL_VIEW variantu, která využívá pohledů uložených na SQL serveru. Platí pravidlo, že pohledy, které se připojují jako tabulky, musí mít prefix udv_ (user defined view) nebo sufix _no_lock. To znamená, že v tabulce Zobrazeni_tabulky musí být v poli Tabulka uveden název s výše uvedeným prefixem nebo sufixem. Toto pravidlo je nutné kvůli určení, zda se má tabulka připojit. Pokud je aktuální firma nad MDB databází, nebudou takovéto tabulky připojeny (zároveň nebude a ani nemůže být použita SQL_VIEW varianta). Platí, že je-li definována SQL_VIEW varianta a zároveň PASSTHROUGH varianta, bude přednostně použita SQL_VIEW varianta.
SQL_VIEW varianta je označena v poli [SQL] tabulky Zobrazeni stejným způsobem jako PASSTHROUGH varianta, její parametry pak podobným způsobem jako parametry standardního dotazu s tím, že je vynecháno slovo PARAMETERS, tj.:
;SQL_VIEW_PARAMETERS=Nejaky_parametr1 typ_parametru, Nejaky_parametr2 typ_parametru;SQL_VIEW=SELECT * FROM Neco WHERE Nejaka_podminka;
Příklad 1: Mějme zobrazení Nadřízené kontakty, pro které chceme definovat SQL_VIEW variantu.
SQL zobrazení bude vypadat takto:
SELECT Firmy.*, Firmy.Nadrizena_firma AS Firma_NK
FROM Firmy
WHERE (((Firmy.Nadrizena_firma) Is Null) AND ((Firmy.Kniha)=AktualniKniha("Adresář")) AND ((Firmy.Typ_zaznamu)="OS")) OR (((Firmy.Kniha)=AktualniKniha("Adresář")) AND ((Firmy.Typ_zaznamu) In ("OP","OR","OZ")))
ORDER BY Firmy.Firma;
SQL_VIEW=SELECT Firmy.*, Firmy.Nadrizena_firma AS Firma_NK
FROM Firmy_no_lock AS Firmy
WHERE (((Firmy.Nadrizena_firma) Is Null) AND ((Firmy.Kniha)=AktualniKniha("Adresář")) AND ((Firmy.Typ_zaznamu)="OS")) OR (((Firmy.Kniha)=AktualniKniha("Adresář")) AND ((Firmy.Typ_zaznamu) In ("OP","OR","OZ")))
ORDER BY Firmy.Firma;
Do tabulky Zobrazeni_tabulky potom musíme přidat následující záznam (nezapoměňme, že díky názvu pohledu již máme ošetřeno nepřipojení tabulky nad fileserverovými daty):
Tabulka | Databáze | Původní název |
---|---|---|
Firmy_no_lock | Data#### | Firmy_no_lock |
Příklad 2: Mějme zobrazení Největší dodavatelé od/do, pro které chceme definovat SQL_VIEW variantu.
SQL zobrazení bude vypadat takto:
PARAMETERS [Zadejte datum od] Date, [Zadejte datum do] Date;SELECT TOP 10 Nz([Doklady].[Firma],"Bez firmy") AS Firma, Sum(-[Doklady].[Celkem]*[PV]) AS Celkem
FROM Firmy INNER JOIN Doklady ON [Firmy].[Firma]=[Doklady].[Firma]
WHERE ((([Doklady].[Typ_dokladu]) In('FP','DP')) AND (IIF([Doklady].[Datum_zdanitelneho_plneni] Is Null, [Doklady].[Datum], [Doklady].[Datum_zdanitelneho_plneni]) Between [Zadejte datum od] And [Zadejte datum do]) AND (Firmy.Kniha)=AktualniKniha("Adresář"))
GROUP BY [Doklady].[Firma]
ORDER BY Sum(-[Doklady].[Celkem]*[PV]) DESC;
SQL_VIEW_PARAMETERS=[Zadejte datum od] Date, [Zadejte datum do] Date;
SQL_VIEW=SELECT TOP 10 Nz([Doklady].[Firma],"Bez firmy") AS Firma, Sum(-[Doklady].[Celkem]*[PV]) AS Celkem
FROM Firmy_no_lock as Firmy INNER JOIN Doklady_no_lock as Doklady ON [Firmy].[Firma]=[Doklady].[Firma]
WHERE ((([Doklady].[Typ_dokladu]) In('FP','DP')) AND (IIF([Doklady].[Datum_zdanitelneho_plneni] Is Null, [Doklady].[Datum], [Doklady].[Datum_zdanitelneho_plneni]) Between [Zadejte datum od] And [Zadejte datum do]) AND (Firmy.Kniha)=AktualniKniha("Adresář"))
GROUP BY [Doklady].[Firma]
ORDER BY Sum(-[Doklady].[Celkem]*[PV]) DESC
Do tabulky Zobrazeni_tabulky potom musíme přidat následující záznamy:
Tabulka | Databáze | Původní název |
---|---|---|
Doklady_no_lock | Data#### | Doklady_no_lock |
Firmy_no_lock | Data#### | Firmy_no_lock |
Související dokument