Access'te sorguları seçin. Microsoft Access'te Sorgu Oluşturma

Ders: Tablolar arası ilişkiler oluşturma. Bir parametre ve son sorguyla bir seçim sorgusu oluşturma.

Önceki laboratuvarda oluşturulan veritabanını açın TF Dekanlığı .

Tablolar arası ilişkiler oluşturma

Veritabanı penceresinde bir nesne seçin Tablolar . "Düğmesine tıklayın" Şema veri " araç çubuğunda veya komutu yürütün " Hizmet »  « Şema veri "Komut menüsünü kullanarak. Ekranda bir pencere görünecektir: Şema veri " ve pencere " Ek tablolar "(Şek. 18).

Pirinç. 18. Veri Şeması İletişim Kutusu ve Tablo Ekle İletişim Kutusu

Pencerede " Ek tablolar "sekmede" Tablolar » tüm veritabanı tablolarını listeler. Tablolar arasında ilişkiler oluşturmak için onları " Ek tablolar "pencereden dışarı" Şema veri " Bir tabloyu aktarmak için fare tıklamasıyla seçin ve “ düğmesine tıklayın. Eklemek " Gerekli tabloları aktardıktan sonra pencereyi kapatın " Ek tablolar ».

Tüm tabloları pencereye taşıyın " Şema veri " Metnin tamamının görülebilmesi için tablo pencerelerini yeniden boyutlandırın (Şek. 19).

Tablolar arasında ilişki oluşturmak için Öğrenciler Ve Derecelendirmeler uyarınca Veri şeması fare imlecini alana taşımanız gerekir Öğrenci kodu masada Öğrenciler ve fare düğmesine basıldığında bu alanı alanın üzerine sürükleyin Öğrenci kodu masada Derecelendirmeler ve ardından fare düğmesini bırakın. Pencere " Değiştirmek bağlantılar "(Şek. 20).

Özelliği kontrol edin " Güvenlik bütünlük veri "üzerine tıklayarak. Özelliklerdeki onay kutularını seçin " Çağlayan güncelleme ilgili alanlar " Ve " Çağlayan silme ilgili alanlar " Bu, yalnızca tablodaki kayıtları düzenlemenize olanak tanır Öğrenciler ve tabloda Derecelendirmeler bağlantılı kayıtlar üzerindeki bu eylemler otomatik olarak gerçekleştirilecektir.

Bağlantı oluşturmak için "düğmesine tıklayın" Yaratmak ».

Pirinç. 19. Veritabanı veri şemasının görünümü " TF Dekanlığı» bağlantı yapmadan önce

Pirinç. 20. Tablo alanları arasındaki bağlantı parametrelerini belirtmek için iletişim kutusu

Aynı şekilde göre Veri şeması kalan tablolar arasında bağlantılar oluşturulur (Şek. 21).

Pirinç. 21. Veritabanı Veri Şeması " TF Dekanlığı»

Veri diyagramı penceresini kapatırken yanıtla Evet düzeni kaydetmeyle ilgili soruya.

Veritabanı tabloları arasında oluşturulan ilişkiler değiştirilebilir.

Bağlantıları değiştirmek için pencereyi aramanız gerekir " Şema veri " Bundan sonra fare imlecini değiştirilmesi gereken bağlantının üzerine getirin ve sağ tıklayın. Bir içerik menüsü görünecektir (Şek. 22):

Pirinç. 22. İletişim içerik menüsü

" komutunu seçerseniz Silmek ", onaylandıktan sonra bağlantı silinecektir. Bağlantıyı değiştirmeniz gerekiyorsa " komutunu seçin Değiştirmek bağlantı " Bundan sonra açılan pencerede “ Değiştirmek bağlantılar " (en üstte) tablolardaki bağlamak istediğiniz alanları seçin ve düğmeye tıklayın " Yaratmak ».

İstekler

Sorgular bir veya daha fazla tablodan veri seçmek veya veri aramak için kullanılır. Birden çok tablodaki verileri görüntülemek, analiz etmek ve değiştirmek için sorguları kullanabilirsiniz. Ayrıca formlar ve raporlar için veri kaynağı olarak da kullanılırlar. Sorgular, toplamları hesaplamanıza ve bunları kompakt bir biçimde görüntülemenize, ayrıca kayıt grupları üzerinde hesaplamalar yapmanıza olanak tanır.

Modda istekleri geliştireceğiz Tasarımcı .

