BilgiTeknoloji.net    
b i l g i   t e k n o l o j i   y a z ı l ı m

Ana Sayfa

Marjinal XML Access Pratik Uygulamalar Projeler Ekonometri Dilimiz Çetrefil İletişim
 

Bağlı Tablolar


Access başka veri kaynaklarından da kendisine tablo bağlanmasına izin veriyor. Altından kalkamadığı durumlarda ise yardımına ODBC koşuyor.

 

Tablo bağlama işleminin Access’in İngilizce sürümündeki adı Link. Farklı türdeki birçok veri tablosunu Access dosyalarının içine bağlamak mümkün. Örneğin Excel’de hazırlanmış bir tabloyu Access’in içinden rahatlıkla kullanabilirsiniz. Sabit sütunları olan bir Excel tablosunu Access’e bağlamak için Access’teki Dosya / Dış Veri Al / Bağlı Tablo (File / Get External Data / Link Tables) komutunu çalıştırıp bir Excel dosyası seçmek yeterli. Sonrasındaki soruları da geçerek Excel tablosunu kolayca bağlamış oluyorsunuz.

Bu özellik öncelikle Access tablolarını başka Access tabloları içine bağlamak için var. Access 2000 dosyası içine Access 97 sürümündeki bir dosyanın tablosu bağlanabiliyor. Böylece tabloyu uzaklarda aramadan doğrudan kullanabiliyorsunuz.

Bazan, ayrıntılara dikkat etmenin ne kadar önemli olduğundan bahsediyorum. Eğer tablo bağlama penceresindeki dosya türleri (file of types) listesine dikkat ederseniz orada metin dosyalarından tutun Exchange tablolarına kadar birçok seçenek göreceksiniz.


Bağlı tabloları herhangi bir Access tablosuymuş gibi kullanabilirsiniz.

Outlook Express’teki adres defterimi başka bir yerden kullanabilmek hiç bu kadar kolay olmamıştı. Tablo bağlama penceresinde dosya türü olarak Exchange’i seçtikten sonra açılan pencereden Adres Defteri’ni seçip Access dosyasının içine bağladım. Aynı şey e-posta iletileri için de geçerli.

Kayıtlar içeren metin dosyaları için de hemen hemen aynı şeyler geçerli. Fakat bu dosyalar veritabanı yapısında olmadığı için tablo bağlarken bazı ayarlamalar gerekiyor. Virgülle, tab işaretiyle ayrılmış veya sabit uzunluklu alanlar içeren bir metin dosyasını, tablo bağlama penceresinden seçin. Açılan formlarla birlikte gerekli ayarlamaları kolayca yapabilirsiniz. Nihayetinde metin dosyasını (sadece okunur) bir tablo olarak kullanabilirsiniz.
 

SQL SERVER TABLOSUNU ACCESS’E BAĞLAMAK

Gelelim SQL Server tablolarının nasıl bağlandığına. Bunun için önce Denetim Masası’ndaki ODBC bölümünde bir ayar yapmak gerekli.

ODBC seçeneklerinde yeni bir System DSN (System Data Source) bileşeni oluşturup, bunu var olan SQL Server sunucunuzla ilişkilendirin. System DSN oluşturma ekranındaki ağ bağlantı seçeneklerinden TCP/IP’yi (Client Configuration – Network Libraries) seçmeyi ihmal etmeyin.

Yeni ODBC DSN’sini oluşturma işlemi tamamlandıktan sonra Access’teki tablo bağlama penceresinde dosya türleri listesinden ODBC Data Sources seçeneğini seçin. Yeni açılan pencerenin Machine Data Source sayfasında, az önce oluşturduğunuz yeni DSN’yi işaretleyin. Sonrasında çıkan seçenekleri de işaretleyip SQL Server tablonuzu kayıt ekleme, silme ya da değiştirme için rahatlıkla kullanabilirsiniz.

