Nepieciešamas izmaiņas- viena no programmām, kas lasīja datus no šiem skatiem ir jāmaina tā, lai tiktu ielasīti pilnīgi visi dati. Tajā pašā laikā saglabājot to, ka pārējās programmās tiek ielasīti dati tieši tāpat, kā to darīja iepriekš.
Ko darīt?
Izveidojam funkciju, kas atgriež vērtību 1, ja jārāda visi dati, 0, ja jārāda tikai pēdējā gada dati- atkarībā no programmas, ar ko lietotājs strādā. Šo funkciju izmantot skatos. Tādā veidā panākot minimālu izmaiņu nepieciešamību programmā.
Funkcija izskatītos apmēram šādi:
Create FUNCTION [dbo].[fn_JaunaProgramma] ()„Nosaukums” ir programmas nosaukums, ar kuru lietotājam jāslēdzās klāt lai atgrieztu vērtību ‘1’. (Kā uzstādīt programmas nosaukumu)
RETURNS [bit]
AS BEGIN
IF EXISTS (SELECT program_name FROM master.dbo.sysprocesses
WHERE spid = @@spid AND program_name = 'Nosaukums')
RETURN 1;
RETURN 0;
END
Savukārt pats vaicājums skatā varētu izskatīties šādi (zvaigznīte konkrētu kolonnu uzskaitījuma vietā netiek rekomendēta):
Select *BET! Kods ir ļoti grūti testējams (kāds saka, ka neatlasa datus, bet programmētājs pieslēdzas ar Management Studio un viss tiek rādīts, jo ir cits programmas nosaukums)! Var rasties daudz mulsinošu problēmu, par kurām neviens nekad neiedomāsies. Šis bija veiksmīgs pagaidu risinājums (daļa programmu strādāja vienā veidā, otra daļa- pavisam citā) pārejas periodam. Pēc tam funkcija vienkārši atgrieza vienu vērtību- „1”. Kā galīgo risinājumu šādu nerekomnedētu.
From dbo.Tabula
Where dbo.fn_JaunaProgramma() = 1 OR gads > 2008
Nav komentāru:
Ierakstīt komentāru