Sorgu Formları
Veriler, yapısı önceden tasarlanmış tablolarda tutulur. Bu tablolara kaydedilen her bir kayıt, tabloda bir satırda saklanır. Tablo dizayn edilirken, amaca uygun sütunlar tasarlanır ve bu sütunların özellikleri kullanım amacına göre belirlenir. Örneğin sayısal veriler saklanacak bir sütun sayısal olarak tanımlanırken, tarih bilgisi saklanacak alan tipleri tarih olarak belirlenir. Bir (ya da birden fazla bağlantılı) tablo kayıtlarına erişmek için birden fazla sorgulama biçimi vardır. Bir kayda doğrudan, o kaydı belirleyen anahtar alan (KEY = biricik sayısal değer) üzerinden erişilebileceği gibi, tabloda yer alan sütunlar üzerinde de sorgulama yapılarak aranan kayıt ya da kayıtlara erişilebilir. Özellikle tekil sıra (PRIMARY KEY) oluşturulan indekslerde erişim çok hızlı olmasına karşın, normal indeksler de (ad veya tarih alanı için konan indeksler) tablodaki kayıtlara erişmek için gerekli hızı sağlar. Diğer alanlar üzerindeki sorgu bu anlamda daha yavaş olacaktır. Önceden yapılmış kayıtlara erişim hızlı ve değişik parametrelere ihtiyaç duyması açısından, oldukça gelişmiş bir sorgu formu dizayn edilmiştir. Ekran temel olarak üç bölüme ayrılmıştır. Sorgu Kriterleri Ekranın sol üst köşesinde, her bir tablo/kart için farklı filtre parametreleri içeren sorgu kriterleri yer almaktadır. Kullanıcı, önceden tasarlanmış bu filtre alanları kullanarak, kayıtlara erişebilir. Bu bölümün başlık kısmında yer alan, İşlem Gören Kayıtlar seçeneği, kullanıcıların yaptıkları değişiklikler ve silme işlemlerinin filtre edilerek listelenmesini sağlamaya yöneliktir (Eğer kullanıcı sistem yetkili değil ise ve kullanıcı tanımlarında Değişiklik ve İptalleri Görsün seçeneği işaretsiz ise, bu seçenek görüntülenmez). İlgili sorgu ekranının ilk açılışında bu seçenek işaretsizdir. Ancak kullanıcı dilerse, bu seçeneği işaretleyerek Audit (Dinleyici) tablolardaki kayıtları görüntüleyebilir. (Konu ile ilgili detaylı bilgi İşlem Gören Kayıtlar başlığında anlatılmıştır.) Sorgu kriterlerinin yer aldığı bölümde, her kriter için bir açıklama metni yer alır. Bu metnin altı çizilerek işaretlenmiş harfi, fareye ihtiyaç duyulmaksızın doğrudan açıklama yapılan sorgu alanına erişmek için kullanılır. Yandaki örnekte Kod alanında K harfinin altı çizilidir. İmleç başka bir bölümde ya da sorgu alanında iken, Alt ve K tuş çiftine birlikte basmak, imlecin Kod ile belirlenen filtre alanında konumlanmasını sağlayacaktır. Çözüm Otomasyon modülleri aynı işleve sahip anca farklı filtre yöntemleri kullanılan 7 ayrı sorgu alan tipine sahiptir. 1. Veri giriş kutuları (EDIT) 2. Evet / Hayır Seçimli alanlar (CHECK BOX) 3. Çoklu seçenekten birinin seçildiği alanla (RADIO GROUP)
5.Listeden seçilebilen sorgu alanları(COMBO BOX) 6.Listeden birden fazla seçenek seçilebilir alanlar (GROUP COMBO BOX) 7.Sayısal olarak Alt ve üst sınırları belirtilmiş listeden seçilebilen alanlar (SPIN EDIT) Veri giriş kutuları
Yukarıdaki Eczane Çıkış fişi sorgu ekran örneğinde Birim kodu kullanılmıştır. Kullanıcı bu alana doğrudan SARF yazabileceği gibi, CTRL ve Enter tuş çifti ile Birim listesini Kart arama formu üzerinde ekrana getirerek, ilgili ad veya kod bulunarak seçilir. Bu tip sorgu kullanım şekillerinde, sorguya esas kod kullanılır. Listede kod ve ad arama yapmak amacıyla görüntülenir. Seçilen koda ait ad seçim kutusunun yanında bilgi amaçlı görüntülenir. Sorgu işlemi, hız açısından doğrudan bağlantıyı sağlayan KEY (anahtar alan) üzerinden yapılır. 2. Aralıklı Sorgu : Sorgu işlemi karşılıklı belirtilen filtreler üzerinden yapılır. Bu sorgu biçiminde, başlangıç ve bitiş değerlerini sınırlamak üzere çift filtre alanı görüntülenir. Filtre sol taraftaki filtre >= (bu değerden büyük veya bu değere eşit olanlar), '+'sağ taraftaki ise <= (bu değerden küçük veya bu değere eşit olanlar) koşullarını SQL ifadenin koşul kısmına yerleştirir. Eğer her iki alanda da aynı değer yer alıyorsa, ilgili alan ile ilgili sorgu tek bir ifadeye çevrilir ve eşittir olarak aranır. Eğer, ilgili veri giriş kutularında filtre zorunluluk olarak kullanılmamış ise, baştaki ya da sondaki (ya da her ikisi de) filtreler boşaltılabilir. Eğer baş koşul boş bırakılmış, son koşul dolu ise, yalnızca küçük veya eşit olanları, son koşul dolu ise bu kez sorgu büyük ve eşit olanları içerir. Örneğin muhasebe fiş tarihi (TARIH) üzerinde sorgu yapılacak ise başlangıç ve bitiş tarihine 01.05.2003 tarihlerini yazmak, yalnızca 01.05.2003 tarihli fişlerin listelenmesini sağlar.
Evet Hayır Seçimli Alanlar
Çok Seçenekten Birinin Seçildiği Alanlar
Yandaki örnek, Eski personel kartı arama kriter ekranından alınmıştır. Liste sonuçları, yapılan seçime göre değişiklik gösterir. Eğer Tümü seçeneği işaretli ise, personel tablosunda kayıtlı tüm kayıtlar (memur, işçi, sözleşmeli ve öğrenci), aksi durumda yalnızca seçilen türdeki personeller arama sonucunda yer alırlar.
Çok Seçenekli Alanlar
Yandaki örnekte tabela sorgu ekranında hastaların durumuna yönelik sorgu yer almaktadır. Eğer tüm seçenekler işaretli ya da tüm seçenekler işaretsiz ise, o alan üzerinde her hangi bir sorgulama yapılmaz. Eğer seçeneklerden biri işaretli ise = koşulu ile birden fazlası işaretli ise IN (içinde) koşulu ile aranır. Eğer Yalnızca Sevk seçeneği işaretli ise, sorgu A.SONUC = 'V' şeklinde olacaktır. Örnekte olduğu gibi hem sevk hem de yatan işaretli ise A.SONUC IN ('V', 'Y') şeklindeki bir sorgu ifadesi ile arama yapılacaktır.
Listeden Seçilebilen Alanlar
Diğer tümleşik tablolarda olduğu gibi, sorgulama anahtar alanlar üzerinden olduğu için, sorgu ifadesinde seçilen kod (ya da ada) ait anahtar numara (KEY) sorgu ifadesine eklenir.
Birden Fazla Seçimli Sorgu Alanları
Çalışması bir önceki başlıkta anlatılan sorgu alanı gibidir. Farklı olarak sorgulama işlemi ilgili alanda birden fazla kodun (ya da adın) aranmasını sağlar.
Sınırlı Sayısal Sorgu Alanları
Genellikle, bu tip alanlar ikili filtre olarak kullanılır. Ancak tek bir alan olarak da kullanılabilir. Özellikle tek bir yıla yönelik sorgularda tek bir filtre alanı kullanılır. Yukarıda, personel programının memur kartlarına ait sorgu ekranında yer alan derece düzeylerinin sorgulanmasına yönelik filtre başlangıç ve bitiş sorgu alanları görüntülenmiştir. Memurların alabileceği dereceler 1 ile 15 arasında sınırlı olması nedeniyle, her bir filtre alanının en alt değeri 1, en üst değeri ise 15 olarak sınırlandırılmıştır. Kullanıcı, fareyi kullanarak yukarı ok tuşu ile değerleri artırabilir, aşağı ok tuş ile azaltabilir. İmleç, ilgili alan üzerinde iken, klavye üzerindeki yukarı ve aşağı yön tuşlarını da kullanarak filtreleri değiştirebilir. Filtre işlemi küçük değer ile büyük değer arasındaki tüm değerleri içerir. Sol taraf küçük değeri, sağ taraftaki ise büyük değeri gösterir. Eğer her iki alanda da aynı değer var ise sorgulama tek bir ifade olarak eşitlik parametresi ile sorgulanır (örneğin başlangıç ve bitiş alanında 3 değeri var ise, M.DERECE = 3 sorgu koşulu eklenir). Farklı olduğu durumlarda (örneğin başlangıç 5, bitiş değeri 7 ise) M.DERECE >= 5 AND M.DERECE <= 7 olarak sorgulanır. Bitiş filtresinin başlangıç filtresine göre ya eşit ya da büyük olması gerekir. Eğer bu değer, başlangıç değerinden küçük ise, bitiş değeri göz ardı edilerek, eşitlik parametresi ile başlangıç alanı doğrudan sorgulanır (başlangıç alanı 2 ve bitiş alanı 1 ise, sorgu M.DERECE = 2 olarak yapılır).
SQL Sorgu Metni
Tablo (tümleşik ya da tablolar) üzerinde yapılacak sorgunun SQL metin olarak görüntülendiği bölümdür. Burada yer alan ifadelerin tümü seçilip belleğe alınarak, F9 sorgu işlemlerine yapıştırılıp çalıştırılabilir. SQL metin iki parçadan oluşur. Programın öngördüğü SQL ifade ile, kullanıcının sorgu bölümünde belirlediği filtrelerin eklendiği sorgu bölümü. SQL ifadenin tümünde SELECT ve FROM cümle grubunun dışında, WHERE, GROUP BY ve ORDER BY cümleleri de yer alabilir.
Sorgu formu açıldığında (var ise) WHERE ifadesi ile yalnızca bağlantıları sağlayan koşullar yer alır. Kullanıcının kendi belirlediği koşullar WHERE ifadesi ile SQL ifadeye eklenir (önceden bağlantılar var ise, kullanıcı koşulları, mevcut sorgu ifadelerine AND ifadesi ile eklenir). Yukarıdaki örnek, Eczane ilaç kartları sorgu ekranından alınmıştır. SELECT I.IL_KEY, I.IL_KOD, I.IL_AD, DECODE(I.ITHAL, 'E', 'İTHAL', 'YERLİ') AS ITHAL, I.BIRIM, I.ALISFIAT, I.SATISFIAT, I.KTADET, I.KLADET, I.OZKOD1, I.OZKOD2, I.OZKOD3, DECODE(I.TIPI, '0', 'İLAÇ', '2', 'İLAÇ', 'S.MALZ.') AS TIPI, I.ACIKLAMA, C.CR_AD, M.MU_AD, E.ET_AD, N.EN_AD ifadesi Sorgunun SELECT (Seçilen alanlar) bölümünü oluşturmaktadır. FROM EILAC I, ACARI C, EMUAD M, EETKEN E, EENDK N ifadesi ise, FROM (Seçilen tablolar) bölümünü oluşturmaktadır. SQL İfadenin daha rahat anlaşılması açısından FROM bloğunu açıklayarak başlamak daha doğru olacaktır. EILAC (İlaç bilgileri), ACARI (Üretici Firma), EMUAD (Muadil Tanımları), EETKEN (Etken Madde Tanımları), EENDK (Endikasyon alan tanımları) tabloları, ana tablo EILAC olmak üzere birbiriyle bağlantılı çalışan tablolardır. Her tablonun sorguda kullanılan alanları doğrudan tablo ile bağlaması için Kısa ad da denebilecek ve bu örnekte tek harf ile gösterilen tablo belirteçleri vardır. SELECT bölümünde ilaç tablosundan sırayla KEY (tabloya bağlanan diğer tabloların kullandıkları ve her tabloda biricik tekrar etmeyen sayısal numara), ilacın kodu ve adı, ithal olup olmadığı, birim türü (Tablet, draje vb), ilacın alış ve satış fiyatı, kutu ve kolu içindeki adeti, Özel kodları ve açıklama alanları seçilmiş ayrıca, satıcı tablosundan satıcı adı, muadil tablosundan muadil grup adı, etken madde tablosundan etken adı ve endikasyon alanı tanım tablosundan endikasyon alanı seçilmiştir. WHERE bölümünde yer alan koşulların ilk grubu, kullanıcının müdahalesine kapalı tablo bağlantılarını sağlayan koşullardır. İlk koşul olarak NVL(I.IL_KEY,0) > 0 sorgu ifadesi kullanılmıştır. Bu, ilaç tablosundaki anahtar alanı sıfır ve sıfırdan küçük olanları liste dışı bırakır. Aşağıda yer alan dört ayrı koşul ifadesi, tablo arasındaki bağlantıları sağladığı için, program tarafından önceden öngörülmüş ve kullanıcının müdahalesine izin verilmemiş bir sorgu ifadesidir. I.FR_KEY = C.CR_KEY (+) ifadesi, ilaç tablosunu, satıcı firma kayıtlarının tutulduğu tablo ile bağlantısını sağlar. İlaç tablosundaki FR_KEY alanı, ilacın hangi firmanın ilacı olduğu bilgisini saklar. Bu değer, cari tablosundaki CR_KEY alanı ile eşleşerek ilacın hangi firma ilacı olduğunu SELECT ifadesinde yer alan C.CR_AD alanında gösterir. Koşulun sonunda yer alan (+), cari tablosunda firma karşılığını bulamaz ise, karşılık olarak CR_AD için boş bilgi getirmesini sağlar. (+) işareti olmasa idi, satıcısı tanımlı olmayan kartlar sorgu sonuçlarında gösterilmeyecekti. I.MU_KEY = M.MU_KEY (+) ifadesi, ilaç tablosunu, muadil tanım kayıtlarının tutulduğu tablo ile bağlantısını sağlar. İlaç tablosundaki MU_KEY alanı, ilacın hangi muadil gruba ait olduğu bilgisini saklar. Bu değer, muadil tablosundaki MU_KEY alanı ile eşleşerek ilacın hangi muadil grup ilacı olduğunu SELECT ifadesinde yer alan M.MU_AD alanında gösterir. I.ET_KEY = E.ET_KEY (+) ifadesi, ilaç tablosunu, etken tanımlarının tutulduğu tablo ile bağlantısını sağlar. İlaç tablosundaki ET_KEY alanı, ilacın hangi etken gruba ait olduğu bilgisini saklar. Bu değer, etken tablosundaki ET_KEY alanı ile eşleşerek ilacın hangi etken grup ilacı olduğunu SELECT ifadesinde yer alan E.ET_AD alanında gösterir. etken tablosundaki EN_KEY alanı ile eşleşerek ilacın hangi endikasyon grup ilacı olduğunu SELECT ifadesinde yer alan E.EN_AD alanında gösterir. Aşağıda yer alan dört ayrı koşul ifadesi, kullanıcının sorgu kısmında belirlediği sorgu ifadelerini içerir. I.BIRIM LIKE 'Tab%' ifadesi, İlaç tablosundaki birim açıklaması Tab ile başlayan ilaçları arar. Örneğin birimi Tablet olan ilaçlar bu sorgu sonucu listede yer alırlar. I.ET_KEY = 543 ifadesi, etken madde kodu 820 (% 10 DEXTROZ) olan ilaçları sorgular. Sorgu daha hızlı olması açısından, anahtar alanı olan 543 değeri kullanılır. I.ITHAL = 'H' ifadesi yalnızca yerli ilaçların listelenmesini, I.TIPI = '0' ifadesi ise, yalnızca ilaçların (sıhhi malzemelerin bu liste dışında tutulmasını) listelenmesini sağlar. Ayrıca, sistem yetkilisi, SQL sorgu metin alanına müdahale edebilir. Burada yer alan sorguyu değiştirerek, değiştirilmiş yapıya göre sorgulanmasını sağlayabilir. SQL sorgu metin bölümü yalnızca okunabilir metinleri içerir (kullanıcı burada yer alan metne müdahale edemez). Sistem yetkilisi olarak programı kullanan kullanıcı, SQL sorgu metin bölümünde iken CTRL ve E tuş kombinasyonu ile, bu alana müdahale edebilir. Aynı tuş kombinasyonunu kullanmak, ilgili yazıları yeniden yalnızca okunabilir hale getirir.
Sorgu Sonuçları
Sorgu kriterlerinde kullanıcının belirlediği şartlara uygun yapılan sorgulama sonuçlarının liste olarak görüntülendiği bölümdür. Kullanıcı, kriterleri belirledikten sonra, F2 tuşuna ya da ekranın sol alt köşesindeki tuş takımından Sorgula düğmesine basar ise, sorgulama yapılır. Sorgu sonucu tek bir satır dönerse (belirtilen şartlara uygun tek bir satır bulunur ise), sorguya uyan kayıt kartı açılır (Örneğin ilaç kart sorgu ekranında iken, aranan şartlara uyan tek bir ilaç kartı var ise, o ilaç kartı görüntülenmek ya da güncellenmek üzere ekrana çağırılır). Sorgunun birden fazla satırı içermesi durumunda, kullanıcı liste üzerinde istediği kayıt üzerine gelerek farenin sol düğmesini çift tıklaması ya da ilgili kayıt üzerinde enter tuşuna basması o kaydın görüntülenmek / güncellenmek üzere ekrana getirilmesini sağlar. Genellikle sorgu sonuçları tek bir liste şeklinde görüntülenir (örneğin personel veya ilaç listesi). Eğer, ilişkili kullanılan tablolar ise (Örneğin Fatura satırları, Fiş satırları vb), liste beraberinde bu liste ile bağlantılı çalışan bir detay listeye sahip olur (Üst listede Faturalar, aşağıdakinde ise, bu faturalara ait satırlar). İlişki düzeyi üçüncü bir katmanı içeriyor ise (Hasta İşlemleri - Tabela satırları vb), ekranda üç ayrı liste görüntülenir (En yukarıda yer alan listede hastalara ait işlemler. Ortada, ilgili hastanın ilgili işlemine ait tabelalar ve en altta ise, aktif tabelaya ait ilaçlar). Sorgu Sonuçları, SQL Sorgu metin alanında SELECT ifadesi ile seçilmiş alanları içerir. Ancak, seçilen alanların tümü liste üzerinde gözükmeyebilir (Program default olarak seçilen tüm alanları değil, kimi alanları gösterecek biçimde dizayn edilmiş olabilir. Kullanıcı liste üzerinde seçili alan listesinde olmak kaydı ile alan ekleyebilir. Listede yer alan alanların yerlerini değiştirebilir ya da büyültüp küçültebilir. Son olarak da, listede görünen alanları listeden çıkarabilir. Alan ekleme, çıkarma ve sıralama değiştirme işlemleri için fareyi listenin başlığına getirerek farenin sol düğmesine basılmalıdır. Liste programca öngörülmüş ya da kullanıcı tarafından düzenlenmiş bir sıralamaya sahip ise ve bu sıralama kaldırılmak isteniyor ise, Sağ düğme ile çıkan menüden Mönü’den Sıralamayı Kaldır seçeneğine tıklayarak sıralama kaldırılır. Yeni bir sıralama oluşturmak için, sıralama yapılacak sütunun başlığına tıklanarak, bulunulan alana göre sıralama seçilebilir. Sıralama işlemi normal olarak tercih edilmiş ise, küçükten büyüğe (sayılarda en küçük sayıdan, tarihlerde küçük tarihten, metin alanlarında ise, alfabe dizilimine göre ilk harften başlayarak büyüğe doğru), tersten sırala da ise tam tersi olur. Sıralama büyükten küçüğe doğru yapılır. Listede gözükmesi istenmeyen bir alanın listeden çıkarılması için, ilgili alan üzerinde iken mönü aktifleştirilir, gelen listeden ilgili alan adı ile yazılan Çıkar seçeneği tıklanır. Yeni bir alan eklemek için, alan eklenin üzerine gelindiğine açılan alan ekleme menüsü kullanılır. Bu mönüden eklenecek alanın üzerinde fare tıklanarak, tıklanan başlığın yanına ilgili alan listelenmek üzere eklenir. Eğer, eklenecek alan kalmamış ise, ilk mönüde yer alan “alan ekle” gözükmez. Alanların genişliklerini ayarlamak, Windows'un standart özelliklerinde olduğu gibidir. Genişliği ayarlanacak alanın başlıktaki sütun sonuna fare ile gelerek, fare imlecinin genişlik ayarlama imleci haline geldiğinde, farenin sol düğmesine basarak, ilgili sütun genişletilip daraltılabilir. Bir alanın yerinin değiştirilmesi de benzer şekildedir. İlgili alan başlığında iken farenin sol düğmesine tıklanarak, taşınması istenen yöne sürüklenmesi yeterlidir. Kart sorgu formları, kartlara doğrudan erişmek yerine, aranan kart ya da kartların sorgulanarak erişilmesi amacıyla kullanılır. Ancak, kullanıcı diler ise, kart sorgu formlarını devre dışı bırakabilir. Bunun için, sorgu form listesinin en sağında yer alan Bu Formu Bir Daha Açma seçeneğini işaretlemesi gerekir (Ancak eczanede tabela sorgu ekranında olduğu, bazı sorgu formlarının ana listende bu seçenek aktif değildir. Tabelaya başka türlü erişmek mümkün olmadığı için bu tip formlarda bu seçenek kullanıcı müdahalesine kapatılmıştır). Ayrıca, detayları olan (birden fazla bağlantılı listeye sahip formlar) listelerde, detaylar görülmek istenmiyor ise, de-tay listenin ilgili seçeneği tıklanarak, detay listenin gözükmesi engellenir. |