Sadece SQL Server değil, ODBC sürücüsü olan Oracle, Paradox, FoxPro, DBase ve diğer tüm veritabanı sistemlerindeki tabloları Access’in içinden ya da başka yerlerden kolaylıkla kullanmak mümkün.

Tablo bağlama işlemi yapmayacaksanız veya buna zorunlu değilseniz ODBC bağlantısı ile çalışmak öncelikli tercih olmamalı. Zira doğrudan bağlantı kurabilen ADO ve sair sistemler ODBC’den daha hızlı çalışır.
ODBC (Open Database Connectivity) farklı veritabanı sistemlerinin her yerden aynı şekilde kullanılabilmesine imkan veren bir ara bağlantı modülüdür. Bununla Access içine bağladığınız bir Paradox tablosunu Access’e hissettirmeden ve başka bir ayar yapmadan bir anda Oracle içinden kullanabilmek mümkündür. Zaten Access kullandığı bir bağlı tablonun hangi sistem üzerinde olduğunu umursamaz.


SQL Server tablolarını bağlamak için ODBC Databases’i seçin.


Bazı tabloların sadece okunur olarak görüntülenebileceğini unutmayın. Metin dosyalarını standart veritabanı tabloları gibi yönetmek kolay olmadığı için kayıt değişikliği yapılmasına izin verilmemesi normal. Aynı şekilde çok büyük metin dosyalarını kullanırken iyi bir performans beklememelisiniz. Zaten veritabanı sistemleri varken büyük metin dosyalarını tablo olarak kullanmaya ihtiyaç yoktur genelde.


FORM ÜZERİNE RESİM DÖŞEMEK

Formların ve raporların üzerine resim yerleştirmek için özellikler penceresinde birkaç seçenek var. Orada “picture” ile başlayan altı seçeneği inceleyip nasıl kullanıldıklarını ve ne işe yaradıklarının hemen öğrenebilirsiniz.

Resmi döşemek için Picture Tiling özelliği kullanılıyor. Picture özelliğine resim dosyasının konumu yazılıyor. Hemen altındaki Picture Type seçeneğindeki Embedded değeri bu resim dosyasının Access dosyasının içine fiziksel olarak dahil edileceğini belirtiyor. Aksi halde orada Linked değerinin seçili olması resim dosyasının Access dosyasına dahil edilmeyeceğini, resmin belirtilen disk konumundan her seferinde yeniden çağrılıp görüntüleceğini işaret ediyor. Tabii bu seçenek, görüntüleme süresini biraz artırıyor. Resmin anında görüntülenmesi gerekiyorsa Embedded seçeneğini işaretleyin.

Raporlara özgü Picture Pages seçeneği ile arkaplan resminin sadece ilk sayfada ya da tüm sayfalarda görüntülenmesini sağlayabilirsiniz.


PictureTiling özelliği ile arkaplan resmi form üzerine döşeniyor.
 

ACCESS PENCERESİNİ YERLEŞTİRMEK

Geçen aylarda Access penceresinin masaüstünde kolayca yerleştirilebileceğiyle ilgili bir kod örneği vardı. Bu sayıdaki örnek ise eskisinin biraz daha gelişmiş hali. Kod biraz uzun olduğu için bu sayfalara kıyamıyorum. Dergide Adı Geçen Dosyalar bölümündeki dosyada kodu bulabilirsiniz.

Access penceresi yerine herhangi başka bir program penceresinin boyutlarını değiştirmek isterseniz koddaki hWndAccessApp yerine ilgili pencerenin Handle (hWnd) değerini yazmanız yeterli.

Bunun için FindWindow gibi bir API komutuna ihtiyacınız olabilir. Onu da şu şekilde yapabilirsiniz:

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub Deneme()
Dim h As Long
h = FindWindow("Notepad", "Adsız - Not Defteri")
MsgBox “Not Defteri’nin HWND değeri = “ & h
End Sub



TUŞ BASILI MI DEĞİL Mİ

