Użycie zmiennych w kwerendach SQL
W kwerendach SQL można używać obiektów zmiennych oraz wartości w postaci ciągów. Aby można było użyć zmiennych w kwerendzie SQL, kwerenda musi być zapisana w postaci formuły – rozpoczynać się od znaku równości (=) i zawierać ciągi połączone znakiem handlowego „i” (&).
Można używać zmiennych zamiast nazwy tabeli albo połączyć je za pomocą klauzuli WHERE zamiast wartości filtra.
Używanie zmiennej jako nazwy tabeli
Zamiast wyraźnego określenia nazwy tabeli można utworzyć zmienną przechowującą nazwę tabeli i wywoływać instrukcję wyboru na tej zmiennej:
="SELECT * FROM "&GlobalVariables.TableName.Text
Jest to równoznaczne z:
SELECT * FROM [TableName]
Używanie zmiennej jako wartości filtra
Można utworzyć zmienną do przechowywania nazwy produktu:
="SELECT * FROM Products WHERE ProductName =’"&
GlobalVariables.ProductName.Text&"’"
Będzie to równoznaczne z Wybierz z tabeli Produkty:
SELECT * FROM Products WHERE ProductName= ’Widget’
W przypadkach, gdy zmienna zwraca wartości w postaci ciągu, musi być ujęta w pojedynczy cudzysłów (’). Gdy zmienna zwraca wartość liczbową, nie jest to konieczne. Na przykład:
="SELECT * FROM Products WHERE ProductID="&
GlobalVariables.ProductID.Text
Składnia specyficzna dla bazy danych
Występują różnice w sposobach implementacji SQL przez dostawców baz danych. Listy relacyjne są definiowane przez instrukcje SQL. Dlatego projektanci raportów mogą być zmuszeni do napisania kilku wersji tej samej instrukcji, aby upewnić się, że definicja listy zadziała w przypadku różnych połączeń danych.
W przypadku korzystania ze zmiennych w kwerendach SQL wymagana składnia zależy od typy bazy danych, dla której napisano daną kwerendę. Na przykład oto instrukcja napisana w standardowym języku SQL:
=" SELECT Id, AccCde FROM LdgA where AccCde like '"&GlobalVariables.GV_WhereClause.Text&"' "
W przypadku baz danych Oracle instrukcja ta wyglądałaby następująco:
=" SELECT ""Id"", ""AccCde"" FROM DES.LDGA where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "
W przypadku baz danych DB2 instrukcja wyglądałaby następująco:
=" SELECT ""Id"", ""AccCde"" FROM ADMIN_DEV.""LdgA"" where ""AccCde"" like '"&GlobalVariables.GV_WhereClause.Text&"' "