İÇİNDE Erişim Aşağıdaki sorgu türlerini oluşturabilirsiniz:

    Örnek istek . Bu en sık kullanılan istek türüdür. Bu sorgu türü, bir veya daha fazla tablodan veri döndürür ve onu tablo olarak görüntüler. Seçme sorguları aynı zamanda kayıtları gruplamak, toplamları, ortalamaları hesaplamak, kayıtları saymak ve diğer toplam türlerini bulmak için de kullanılabilir. Seçim koşullarını değiştirmek için isteği değiştirmeniz gerekir.

    Parametreli istek . Bu, yürütüldüğünde, bir alana eklemek istediğiniz verileri veya değeri girmenizi isteyen kendi iletişim kutusunu görüntüleyen bir istemdir. Bu veri veya değer her istek yapıldığında değişebilir.

    Çapraz istek . Verilerin hesaplanması ve analizlerini kolaylaştıracak bir yapıda sunulması için kullanılır. Kesit sorgusu, değerlerin toplamını, ortalamasını, sayısını hesaplar veya diğer istatistiksel hesaplamaları gerçekleştirir ve ardından sonuçları, biri sütun başlıklarını, diğeri satır başlıklarını tanımlayan iki veri kümesindeki bir tabloda gruplandırır.

    İsteği değiştir . Bu, tek bir işlemde birden fazla kaydı değiştiren veya taşıyan bir sorgudur. Dört tür değişiklik isteği vardır:

1. Bir girişi silmek için. Bu sorgu bir veya daha fazla tablodaki bir grup kaydı siler.

2. Kaydı güncellemek için. Bir veya daha fazla tablodaki kayıt grubunda genel değişiklikler yapar. Tablolardaki verileri değiştirmenizi sağlar.

3. Kayıt eklemek için. Bir veya daha fazla tablodaki kayıt grubunu bir veya daha fazla tablonun sonuna ekler.

4. Bir tablo oluşturmak için. Bir veya daha fazla tablodaki verilerin tamamından veya bir kısmından yeni bir tablo oluşturur.

    İstekler SQL . Dil talimatları kullanılarak oluşturuldu SQL , kullanılan Veritabanı .

MS Access 2003'te parametreli bir sorgu oluşturup belirli form öğelerinin değerlerini bu sorguya aktarabilmek ve ardından karşılık gelen sonuç kümesini alıp bunlarla bazı temel hesaplamalar yapabilmek istiyorum. Form öğeleriyle doldurulacak sorgu parametrelerinin nasıl alınacağı konusunda size kısaca yol göstereceğim. VBA kullanmam gerekiyorsa sorun değil.

5 cevap

Bir formdaki denetimlere yapılan başvurular doğrudan Access sorgularında kullanılabilir, ancak bunları parametre olarak tanımlamak önemlidir (aksi takdirde sonuçlar en son sürümler Erişim bir zamanlar güvenilirse tahmin edilemez olabilir).

Örneğin, bir sorguyu MyForm'daki LastName denetimine göre filtrelemek istiyorsanız bunu ölçüt olarak kullanırsınız:

Soyadı = Formlar!MyForm!LastName

PARAMETRELER [!MyForm!] Metin (255); tblCustomers'ı SEÇİN.* tblCustomers'TAN NEREDE tblCustomers.LastName=!;

Ancak bu amaçla neden saklı bir sorguya ihtiyaç duyduğunuzu sormak istiyorum. Sonuçlarla ne yapacaksınız? Bunları bir formda veya raporda görüntülemek ister misiniz? Durum böyleyse, bunu form/rapor kayıt kaynağında yapabilir ve kaydedilen sorguyu parametrelerle değiştirmeden bırakabilirsiniz, böylece parametrelerin doldurulmasına yönelik bir istem görüntülenmeden başka bağlamlarda kullanılabilir.

Öte yandan, kodda bir şey yapıyorsanız, anında SQL yazın ve WHERE yan tümcesini oluşturmak için form kontrolünün gerçek değerini kullanın.

İşte bir kod pasajı. Tabloyu txtHospital parametresini kullanarak günceller:

Set db = CurrentDb Set qdf = db.QueryDefs("AddHospital") qdf.Parameters!txtHospital = Trim(Me.HospName) qdf.ReturnsRecords = False qdf.Execute dbFailOnError intResult = qdf.RecordsAffected

İşte bir örnek SQL:

PARAMETRELER txtHastane Metni(255); tblHospitals() VALUES()'A EKLEYİN

Bu sorunu aşmanın üç geleneksel yolu vardır:

  1. Sorguyu çalıştırırken kullanıcıdan bir değer istenecek şekilde parametreyi bir değere ayarlayın.
  2. Formdaki bağlantı alanı (muhtemelen gizli)
  3. Sorguyu anında oluşturun ve parametreleri kullanmayın.

Bence [?ülkenin ISO kodunu girin] gibi bir şey girmeniz veya formunuzdaki şu gibi alanlara bağlantılar girmeniz gerekmesinin benim için yanlış olduğunu düşünüyorum: !! .

Bu, verileri farklı alanlar sağladığı için aynı sorguyu birden fazla yerde yeniden kullanamayacağımız veya sorguyu çalıştırırken kullanıcının veri girişini karıştırmamasına güvenmek zorunda olduğumuz anlamına gelir. Hatırladığım kadarıyla kullanıcı tarafından girilen bir parametre ile aynı değeri birden fazla kullanmak zor olabiliyor.

Genellikle ikinci seçeneği tercih eder, sorguyu anında oluşturur ve sorgu nesnesini gerektiği gibi güncellerdim. Ancak bu yaygın bir SQL enjeksiyon saldırısıdır (kazara veya bilerek kullanıcılarımı bilerek) ve çok müstehcendir.

