Bu konu, Microsoft Office Access 2007 veritabanına depolanmış Internet Protokolü (IP) adreslerini sıralama yordamını açıklamaktadır.
Bu makalede
Giriş
IP adresleriyle çalışıyorsanız, metin veya sayılarla çalışmak kadar basit olmadığını belki de zaten biliyorsunuz. Bunun nedeni, IP adresinin noktayla (.) ayrılmış dört sayısal değerden oluşan ve her değerin 0 ile 255 arasında bir sayı olduğu bir değerler topluluğu olmasıdır. Aşağıdaki tablo, herhangi bir sıralama düzeni uygulanmadan önceki verileri gösterir.
| MakineKimliği |
Çalışan |
Konum |
IPAdresi |
| 1 |
... |
... |
123.4.245.23 |
| 2 |
... |
... |
104.244.253.29 |
| 3 |
... |
... |
1.198.3.93 |
| 4 |
... |
... |
32.183.93.40 |
| 5 |
... |
... |
104.30.244.2 |
| 6 |
... |
... |
104.244.4.1 |
Access, IP adreslerini depolamak için özel bir veri türü sağlamadığı için IP adreslerini Access'te sıralamak güç bir iştir. Her ne kadar IP adresi yalnızca bir sayı topluluğu olsa da, IP adreslerini sayısal bir alana depolayamazsınız. Bunun nedeni, sayısal alanın yalnızca bir tek ondalık basamağı (.) desteklerken, IP adresinin üç nokta (.) içermesidir. Bu, adresleri bir metin alanına depolamanız gerektiği anlamına gelir.
IP adreslerini metin alanına depoladığınız için, adresleri anlamlı biçimde sıralamak için Access'teki yerleşik sıralama düğmelerini kullanamazsınız. Sıralama düğmeleri, bir metin alanındaki değerleri, karakterler sayı olsa bile her zaman alfabetik düzende sıralar. Başka bir deyişle, adresler kendilerini oluşturan sayısal değerlere göre değil birinci basamağa göre, ardından ikinci basamağa göre vb. sıralanır. Aşağıdaki tablo, yukarıdaki tablodaki adresleri IPAdresi alanında alfabetik düzene göre sıralanmış olarak gösterir.
| MakineKimliği |
IPAdresi |
| 3 |
1.198.3.93 |
| 2 |
104.244.253.29 |
| 6 |
104.244.4.1 |
| 5 |
104.30.244.2 |
| 1 |
123.4.245.23 |
| 4 |
32.183.93.40 |
1 ile başlayan adresler 2 ile başlayanlardan önce görüntülenir ve böyle devam eder. Aşağıdaki tablo, adresleri doğru artan sırada gösterir.
| MakineKimliği |
IPAdresi |
| 3 |
1.198.3.93 |
| 4 |
32.183.93.40 |
| 5 |
104.30.244.2 |
| 6 |
104.244.4.1 |
| 2 |
104.244.253.29 |
| 1 |
123.4.245.23 |
Bu adresleri sıralama adımlarının anlaşılmasını kolaylaştırmak için, IP adreslerini dört sayısal parçaya bölersiniz. Adresler ilk parçaya göre, sonra ilk parçadaki her değer için ikinci parçaya göre sıralanmalı ve böyle devam ettirilmelidir. Tablo her parçayı farklı sütunda gösterir ve sütunlar basit sayısal değerler içerdiği için sütunları soldan sağa doğru artan sırada aşağıdaki tabloda gösterildiği gibi sıralamak olasıdır.
| ParçaI |
ParçaII |
ParçaIII |
ParçaIV |
| 1 |
198 |
3 |
93 |
| 32 |
183 |
93 |
40 |
| 104 |
30 |
244 |
2 |
| 104 |
244 |
4 |
1 |
| 104 |
244 |
253 |
29 |
| 123 |
4 |
245 |
23 |
Dört parçayı ayrı ayrı sıralamak IP adreslerini sıralamanın püf noktasıdır. Aşağıdaki yordamda, IP adresi alanının yanı sıra her bir sütunun adres değerlerinin bir parçasını depoladığı hesaplanmış dört sütun içeren bir sorgu oluşturulur. Birinci hesaplanmış sütun adresin birinci sayısal parçasını, ikinci hesaplanmış sütun adresin ikinci sayısal parçasını tutar ve böyle devam eder. Bu sorgu, kayıtları IPAdresi alanına göre sıralamak yerine, bu dört hesaplanmış sütuna göre sıralar.
Sayfanın Başı
Sorguyu oluşturma
Kayıtları artan IP adresi sırasında görüntüleyen Sıralanmış IPAdresleri adlı bir seçme sorgusu oluşturacaksınız. Geçerli veritabanının, IPAdresi adlı bir metin alanı içeren MakineAyrıntıları adlı bir tablosunun olduğunu kabul edelim.
- Oluştur sekmesinin Diğer grubunda Sorgu Tasarımı'nı tıklatın.
- Tabloyu Göster iletişim kutusunda, Tablolar sekmesinde, MakineAyrıntıları'nı tıklatın ve ardından Ekle düğmesini tıklatın. İletişim kutusunu kapatın.
- MakineKimliği ve IPAdresi alanlarını sorgu tasarım kılavuzuna sürükleyin.
- Artık hesaplanmış sütunları eklemeye hazırsınız. Sağdaki ilk boş sütunda, Alan satırına ParçaI: Val(Left([IPAdresi],(InStr(1,[IPAdresi],".")-1))) ifadesini yazın. Bu ifade, IPAdresi alanındaki birinci noktadan (.) önceki karakterleri döndürür.
Şimdi, ifadeyi inceleyin. Adresin birinci parçasını kaç basamağın oluşturduğunu bilmediğinizden, ilk noktanın konumunu bulmak için InStr işlevini kullanırsınız. 1 çıkarmak (noktayı saymamak için) birinci parçadaki basamak sayısını verir. Ardından, bu sayıyı Left işleviyle birlikte kullanarak, en soldaki karakterden başlayarak IPAdresi alanından o kadar sayıda karakter ayıklarsınız. Son olarak, Left işlevinin döndürdüğü karakterleri sayıya dönüştürmek için Val işlevini çağırırsınız. Temel alınan veri türü Metin olduğu için bu sonuncu adım gereklidir.
- Hızlı Erişim Araç Çubuğu üzerinde Kaydet düğmesini tıklatarak sorguyu kaydedin. Her ara adımdan sonra bunu yapmak iyi bir fikirdir.
- İkinci adres parçasının sütununu ekleyin. ParçaI'in sağındaki sütunda, Alan satırına ParçaII: Val(Mid([IPAdresi],InStr(1,[IPAdresi],".")+1,InStr(InStr(1,[IPAdresi],".")+1,[IPAdresi],".")-InStr(1,[IPAdresi],".")-1)) yazın. Bu ifade, IPAdresi alanında birinci ve ikinci noktalar arasında bulunan karakterleri döndürür.
İfadeyi yeniden inceleyin. Adresin ikinci parçasını kaç basamağın oluşturduğunu veya ikinci parçanın tam olarak nerede başladığını bilmediğiniz için (çünkü birinci parçanın uzunluğunu bilmiyorsunuz), noktaların konumlarını bulmak için InStr işlevini kullanırsınız. Ardından, birinci noktadan sonra gelen ve ikinci noktadan da önce olan karakterleri ayıklamak için Mid işlevini kullanırsınız. Son olarak, Mid işlevinin döndürdüğü karakterleri sayıya dönüştürmek için Val işlevini çağırırsınız. Temel alınan veri türü Metin olduğu için bu sonuncu adım gereklidir.
- Üçüncü adres parçasının sütununu ekleyin. ParçaII'nin sağındaki sütunda, Alan satırına ParçaIII: Val(Mid([IPAdresi],InStr(InStr(1,[IPAdresi],".")+1,[IPAdresi],".")+1,InStr(InStr(InStr(1,[IPAdresi],".")+1,[IPAdresi],".")+1,[IPAdresi],".")-InStr(InStr(1,[IPAdresi],".")+1,[IPAdresi],".")-1)) yazın. Bu ifade, IPAdresi alanında ikinci ve üçüncü noktalar arasında bulunan karakterleri döndürür.
İfadeyi yeniden inceleyin. Adresin üçüncü parçasını kaç basamağın oluşturduğunu veya üçüncü parçanın tam olarak nerede başladığını bilmediğiniz için (çünkü birinci ve ikinci parçaların uzunluğunu bilmiyorsunuz), noktaların konumlarını bulmak için InStr işlevini kullanırsınız. Ardından, ikinci noktadan sonra gelen ve üçüncü noktadan da önce olan karakterleri ayıklamak için Mid işlevini kullanırsınız. Son olarak, Mid işlevinin döndürdüğü karakterleri sayıya dönüştürmek için Val işlevini çağırırsınız. Temel alınan veri türü Metin olduğu için bu sonuncu adım gereklidir.
- Dördüncü ve sonuncu adres parçasının sütununu ekleyin. ParçaIII'ün sağındaki sütunda, Alan satırına ParçaIV: Val(Right([IPAdresi],Len([IPAdresi])-InStr(InStr(InStr(1,[IPAdresi],".")+1,[IPAdresi],".")+1,[IPAdresi],"."))) yazın. Bu ifade, sonuncu noktadan sonraki karakterleri döndürür.
İfadeyi yeniden inceleyin. Önemli nokta, üçüncü noktanın konumunu bulmak ve sonra da ondan sonraki tüm karakterleri ayıklamaktır. Üçüncü noktanın nerede olduğunu tam olarak bilmediğinizden konumunu bulmak için InStr işlevini üç kez çağırırsınız. Ardından, dördüncü parçadaki basamak sayısını hesaplamak için Len işlevini kullanırsınız. Sonra, döndürülen basamak sayısı Right işleviyle birlikte kullanılarak IPAdresi alanının sağ tarafından o sayıda karakter ayıklanır. Son olarak, Mid işlevinin döndürdüğü karakterleri sayıya dönüştürmek için Val işlevini çağırırsınız. Temel alınan veri türü Metin olduğu için bu sonuncu adım gereklidir.
- Dört hesaplanmış sütunun tümünde Sırala satırını Artan olarak ayarlayın.
Önemli IPAdresi sütununun Sırala satırının boş bırakılması gerekir.
Adreslere ek olarak diğer alan değerlerine göre sıralama yapmak istiyorsanız, alanları hesaplanmış dört sütunun tamamının ya soluna ya da sağına yerleştirin. Diğer sıralama alanlarını hesaplanmış sütunlar arasına yerleştirmeyin.
- Sonraki adım, bu dört hesaplanmış sütunu veri sayfasından gizlemektir. Ama bunu yapmadan önce, hesaplanmış sütunlardaki ifadelerin sonucunu görmek için Veri Sayfası görünümüne geçin. Aşağıdaki tablo, Veri Sayfası görünümünde göreceğiniz sütunları göstermektedir.
| MakineKimliği |
IPAdresi |
ParçaI |
ParçaII |
ParçaIII |
ParçaIV |
| 3 |
1.198.3.93 |
1 |
198 |
3 |
93 |
| 4 |
32.183.93.40 |
32 |
183 |
93 |
40 |
| 5 |
104.30.244.2 |
104 |
30 |
244 |
2 |
| 6 |
104.244.4.1 |
104 |
244 |
4 |
1 |
| 2 |
104.244.253.29 |
104 |
244 |
253 |
29 |
| 1 |
123.4.245.23 |
123 |
4 |
245 |
23 |
- Tasarım görünümüne geri dönün ve dört hesaplanmış sütunun tamamında Göster satırındaki onay kutusunu temizleyin. Bu, hesaplanmış sütunların Veri Sayfası görünümünde görüntülenmesini önler.
- İsteğe bağlı olarak, kayıtları sorgu dışında tutmak için ölçütler belirtin.
- Kayıtları sıralanmış düzende görmek için Veri Sayfası görünümüne geçin. Kayıtların artan IP adresi düzeninde doğru sıralandığını göreceksiniz.
Sayfanın Başı
Sıralanmış IP adreslerinin diğer kullanımları
IP adreslerini veri girerken doğrulama
Adresleri kod yazmadan doğrulamak istiyorsanız, alanın Giriş Maskesi özelliğini ###.###.###.###;0;" " olarak ve IP adresi alanının Biçim özelliğini &&&&&&&&&&&& olarak ayarlayarak bunu sınırlı ölçekte yapabilirsiniz.
Giriş maskesi ne işe yarar? Adres alanına yazmaya başladığınızda, giriş maskesi bu üç nokta arasına sayı ve boşluk dışında karakterler girmenizi önler. Sayısal kısım iki basamaklı bir sayıysa, üçüncü basamağı boş bırakın veya onun yerine bir boşluk verin. Bu giriş maskesinin, kullanıcı adresin bir veya daha fazla kısmını yazmayı unuttuğunda veya sayısal değerler yerine yalnızca boşluklar yazdığında onu uyarmadığına dikkat edin. Örneğin, "345. .3. " geçerli bir adres olarak kabul edilir.
Görüntü biçimi ne işer yarar? Yazmayı bitirip alandan çıktığınızda, görüntü biçimi adresteki boşlukları siler ve yalnızca sayı ve noktaları görüntüler. Bu nedenle, "354.35 .2 .12 " yazdıysanız, adres "354.35.2.12" olarak görüntülenir. Adresin içini tıklattığınızda veya adres seçiliyken F2 tuşuna bastığınızda (düzenleme moduna girmek için) boşlukların yeniden görüneceğine dikkat edin.
İpucu Bir adresi kopyalamak istiyorsanız, önceki sütuna veya denetime geçin, biçimlendirilmiş adresi seçmek için SEKME tuşuna basın ve ardından Kopyala komutunu tıklatın. Bunu yaptığınızda, boşluklar içeren adres dizesini kopyalamamış olursunuz.
Form veya rapordaki kayıtları IP adreslerine göre sıralama
Kayıtların IP adreslerine göre sıralandığı bir form veya rapor oluşturmanız gerekirse, yeni nesneyi, adresleri depolayan tabloya değil onları yukarıda açıklandığı gibi sıralayan bir sorguya dayandırın.
Sayfanın Başı