Windows’ta ve diğer programlarda olduğu gibi Ctrl, Shift ve Alt tuşlarını kısayollara eklemek ve işlem anında bunların basılı olup olmadığını kontrol etmek profesyonel bir görünüm kazandırabilir programlarımıza.

Örneğin bir sıralama işlemi yaptırırken Shift tuşu basılı ise sıralamayı tersten yaptırırım.

Yeni bir modül oluşturup en üstteki Option Compare Database ve varsa Option Explicit satırlarının altına şu satırları yerleştirin:

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Const VK_SHIFT = &H10 'SHIFT
Public Const VK_CONTROL = &H11 'CTRL
Public Const VK_MENU = &H12 'ALT


Programınızın herhangi bir yerinde, basılı olup olmadığını bulmak istediğiniz tuşlar için şu kodu kullanabilirsiniz artık:

If GetKeyState(VK_SHIFT) < 0 Then MsgBox "SHIFT tuşu basılı."
If GetKeyState(VK_CONTROL) < 0 Then MsgBox "CTRL tuşu basılı."
If GetKeyState(VK_MENU) < 0 Then MsgBox "ALT tuşu basılı."



KAYIT SİLME KODUNUN SON SÜRÜMÜ

Daha önce iki kez farklı kayıt silme kod örnekleri vermiştim. O kadar satırlık kod parçası iki satıra sığabiliyor. İşte son sürüm kayıt silme kodu:

DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord


HERKES İÇİN SORGULAR

Sıkça sorulan bir SQL sorusu, belli kayıtların bulunup değiştirilmesi ile ilgili.

Access’te yeni bir sorgu oluşturup Query (Sorgu) menüsünden Update Query’yi (Değiştirme Sorgusu) seçin.

Değiştirmek istediğiniz veri alanlarını alt taraftaki sütunlara yerleştirip UpdateTo kısmına yeni değerleri yazın. Sadece belli kayıtları değiştirmek istiyorsanız Criteria (Koşul) alanını doldurmayı unutmayın. Aksi halde bütün kayıtlarınız değiştirilir.

Resimdeki sorgu Meslek alanındaki “Talebe” değerlerini “Öğrenci” olarak değiştiriyor.

UPDATE Kisiler SET Meslek = "Öğrenci" WHERE Meslek="Talebe";

Değiştirilecek alan için koşul belirtmek zorunda değilsiniz. Bu kod Kisiler tablosunda Meslek alanı değerinin “Ev Hanımı” olduğu kayıtlardaki Cinsiyet alanına “Kadın” değerini ve Askerlik alanına “Muaf” değerini yazıyor:

UPDATE Kisiler SET Cinsiyet=“Kadın”, Askerlik=“Muaf” WHERE Meslek=“Ev Hanımı”;

Koşul belirtmeye gerek yok tabii. Şu SQL kodu ile tüm müşteri kayıtlarındaki MektupGonder alanı True (Evet) olarak güncelleştirilir:

UPDATE Musteriler SET MektupGonder = TRUE;


ODE TOOLS

Şu sıralar ODE Tools ile ilgili sorular çoğaldı. İşte kısa cevaplar:
• ODE Tools 2000 = Microsoft Office 2000 Developer Tools.
• ODE Tools ile Access kurulu olmayan bilgisayarlarda Access’te yapılmış programları çalıştırabilirsiniz.
• Access dosyaları EXE yapılmıyor. Ama kodlar ve tasarım bilgileri tamamen gizlenip dosya derlenebiliyor. Bunun için ODE Tools’a gerek yok. Dosyayı MDE dosyası yapmalısınız.
• Program ile Access projeleri için kurulum paketi (setup) hazırlanıyor. Tabii sadece bu işi yapmıyor. İçerisinde Office’te programlama ile ilgili başka eklentiler de var.
• ODE Tools’u bir defa satın almış olmakla, bununla hazırladığınız kurulum programlarınızı sınırsız sayıda ve tamamen ücretsiz dağıtma hakkınız olur. Kurulum programlarınız her bilgisayara, yasal bir kısıtlama olmaksızın kurulabilir.
• Ayrı olarak satılabiliyor ve ayrıca Office 2000 Developer Edition paketi içinde yer alıyor. Office 97 için de aynı şekilde sürümleri mevcut. Fakat ODE Tools 97 şu an piyasada değil.
• Programı Linksoft’tan satın alabilirsiniz. Tel: 0(216) 522 00 22.
• Lisans kontrollerinde öncelikle faturaların incelendiğini unutmayın.
• Programı satın almadan önce PC Magazine’in Temmuz 2000 ve Ocak 2001 tarihli sayılarındaki ODE Tools incelemelerine gözatmanızı tavsiye ederim.