"Ed. Start - örneğin tamamlanması için tarih olarak dim qryStartDate dim qryEndDate tarih olarak qryStartDate = #2001-01-01# qryEndDate = #2010-01-01# "Ed. "QUOTEING "stallion" işlemini sonlandırın: VBA'da bir sorguya parametre aktarmak " gerçekten oldukça basittir: "Önce bazı değişkenleri ayarlayacağız: Dim qdf As Querydef Dim rst As Recordset "sonra sorguyu açacağız: Set qdf = CurrentDB.QueryDefs(qryname) "Şimdi parametreler seçeneğini kullanarak sorguya değerler atayacağız: qdf.Parameters(0) = qryStartDate qdf.Parameters(1) = qryEndDate "Şimdi querydef'i bir sorguya dönüştüreceğiz Recordset ve çalıştırın Set rst = qdf.OpenRecordset "Kayıt kümesinde bazı kodlar çalıştırın "Tüm nesneleri kapatın rst.Close qdf.Close Set rst = Hiçbir Şey Ayarlanmadı qdf = Hiçbir Şey

(Bunu kendim test etmedim, sadece seyahatlerimde biriktirdiğim bir şey çünkü arada sırada bunu yapmak istedim ama daha önce bahsettiğim çamurlarımdan birini kullandım)

edit Nihayet bunu kullanmak için bir nedenim oldu. İşte gerçek kod.

"... Dim qdf As DAO.QueryDef Dim prmOne As DAO.Parameter Dim prmTwo As DAO.Parameter Dim rst as Recordset "... "sorguyu açın: Set qdf = db.QueryDefs("my_two_param_query") "params çağrıldı param_one ve "param_two "DAP.Parameters'ınızı sorguya bağlar Set prmOne = qdf.Parameters!param_one Set prmTwo = qdf.Parameters!param_two "parametrelerin değerlerini ayarlar prmOne = 1 prmTwo = 2 Set rst = qdf.OpenRecordset (dbOpenDynaset , _ dbSeeChanges) "... kayıt kümesine normal davranın "kendinizden sonra temizlediğinizden emin olun Set rst = Hiçbir Şey Ayarlanmadı prmOne = Hiçbir Şey Ayarlanmadı prmTwo = Hiçbir Şey Ayarlanmadı qdf = Hiçbir Şey Ayarlanmadı

DoCmd.SetParameter "frontMthOffset", -3 DoCmd.SetParameter "endMthOffset", -2 DoCmd.OpenQuery "QryShowDifference_ValuesChangedBetweenSELECTEDMonths"

Nerede SQL sorgusu Access aslında SQL'i de içerir. Örneğin

"tarihoffset'in bulunduğu tablodan falan seç ="

Her şey işe yarıyor!

Bir örnek verelim. parametreli istek şuna benzer:

Tbl_Country'yi seçin.* Tbl_Country'den WHERE id_Country = _ [?ülkenin ISO kodunu girin]

ve bu değeri ([? enter... country] one) içinde kontrollerin ve bazı verilerin bulunduğu bir formdan alabilmek istiyorsunuz. Mümkün olabilir ama kodun biraz normalleştirilmesi gerekiyor.

Bir çözüm, form kontrollerine, kontrol için fid_Country gibi, id_Country değerini tutacak bir mantık atamak olabilir. Sorgunuz daha sonra bir dize olarak temsil edilebilir:

Qr = "Tbl_Country'yi seçin.* Tbl_Country'den WHERE id_Country = "

İstenilen tüm verileri forma girdikten sonra “istek” butonuna tıklayın. Mantık tüm kontrolleri gözden geçirecek ve bunların istekte mevcut olup olmadığını kontrol edecek ve sonunda parametreyi kontrolün değeriyle değiştirecektir:

Kontrol olarak Dim ctl Me.controls'deki her ctl için If instr(qr,"[" & ctl.name & "]") > 0 Sonra qr = replacement(qr,"[" & ctl.name & "]",ctl .value) End if Next i

Bu durumda, parametrelerin gerçek verilerle değiştirildiği tamamen güncellenmiş bir sorguya sahip olacaksınız. fid_country türüne (dize, GUID, tarih vb.) bağlı olarak ek eklemeniz gerekebilir ikili alıntı veya aşağıdaki gibi son isteği almamak için:

Qr = "Tbl_Country'yi seçin.* Tbl_Country'den WHERE id_Country = ""GB"""

Bu, bir kayıt kümesini açmak için kullanabileceğiniz tamamen Access uyumlu bir sorgudur:

rsQuery = currentDb.openRecordset(qr) değerini ayarlayın

Sanırım burada işin bitti.

Amacınız Access uygulamaları geliştirmek olduğunda bu konu kritik öneme sahiptir. Kullanıcılara teklif sunmalısınız standart yol onlardan veri talep etmek GUI yalnızca sorguları çalıştırmak için değil, aynı zamanda sürekli formları filtrelemek (tıpkı Excel'in "otomatik filtreleme" seçeneğiyle yaptığı gibi) ve rapor seçeneklerini yönetmek için de kullanılır. İyi şanlar!

Ders: Tablolar arası ilişkiler oluşturma. Bir parametre ve son sorguyla bir seçim sorgusu oluşturma.

Önceki laboratuvarda oluşturulan veritabanını açın TF Dekanlığı .

Tablolar arası ilişkiler oluşturma

Veritabanı penceresinde bir nesne seçin Tablolar . "Düğmesine tıklayın" Şema veri " araç çubuğunda veya komutu yürütün " Hizmet »  « Şema veri "Komut menüsünü kullanarak. Ekranda bir pencere görünecektir: Şema veri " ve pencere " Ek tablolar "(Şek. 18).

Pirinç. 18. Veri Şeması İletişim Kutusu ve Tablo Ekle İletişim Kutusu

Pencerede " Ek tablolar "sekmede" Tablolar » tüm veritabanı tablolarını listeler. Tablolar arasında ilişkiler oluşturmak için onları " Ek tablolar "pencereden dışarı" Şema veri " Bir tabloyu aktarmak için fare tıklamasıyla seçin ve “ düğmesine tıklayın. Eklemek " Gerekli tabloları aktardıktan sonra pencereyi kapatın " Ek tablolar ».

Tüm tabloları pencereye taşıyın " Şema veri " Metnin tamamının görülebilmesi için tablo pencerelerini yeniden boyutlandırın (Şek. 19).

Tablolar arasında ilişki oluşturmak için Öğrenciler Ve Derecelendirmeler uyarınca Veri şeması fare imlecini alana taşımanız gerekir Öğrenci kodu masada Öğrenciler ve fare düğmesine basıldığında bu alanı alanın üzerine sürükleyin Öğrenci kodu masada Derecelendirmeler ve ardından fare düğmesini bırakın. Pencere " Değiştirmek bağlantılar "(Şek. 20).

Özelliği kontrol edin " Güvenlik bütünlük veri "üzerine tıklayarak. Özelliklerdeki onay kutularını seçin " Çağlayan güncelleme ilgili alanlar " Ve " Çağlayan silme ilgili alanlar " Bu, yalnızca tablodaki kayıtları düzenlemenize olanak tanır Öğrenciler ve tabloda Derecelendirmeler bağlantılı kayıtlar üzerindeki bu eylemler otomatik olarak gerçekleştirilecektir.

Bağlantı oluşturmak için "düğmesine tıklayın" Yaratmak ».

Pirinç. 19. Veritabanı veri şemasının görünümü " TF Dekanlığı» bağlantı yapmadan önce

Pirinç. 20. Tablo alanları arasındaki bağlantı parametrelerini belirtmek için iletişim kutusu

Aynı şekilde göre Veri şeması kalan tablolar arasında bağlantılar oluşturulur (Şek. 21).

Pirinç. 21. Veritabanı Veri Şeması " TF Dekanlığı»

Veri diyagramı penceresini kapatırken yanıtla Evet düzeni kaydetmeyle ilgili soruya.

Veritabanı tabloları arasında oluşturulan ilişkiler değiştirilebilir.

Bağlantıları değiştirmek için pencereyi aramanız gerekir " Şema veri " Bundan sonra fare imlecini değiştirilmesi gereken bağlantının üzerine getirin ve sağ tıklayın. Bir içerik menüsü görünecektir (Şek. 22):

Pirinç. 22. İletişim içerik menüsü

" komutunu seçerseniz Silmek ", onaylandıktan sonra bağlantı silinecektir. Bağlantıyı değiştirmeniz gerekiyorsa " komutunu seçin Değiştirmek bağlantı " Bundan sonra açılan pencerede “ Değiştirmek bağlantılar " (en üstte) tablolardaki bağlamak istediğiniz alanları seçin ve düğmeye tıklayın " Yaratmak ».

İstekler

Sorgular bir veya daha fazla tablodan veri seçmek veya veri aramak için kullanılır. Birden çok tablodaki verileri görüntülemek, analiz etmek ve değiştirmek için sorguları kullanabilirsiniz. Ayrıca formlar ve raporlar için veri kaynağı olarak da kullanılırlar. Sorgular, toplamları hesaplamanıza ve bunları kompakt bir biçimde görüntülemenize, ayrıca kayıt grupları üzerinde hesaplamalar yapmanıza olanak tanır.

Modda istekleri geliştireceğiz Tasarımcı .

İÇİNDE Erişim Aşağıdaki sorgu türlerini oluşturabilirsiniz:

    Örnek istek . Bu en sık kullanılan istek türüdür. Bu sorgu türü, bir veya daha fazla tablodan veri döndürür ve onu tablo olarak görüntüler. Seçme sorguları aynı zamanda kayıtları gruplamak, toplamları, ortalamaları hesaplamak, kayıtları saymak ve diğer toplam türlerini bulmak için de kullanılabilir. Seçim koşullarını değiştirmek için isteği değiştirmeniz gerekir.

    Parametreli istek . Bu, yürütüldüğünde, bir alana eklemek istediğiniz verileri veya değeri girmenizi isteyen kendi iletişim kutusunu görüntüleyen bir istemdir. Bu veri veya değer her istek yapıldığında değişebilir.

    Çapraz istek . Verilerin hesaplanması ve analizlerini kolaylaştıracak bir yapıda sunulması için kullanılır. Kesit sorgusu, değerlerin toplamını, ortalamasını, sayısını hesaplar veya diğer istatistiksel hesaplamaları gerçekleştirir ve ardından sonuçları, biri sütun başlıklarını, diğeri satır başlıklarını tanımlayan iki veri kümesindeki bir tabloda gruplandırır.

    İsteği değiştir . Bu, tek bir işlemde birden fazla kaydı değiştiren veya taşıyan bir sorgudur. Dört tür değişiklik isteği vardır:

1. Bir girişi silmek için. Bu sorgu bir veya daha fazla tablodaki bir grup kaydı siler.

2. Kaydı güncellemek için. Bir veya daha fazla tablodaki kayıt grubunda genel değişiklikler yapar. Tablolardaki verileri değiştirmenizi sağlar.

3. Kayıt eklemek için. Bir veya daha fazla tablodaki kayıt grubunu bir veya daha fazla tablonun sonuna ekler.

4. Bir tablo oluşturmak için. Bir veya daha fazla tablodaki verilerin tamamından veya bir kısmından yeni bir tablo oluşturur.

    İstekler SQL . Dil talimatları kullanılarak oluşturuldu SQL , kullanılan Veritabanı .

Bugün şöyle bir uygulamaya bakmaya başlayacağız: Microsoft Erişimi 2003 kendi veritabanlarını oluşturabilen ( mdb biçimi) ve mevcut MS tabanlı veritabanları için istemci uygulamaları oluşturmanın yanı sıra SQL Server. Bugünkü makalenin konusu Access'ten yeni sorgular oluşturmak olacak; bu, hem basit sorgular hem de çeşitli işlevler, görünümler ve prosedürler anlamına geliyor. Burada bir sorgu veritabanı nesnelerine atıfta bulunur.

Microsoft Erişimi Hakkında

Microsoft Erişimiyazılımİlişkisel bir DBMS olan Microsoft şirketi. Bir veritabanını düzenlerken, diğer birçok DBMS ile etkileşime girebilecek ayrı bir uygulama oluştururken muazzam yeteneklere sahiptir. İstemcinin Access'te yazılmış bir uygulama olduğu en yaygın istemci-sunucu çözümü ( VBA dili, formları ve çok daha fazlası) ve sunucu bir DBMS'dir Microsoft SQL'i Sunucu. Ancak Access ayrıca MySql veya PostgreSQL gibi diğer DBMS'lerle etkileşimi de destekler. Access'ten uzun süre bahsedebiliriz ama bugünkü yazımızın amacı tam da sorgu oluşturmak ( nesneler) Access'ten.

Hadi pratik yapmaya geçelim ve basit bir mdb veritabanıyla başlayalım; bu sorguların nasıl oluşturulacağı.

Microsoft Access 2003 - MDB veritabanında sorgu oluşturma

İlk önce veritabanını açın, ardından nesnelere tıklayın "İstekler" ve düğmeye basın "Yaratmak".

Not! Bu, zaten bir veritabanınızın olduğu anlamına gelir.

Ve önünüzde istek türünü seçmek için yeni bir pencere açılacaktır.

Bu istek türlerinin her birine daha ayrıntılı olarak bakalım.

Access 2003'teki Sorgu Türleri - MDB

Oluşturucu- tabiri caizse bu yapıcıya dayalı bir istek yaratmaktır grafik editörü, ancak içinde sql moduna geçebilir ve sorgu metnini her zamanki gibi yazabilirsiniz. Lansmandan hemen sonra, gerekli tabloları veya mevcut sorguları seçmeniz için bir pencere açılacaktır, çünkü mevcut sorgular gerekli verileri seçmek için de kullanılabildiğinden, sanki "verim".

Bunu bir grafik düzenleyicide yapmaktan hoşlanmıyorsanız menü öğesine tıklayarak SQL moduna geçebilirsiniz. "Görüş", Daha sonra "SQL Modu".

Basit istek- bunun aynı inşaat seti olduğu söylenebilir, yalnızca biraz farklı türde ve daha az olasılık.

Çapraz istek– bu, tablonun sözde aktarımıdır, başka bir deyişle, yatay sütunlarda bulunan verilerin çıktısıdır, yani. Bir sütundaki her değer yatay olarak ayrı bir sütunda görüntülenecektir. Bunların hepsi bir sihirbazın yardımıyla yapılır, dolayısıyla herhangi bir sorun yaşanmaz.

Yinelenen girişler– adından da anlaşılacağı gibi bu, yinelenen kayıtların aranmasıdır.

Astları olmayan kayıtlar– bu, belirli bir tabloda eksik olan kayıtların aranmasıdır.

İşletmelerde nadiren kullanıldıkları için mdb veritabanları yeterlidir, genellikle aşağıdaki şemayı kullanırlar - ayrı bir istemci yazarlar ve bizim durumumuzda tüm veriler bir DBMS kullanılarak sunucuda depolanır - bu MS SQL Server'dır ve istemci Access'tir (.adp).

Microsoft Access 2003'te sorgu oluşturma - MS SQL Server veritabanı

MS SQL Server'ı temel alan bir Access istemcisinden yeni sorgular oluşturmaya bakalım ( Zaten bir adp istemciniz ve MS SQL Server tabanlı bir veritabanınız olduğu varsayılmaktadır.).

Not! Bu makale sql öğrenmeyi ima etmiyor, dolayısıyla bu makaleyi okuduğunuzda sql'nin temellerini ve veritabanındaki görünüm, işlev, prosedür gibi temel nesneler kavramını zaten anlamış olmalısınız. Bu konuda tamamen yeniyseniz, elbette önce SQL'de uzmanlaşmanız önerilir, çünkü aşağıdaki terimlerin çoğu sizin için net olmayacaktır. Önerilen makaleler:

  • Veritabanlarındaki VIEWS görünümleri nelerdir? Peki neden bunlara ihtiyaç duyuluyor?

Başlangıç ​​aynıdır, projeyi açar, ardından nesnelere tıklayın "İstekler" ve düğmeye basın "Yaratmak".

Ve şimdi daha ayrıntılı olarak.

Access 2003'teki sorgu türleri - MS SQL Server veritabanı

Yerleşik işlev yapıcısı- bunun normal bir görünüm olduğu söylenebilir, içine yalnızca parametreler aktarılabilir, ardından sunucuda bazı sorgular yürütülür ve bir tablo döndürülür. Verileri tablo biçiminde döndüren bir tür fonksiyondur. Şu şekilde ele alınmaktadır ( sql hakkında konuşursak):

SELECT * FROM my_test_tabl_func(par1, par2 ……)

Tıkladıktan sonra "TAMAM" Bu işlevi oluşturmak için, mevcut tabloları ve görünümleri eklemek için zaten tanıdık olan pencereyi göreceksiniz. Ama ben genelde bu pencereyi kapatıyorum ve isteği manuel olarak özel bir alana yazıyorum.Bu alanın görüntülenmesi için panelde aşağıdakilere tıklayın:

Daha sonra, gelen parametreleri eklemek istiyorsanız, @ işaretini ve değişkenin adını koşula koyabilirsiniz, örneğin:

SELECT * FROM table WHERE kod = @par

İşlev özelliklerindeki panelden sonra

sekmede "fonksiyon parametreleri" belirttiğiniz parametreler görünecektir ve bunların burada belirtildiği sıraya göre iletilmesi gerekir.

Yapıcıyı görüntüle- bu sıradan insanlar arasında sıradan bir fikrin yaratılmasıdır "Vyukha".

Saklı Yordam Oluşturucusu– bir yapıcı kullanarak bir prosedür oluştururken prensip yukarıdaki işlevlerle aynıdır. Prosedürün bir dizi olduğunu hatırlatmama izin verin SQL ifadeleri, hem verileri örneklemek hem de değiştirmek için.

Saklı Prosedüre Girme– bu, bir metin editörü kullanılarak bir prosedürün oluşturulmasıdır, ör. tamamen manuel olarak bir prosedür oluşturulması. Sonuçta yapıcıyı kullanmakla aynı şey. Nesneleri oluştururken Metin düzeltici Oluşturma şablonu zaten erişim tarafından otomatik olarak oluşturulmuştur.

Skaler fonksiyon girme değer döndüren bir fonksiyon yaratıyor. Bir metin düzenleyici kullanılarak oluşturulmuştur.

Tablo işlevine girme bir dizi kayıt döndürecek bir fonksiyon yaratıyor. Yerleşik bir işleve benziyor.

Bunları erişim istemcisinde ayırt etmek için, şu veya bu nesneyi oluştururken gördüğünüzle aynı olan farklı simgelere sahiptirler.

Tüm bu nesneleri oluşturduğunuzda sunucuya kaydedilir ve bunları yalnızca adp projenizden değil, diğer istemcilerden de kullanabilirsiniz.

Elbette tüm bu nesneleri sunucuda örneğin Enterprise Manager'ı kullanarak oluşturabilirsiniz ( kullanımdan kaldırıldı, şimdi SQL Server Yönetim Stüdyosu ), ancak bugün bu nesneleri erişim istemcisinden oluşturma olasılığını düşünüyoruz.

Temel olarak bu yeterli diye düşünüyorum, bunu daha detaylı konuşursak bir yazıya sığmaz ama bana öyle geliyor ki bu da belli talepler oluşturmak için yeterli. Ancak belirli bir işlev veya prosedür oluşturmayla ilgili sorularınız varsa yorumlarda onlara sorun, yardım etmeye çalışacağım.

İşin amacı: Veri seçmek için sorgu oluşturma ve kullanma tekniklerini incelemek.

İnfazdan önce laboratuvar işi Aşağıdaki bölümleri incelemeniz gerekir:

İstek türleri;

Tasarım modunda sorgu oluşturma;

Veri seçim koşullarını kaydetme kuralları;

Yerleşik işlevleri kullanma;

Hesaplanan alanlar oluşturma;

Veri giriş/çıkış formlarını kullanma;

Çapraz ve aktif sorguların oluşturulması.

Görev 1: Basit bir sorgu oluşturun.

1. Veritabanını açın Enstitü.

2. Sorgular nesnesindeki Veritabanı penceresine tıklayın.

3. Sorgular penceresinde Oluştur düğmesine tıklayın.

4. Yeni Sorgu penceresinde Tasarım'ı seçin ve Tamam'a tıklayın.

5. Tablo Ekle penceresinde dört tablonun tümünü ekleyin ve pencereyi kapatın.

6. Veri şemasındaki tablo pencerelerinin boyutunu ve konumunu ayarlayın.

7. İlgili alan adlarını (fakülte adı, grup N, uzmanlık adı, not defteri N, tam ad) tablo pencerelerinden veri şeması altında yer alan istek formuna belirtilen sıralarına göre sürükleyin. Seçime dahil edilmesi gereken her alan için bir form sütunu kullanın.

8. GÖRÜNÜM/Tablo Modu komutunu yürüterek veya Görünüm araç çubuğu düğmesini tıklatarak seçimi görüntüleyin.

9. Seçimde hatalar varsa sorgu tasarımcısı moduna dönün ve sorguyu düzeltin.

10. İsteği kapatın. Kaydetmek isteyip istemediğinizi onaylamanızı isteyen bir iletişim kutusu görünecektir. Sorguya Select1 adını verin.

Görev 2.Önceki sorguyla aynı alanları içeren ancak yalnızca ticari öğrencilerle ilgili bilgileri içeren veritabanından bilgi almak için basit bir sorgu oluşturun. Böyle bir isteğe denir şartlı istek.

1. Veritabanı penceresinde Ctrl tuşuna basarken sorgu simgesini sürükleyerek Select1 sorgusunu kopyalayın.

2. Sorguyu Ticariye göre seç olarak yeniden adlandırın. Bunu yapmak için istek adına sağ tıklayın ve içerik menüsüÖğeyi yeniden adlandırın.

3. Sorguyu tasarım görünümünde açın. Talebinize Ticari alanını ekleyin.

4. Ticari alanı için Seçim koşulu alanına Evet değerini girin.

5. Ticari alanının değeri istendiğinde ekranı devre dışı bırakın. Bunu yapmak için bu alanın ekran onay kutusunu kapatın.

6. Araç çubuğundaki Çalıştır düğmesini tıklatarak seçime göz atın.

7. İstek düzenini kaydederek isteği kapatın.

Görev 3. Gruplardan birindeki en genç öğrencinin soyadını ve kayıt numarasını bulmak için bir sorgu oluşturun.


1. Veritabanı penceresinde Oluştur düğmesine tıklayın ve Tasarım seçeneğini seçin.

2. Tablo Ekle penceresinde Öğrenci tablosunu seçin. Bu tablonun tüm alanlarını istek formuna ekleyin. Bunu yapmak için önce Shift tuşunu kullanarak veri diyagramındaki tüm alanları seçin ve ardından bunları istek açıklama formunun ilk satırına sürükleyin.

3. Göreve uygun olarak Doğum Tarihi alanı için seçim koşulu alanına bir formül ifadesi girin. Access İfade Oluşturucusu aracını kullanın. Bunu yapmak için imleci istek açıklama tablosunun ilgili hücresine yerleştirin ve Oluştur araç çubuğu düğmesine tıklayın.

4. İfade Oluşturucu penceresinde DMax fonksiyonunun adını girin. Bunu yapmak için oluşturucunun sol bölmesindeki İşlevler listesini genişletin ve Yerleşik işlevler'i seçin. Daha sonra ortadaki alt pencerede Alt kümeye göre işlev kategorisini seçin ve sağ alt pencerede DMax() işlevini seçin. İlgili fonksiyon, belirtilen argümanlarıyla birlikte ana oluşturucu penceresinde görünecektir.

5. İşlevin ilk bağımsız değişkenini kaldırın ve doğrudan klavye girişiyle veya sol bölmedeki Tablolar listesine tıklayarak ve ardından Öğrenci tablosunu ve alanı seçerek yerine Doğum Tarihi alanının adını ekleyin. içinde. İkinci durumda İfade satırının kullanılmayan kısmını kaldırmanız gerekir. Daha sonra, fonksiyonun aşağıdaki son formu alması için kalan fonksiyon bağımsız değişkenlerinin değerlerini girin: DMax("[Doğum Tarihi]";"Öğrenci";"=851")

6. Fonksiyonu istek açıklama tablosu hücresine yazmak için Tamam düğmesine tıklayın. Düzeni kaydedip En Genç Öğrenci Örneği olarak yeniden adlandırarak isteği kapatın. Veritabanı penceresinde sorgunun adına çift tıklayarak sorgunun sonucunu görüntüleyin.

7. Çalışmanızın sonucunu öğretmeninize gösterin.

Görev 4. Her gruptaki ticari öğrencilerin sayısını saymak için bir sorgu oluşturun.

1. Oluşturun Yeni istek tabloları kullanma Fakülte, Grup, Öğrenci.

3. 3. sütunun seçim koşulunu Evet olarak ayarlayın.

4. Formun 1. ve 2. sütunlarını artan düzende sıralayacak şekilde ayarlayın.

5. 3. sütun verilerinin görüntülenmesini devre dışı bırakın.

6. 4. sütuna Ticari alanına girin ve sütun adını Ticari Numara ile değiştirin. Bunu yapmak için alan adının bulunduğu hücre şunları içermelidir: Ticari sayısı: Ticari (yeni ve eski sütun adları iki nokta üst üste ile ayrılmıştır)

7. Grup İşlemleri araç çubuğu butonuna tıklayarak Grup İşlemleri satırını forma ekleyin ve 4. sütundaki listeden Sayma işlemini seçin.

8. Çalıştır araç çubuğu düğmesini tıklatarak veya QUERY/Run komutunu yürüterek toplam seçimi görüntüleyin.

9. Kontrol Paneli Görünümü düğmesini tıklatarak Sorgu Tasarımı moduna dönün.

10. İsteği, gruplara göre ticari sayma adını vererek kaydedin.

Görev 5. Her fakülte ve her grup için ticari öğrenci sayısını yansıtan bir örnek görmenizi sağlayan bir sorgu oluşturun. Sütun başlıkları fakülte adlarına, satır başlıkları ise grup numaralarına uygun olmalıdır. Örnek ayrıca her bölümdeki toplam ticari öğrenci sayısını içeren bir özet sütunu içermelidir. Bu tür örnekleme çapraz sorguyla uygulanabilir. Böyle bir sorgunun uygulanabilmesi için veri tabanında 3 fakültede öğrenim gören 5-6 öğrenci grubunun bilgilerinin bulunması arzu edilir.

1. Tasarımcıyı kullanarak Fakülte, Grup, Öğrenci tablolarını kullanarak yeni bir sorgu oluşturun.

2. Talep formunun 1. sütununa Fakülte Adı alanını, 2. sütununa Grup N alanını ve 3. sütununa Ticari alanını giriniz.

3. QUERY/Çapraz komutunu çalıştırın veya Sorgu Türü araç çubuğu düğmesini tıklayın ve listeden Çapraz'ı seçin.

4. Hücrelerdeki listeyi genişleterek Çapraz formun satırındaki değerleri seçin: 1. sütun için Satır Başlıkları, 2. sütun için – Sütun Başlıkları, 3. sütun için – Değer.

5. 3. sütunda grup işlemi için Sayma işlevini seçin.

6. Çalıştır düğmesine tıklayarak çapraz örneği görüntüleyin.

7. Özet sütunu oluşturmak için tasarım moduna geri dönün ve talep formuna başka bir Ticari alan ekleyin. Bu alanın adından önce Toplam sütununun adını girin: Grup işlemi satırında Say'ı seçin ve Çapraz satırında Satır başlıkları'nı seçin.

8. Tablo modunda seçim tablosunun sütunlarının genişliğini azaltın. Bunu yapmak için, gruplar halinde veri içeren sütunları seçin ve FORMAT/Sütun Genişliği/Veri Genişliğine Sığdır komutunu çalıştırın.

9. Düzenlenen seçimi görüntüleyin ve talebi, gruplara ve fakültelere göre ticari numara olarak adlandırarak kaydedin.

10. Bir kesit örneğinin yaklaşık görünümü Şekil 1'de gösterilmektedir.

Şekil 1. - Ticari öğrenci sayısının gruplara ve fakültelere göre çapraz örneklenmesi.

Görev 6. Sorgunun bir parçası olarak istenen grup numarasıyla birlikte grup listelerini listelemek için bir sorgu yazın. Böyle bir isteğe denir parametreli istek. Parametre Grup Numarasıdır. Parametre değeri iletişim kutusuna girilir. Bir istek oluşturmak için, seçim koşulunun metnini koşulun bulunduğu hücreye köşeli parantez içinde girmelisiniz.

1. Tasarımcıyı kullanarak bir Öğrenci tablosunu kullanarak yeni bir sorgu oluşturun.

2. Talep formunun 1. satırına tablonun tüm alanlarını girin.

3. Satır hücresine metni girin N grubu alanı için seçim koşulu: [Grup numarasını girin]

4. İsteği çalıştırın ve beliren iletişim kutusuna gruplardan birinin numarasını girin. Seçime göz atın. İsteği kaydedin ve Parametreli Sorgu olarak adlandırın.

5. Çalışmanızın sonucunu öğretmeninize gösterin.




Tepe