SORULARLA İLGİLİ

Okurlarımızın gönderdiği soruların hemen hepsine cevap yazmaya çalışırım. Fakat bir yığın sorunun tamamına kısa sürede cevap yazmak mümkün değil. Çoğunlukla araştırma yapmak gerekli ve mesai sırasında işten çokça vakit ayırmak pek doğru olmasa gerek. Gelen mesajları vaktimin yettiği kadarıyla akşamları evden yanıtlayabiliyorum genelde.

Sadece bana gönderdiğiniz postalarda değil, başka yerlere gönderdiğiniz postalarda da mesajlarınızın içindeki soruları kısa tutmanız ve birçok soruyu tek bir mesaj içinde toplamamanız cevap alma sürenizi azaltabilir. Ayrıca kullandığınız Access’in (yani probleme konu olan programın) hangi sürüm ve dilde olduğunu belirtirseniz daha iyi olur.

Haber grupları sorulara cevap bulmak için daha efektif oluyor. Oralarda çok daha kısa sürede ve ayrıntılı çözümler bulunabiliyor. Zira yüzlerce kişi sorunuzu okuyor ve problemin çözümünü bilenler mesajınızı cevaplıyorlar.

Sorularınızın birçoğu haber gruplarında geçmiş tarihlerde başkaları tarafından sorulup cevaplanmış olabiliyor. Problem için öncelikle Internet’ten ve haber gruplarından araştırma yapmak daha hızlı bir çözüm olabilir.

Internet’te de Access’le ilgili Web sayfaları mevcut. Bir daha ki ay için Access’le ilgili kişisel web sitelerinin adreslerini gönderirseniz bu bölümde yayınlayacağız. Bu arada Access’le ilgili kapsamlı bir site olan The Access Web sitesini de sıkça ziyaret etmenizde fayda var.

http://www.mvps.org/access

Mvps.org sitesinde Access dışında VB, API, VC gibi konularda çok kapsamlı birkaç bölüm daha var. Site, Microsoft tarafından MVP ünvanı (Microsoft’s Most Valuable Professional - bir nevi fahri Microsoft mühendisliği) verilmiş kişiler tarafından oluşturulmuş. Oradaki diğer bağlantılar arasında başka MVP’lerin siteleri için de adresler verilmiş. Outlook Express için epey kapsamlı bilgiler içeren bir MVP sitesi bile varmış nitekim.

Okurlarımızdan gelen bazı soruların cevapları ise eski sayılarımızda yer alabiliyor. Mayıs 2000’de başlayan bu dizinin önceki yazılarını PC Magazine Online sitesindeki Eski Sayılar Arşivi bölümünde bulabilirsiniz. Bu yazıları da elinizin altında bulundurmanız faydalı olacaktır.

PC Magazine sitesindeki Dergide Adı Geçen Dosyalar bölümünde ise aynı tarihten başlayacak şekilde bazı aylara ait Access’le ilgili örnek çalışma dosyaları yer alıyor.
 

DOSYA:
AccessNisan2001.rar

 
Serkan Şahinoğlu
PC Magazine, Nisan 2001


http://BilgiTeknoloji.net