Saturday, 15 January 2011

Tamsayı elde etmek

Tamsayı elde etmek

Rnd fonksiyonu ile ilgili yukarıdaki örneği yaptıysanız, dönen sayının 0 ile 1 arasında, yani daima kesirli olduğunu görmüş olmalısınız. Bazen bizim sayfalarımızdaki hesaplamalar veya veritabanından alınan değerler de kesirli olabilir. Örneğin öğrencilerin not ortalamalarını hesaplattırırken VBScript size sonu gelmez kesirler verecektir. Oysa çoğu zaman bu rakamların ya yukarı "yuvarlanması", ya da sadece tam sayı bölümü gerekir. VBScript'te Int() fonksiyonu, bize bir sayının tam sayı bölümünü verir. Diyelim ki elimizdeki KesirliSayi değişkeninin değeri 123,234567 olsun.

Tamsayi = Int(KesirliSayi)

işleminden sonra Tamsayi değişkenin değeri 123 olur. Fakat kimi zaman bir sayının kesirli bölümünü böyle bıçakla kesip atmak işimize gelmeyebilir. Round() fonksiyonu, kesirli bir sayıyı yukarı veya aşağı "yuvarlayarak" tam sayı haline getirir. Bu kez ki elimizdeki KesirliSayi değişkeninin değeri 5,6 olsun.

Tamsayi = Int(KesirliSayi)

işleminden sonra Tamsayi değişkenin değeri 6 olur. Kesirli sayı 56,2 ise, Round() fonksiyonu bize 56 değerini verir.

Programımız, elde ettiği ve Paraat değişkenine kaydettiği bu sayı 1 ise, Yazı gelmiş sayıyor; ve Browser Penceresine "Yazı!" yazıyor. Bu arada yapılan atış sayısını kaydettiğimiz Atis ve gelen tura sayısını tuttuğumuz Tura değişkenlerinin değeri bir arttırılıyor. ParaAt değişkeninin değeri başka bir şeyse (ne olabilir?), programımız bu kez tura geldiğine hükmediyor ve Browser penceresine "Tura!" yazıyor. Do döngüsü, Tura gelen atışların sayısı 3 oluncaya Bu ASP sayfası görüntülenirken Browser'ın Yenile düğmesini kadar devam ediyor. Çünkü Do döngüsünü While Tura < 3 (Tura 3'den az iken) deyimi ile çalıştırıyoruz. Ve program sonunda 3 tura gelinceye kadar kaç atış yaptığını yazıyor. tıklarsanız, her seferinde Tura getirmek için farklı sayıda atış yapmak gerektiğini; aynı sayıda atış yapılsa bile turalarla yazıların yerinin değiştiğini göreceksiniz.

Sabit Bir Başlık

Asp İle Sabit Bir Başlık

Şimdi Sizlere Asp de çok kullanılan bir özelligi anlatacagım

<!--#include virtual="dosyaadı.htm"

Mesala Kullanmak istedigimiz bir sayfam menü Diye bir kısım oluşturduk ve bunu hersayfamızda görünmesini istiyoruz
Bunu include virtualile yapabiliyoruz ve Görünmesini istedigimiz sayfalara bu nu yazıyoruz ve ardından hazırladıgımız sayfanın adını yazıyoruz ve her sayfada ayrı ayrı hazırlama derdinden kurtuluyoruz. Buna bir örnek yapalım:

<body>
<p align="center">
<img src="/resimlerim/banner.gif"
<p align="center">
<font><strong><font face=Lucida sans unicode" size="2">
<a href="http://sitem.com">Ana Sayfa</a>

<a href="http://sitem.com/oyun.asp">Oyunlarımız</a>

<a href="http://sitem.com/Arama.asp">Arama</a>

<a href="http://sitem.com/Öneriler.asp">Önerileriniz</a>

<a href="http://sitem.com/spor.asp">Spor Haberleri</a>
</font>
</strong>
</font></p>

**********************************
Yukarıdaki Sayfayı "ust.htm" Adıyla Kaydedin;
*********************************

<html>
<head>
<meta http-equiv="content-Type"content="text/html;charset=ISO-8859-9">
<meta http-equiv="content-Type"content="text/html;charset=windows-1254">
<title>include virtual</title>
<!--#include virtual="ust.htm"-->
</BODY>
</HTML>

**********************************
Yukarıdaki koduda "ilk.asp" Adıyla Kaydedin;
*********************************

Bunun sayesinde bütün sayfalarımızda başlık kısmını ayrı ayrı hazırlamaya gerek kalmadı, sadece başlık kısmana ait sayfayı degiştirip yayınlamamız yeterli olacak. Bu sayede zamandan kazanmış olacagız.

Veri Tabanundan verileri okumak

Veri Tabanundan verileri okumak

Aşağıdaki koda bir bakalım

<%
Dim Baglanti, Bag, KayitSeti

Baglanti = Baglanti.Open ("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/veritabani_dosyasinin_adi.mdb"))

Set Bag = Server.CreateObject("ADODB.Connection")
Bag.Open (Baglanti)
Set KayitSeti = Bag.Execute("Select * FROM Dersler ORDER BY DersNo")

Do While Not KayitSeti.eof
%>

<table>
<tr>
<td>
Ders No
</td>
<td>
Ders İsmi
</td>
</tr>
<tr>
<td>
<% =KayitSeti("DersNo") %>
</td>
<td>
<% =KayitSeti("DersIsmi") %>
</td>
</tr>
</table>

<%
KayitSeti.movenext
loop
%>

Burada öncelikle baglantımızı kurtuk daha sonrada.

<% Do While Not.KayitSeti.eof %>

yazarak, veritabanındaki bütün kayıtları, en baştan başlayarak sonuna kadar okutuyoruz. ve bir tabla işerisine

<% =KayitSeti("DersNo") %>
<% =KayitSeti("DersIsmi") %>

Bu kodlar, veritabanındaki DersNo ve DersIsmi diye tanımlanan alanlardaki verileri okuyor.

<% KayitSeti.movenext
loop %>

Bölecede ikinci satıra geçip onu okuyoruz. yani Nekadar kayıt varsa okuyor ve kayıtlar bittindede duruyor .

Verilere Link Vermek

Verilere Link Vermek

Mesela adam sizin hazırladığınız forma email adresin veya web adresini girmiş. Linklere tıklayıp Yazılı adresine gitmek istiyorsunuz. Nasıl yapılıyormuş bu işlem!

Veritabanınızdaki adresin adı "email" olsun.

Yazdıgımız bu değere Hyperlink olarak

<%=rs("email")%>

Visual Basic ile basit bir ASP componenti yapalım

Visual Basic ile basit bir ASP componenti yapalım

Visual Basic ile response nesnesini kullanan basit bir componenti beraberce yapmaya çalışalım. Aşağıdaki maddeleri teker teker uygulayın.

ÖRNEK

1-Yeni bir Active-X DLL projesi açın.
'-- Eğer aşağıdaki ASP kütüphanesi seçeneğini bulamadıysanız; IIS, PWS veya Visual InterDev ile beraber yüklendiğini söylemeliyim.
2-Proje içerisindeyken, References menüsünden Microsoft Active Server Pages kütüphanesini aktif hale getirin.
3-Proje kolay bir isim verin. (geveze)
4-Sınıf yani class ismi verin. (papagan)
5-Visual Basic kod penceresine aşağıdaki kodları yazın ve compile edin.
6-Windows/System altındaki Regsvr32.exe kullanılarak DLL sisteme register edilir.

Regsvr32 geveze.dll

<'--proje ismi geveze, class adı papagan verdikten sonra kod penceresinde aşağıdaki kodları yazın.>

Private ASPresponse As response
Public Sub onstartpage(sc As ScriptingContext)
Set ASPresponse = sc.response()
end Sub

Public Sub merhaba()
ASPresponse.write "Merhaba ASPARSIVI ASP Okuluna Hoş Geldiniz..."
end Sub

Public Sub gulegule()
ASPresponse.write "Güle, Güle Tekrar Görüşmek Üzere"
end Sub

<'--Haydi şimdi yaptığımız bu componenti ASP sayfamızda kullanalım.

<'--ornekcomponent.asp>
<%
set konus=server.createobject("geveze.papagan")
'-- Ekrana "Merhaba ASPARSIVI ASP Okuluna Hoş Geldiniz..." yazar.
konus.merhaba
response.write "<br>"
'-- Ekrana "Güle, Güle Tekrar Görüşmek Üzere" yazar.
konus.gulegule
%>

Karakter Dizisi Düzenleme

Karakter Dizisi Düzenleme

Karakter-dizisi veya String, VBScript için herşey olabilir. "Sana Sevdanın Yolları Bana Kurşunlar" bir String'dir. "Bugün 7 Ağustos 2000" bir String'dir. "Doğum Günün Kutlu Olsun!" bir String'dir. Web sitemizi ziyaret eden kişinin formlarımıza yazacağı ve Gönder tuşunu tıklayarak Server'a göndereceği bilgiler String'dir. Fakat bunların hepsi olduğu şekliyle işimize yaramaz. Bunları yeniden düzenlemek, içinden seçmeler yapmak veya biçimlerini değiştirmek gerekebilir. VBScript bu amaçla kullanılmaya hazır bir dizi fonksiyon verir:

InStr Uzun bir String'in içinde vereceğiniz daha kısa bir String'in bulunup bulunmadığını arar; bulursa bu kısa String'in başlama noktasının değerini verir. Diyelim ki, "Sana Sevdanın Yolları Bana Kurşunlar" String'ini Kayahan değişkenine, "Sevda" kelimesini de Ara değişkenine atadınız. InStr fonksiyonu ile Ara'nın değerinin yerini Kayahan'ın değerinin içinde bulabilirsiniz:

Yer = InStr(Kayahan, Ara)
Yer'in değeri 6 olacaktır; çünkü "Sevda" kelimesi, uzun String'de 6'ncı karakterden başlamaktatır.

Len Bir String'in uzunluğunu belirler. Yukarıdaki örnekte yer alan Kayahan değişkenin uzunluğunu şöyle belirleyebiliriz:
Uzunluk = Len(Kayahan)
Uzunluk değişkeninin değeri 36 olacaktır.

UCase Vereceğiniz bir String'in tüm karakterlerini büyük harfe çevirir.
YeniString = UCase(Kayahan)
Yeni String'in değeri: "SANA SEVDANIN YOLLARI BANA KURŞUNLAR" olacaktır.

LCase Vereceğiniz bir String'in tüm karakterlerini küçük harfe çevirir.
YeniString = LCase(Kayahan)
Yeni String'in değeri: "sana sevdanın yolları bana kurşunlar" olacaktır.

LTrim, RTrim, Trim Verdiğiniz String'in (sırasıyla) solunda yani baş tarafında; sağında yani sonunda ve hem başında ve hem de sonundaki boşlukları temizler.
Space İçinde, vereceğiniz sayı kadar boşluk olan boş bir String oluşturur. Örneğin
Bosluk = Space(20)
Bosluk değişkenin değeri " " (20 boşluk) olacaktır.

String İstediğiniz sayıda ve istediğiniz bir karakterle bir String oluşturur.
YeniString = String(3, "*")
YeniString değişkeninin değeri "***" olacaktır.

Left, Right Bir String'in içinde soldan (baştan) veya sağdan (sondan) verdiğiniz sayıya kadar olan karakterleri verir. Örneğin, yine yukarıdaki Kayahan değişkenini kullanırsak:
Solda = Left(Kayahan, 4)
Solda değişkeninin değeri "Sana" olacaktır; çünkü Kayahan değişkeninin soldan itibaren dört harfi "Sana" kelimesine denk geliyor.

Mid Bir String'in içinde başlangıç noktasını ve karakter olarak boyunu verdiğiniz alanda yer alan String'i verir.
Ortada = Mid(Kayahan, 5, 8)
Ortada değişkeninin değeri "Sevdanı" olacaktır; çünkü Kayahan değişkeninin soldan 5'nci değişkeninden itibaren 8 karakterlik alanda "Sevdanı" karakterleri yer alıyor.

Connection

Connection

ADO'dan yararlanabilmek için kullanacağımız ilk nesne Connection'dır. Bu nesne ile veritabanı ile bağlantı sağlarız, yol açarız:

<%
Dim Veriyolu
Set Veriyolu = Server.CreateObject("ADODB.Connection")
Veriyolu.Open "Veri_adi"
%>

Burada, Server'ın CreateObject metodu ile ADOBD.Connection nesnesini oluşturuyoruz. Oluşturduğumuz bağlantıya istediğimiz değişken adını verebiliriz. Bu örnekte veriye kurduğumuz bu bağlantı Veriyolu adıyla biliyor. Bu yolla sağlayacağımız veriler, ASP programı boyunca bir isimle bilinmelidir. Veriyolunun açacağı veri kümesinin ismini buradaki "Veri_adi" kelimelerinin yerine yazarız. Bu isim, bağlantının .Open metodu ile açacağı verinin adıdır. Bu, kullanacağımız veritabanı dosyasının adı değildir. Bu isim ile söz konusu veritabanı dosyasını işletim sisteminin ODBC aracına tanıtırken kullandığınız isim aynı olmalıdır. Bir veritabanı dosyasını ODBC aracını kullanarak sisteme tanıtma (DSN-Data Source Name) ayarının nasıl yapıldığını daha önce ele aldık. Bu üç satırla, ASP programı, Server'dan ADO aracılığıyla, sistemin "Veri_adi" kelimelerinin yerine yazacağınız isimli veriye yol açacaktır. Örneğin yukarıdaki kutuda oluşturduğumuz ODBC veri kaynağını kullanacağımız zaman, buraya "uyeler" kelimesini yazacağız,

Dosya Sistemi Nesnesi

Dosya Sistemi Nesnesi

Dosya Sistemi Nesnesi (FileSystemObject), ASP programının, Web Sunucusunun sabit disk sisteminde, sürücüleri, klasörleri ve dosyaları yönetmekte kullanacağımız temel araçtır. Burada, ne denli güçlü bir araçtan söz ettiğimizi hemen görebilmek için şu kodu yazalım ve dosya_yaz.asp adıyla kaydedelim:

<% Option Explicit %>

<%

Dim YaziFSO, yaz

Set YaziFSO = CreateObject(\"Scripting.FileSystemObject\")

Set yaz = YaziFSO.CreateTextFile(\"c:\\yazi_deneme.txt\",True)

yaz.WriteLine(\"Bu bir denemedir.\")

yaz.Close

%>

Kodumuzun Dim satırında iki değişken belirlediğimizi görüyorsunuz. Fakat bu iki değişkeni sistem nesnesi olan Scripting’in yeni bir olgusu olarak kullanacağımız için daha önce standart değişkenlere değer atadığımız gibi değil, fakat Set komutundan yararlanıyoruz, ve YaziFSO değişkeninde bir “Scripting.FileSystemObject” nesnesi oluşturulmasını sağlıyoruz. (ASP uzmanları arasında gelenek, nesne değeri tutan değişkenlere, ilgili nesnenin baş harflerini eklemektir. Böylece bir değişkenin adına bakarak, işlevini anlamak mümkün olur.)

“yaz” değişkeni YaziFSO’da yeni bir olgusunu oluşturduğumuz FileSystemObject’in CreateTextFile (Düzyazı dosyası oluştur) metodunu kullanıyoruz; bu metod oluşturulacak dosyanın adını ve eğer bu dosya varsa üzerine yazılmasına izin veren True (doğru) veya buna izin vermeyen False (yanlış) kelimesini argüman olarak alır. “yaz” değişkeni şimdi kendisi bir metod kullanabilecek şekilde, FileSystemObject’in bir örneğidir; nitekim WriteLine metodu ile biraz önce oluşturulan dosyaya, argüman olarak verdiğimiz metni yazdırmaktadır. Bu kodu çalıştırdıktan sonra, sabit diskinize bakarsanız, düzyazı dosyasını göreceksiniz:

<asp0009.tif>

Bugüne kadar Web tekniği olarak Browser’da bir sayfayı görüntüleyebileceğimizi sanıyor idiysek, sistem nesneleri kullanarak çok daha farklı şeyler yapabileceğimizi görmüş olduk. Şimdi FileSystemObject’i daha yakından tanıyabiliriz.

Bu nesne bize sabit diske erişme ve onun kaynaklarını kullanma imkanı verir. Bütün nesneler gibi kullanılabilmesi için önce bir değişkenin bünyesinde oluşturulması gerekir:

<%

Dim DosyaSistemi

Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)

%>

Dosya Sistemi Nesnesi’nin 20’den fazla metodu vardır; fakat bunlardan önemlileri şöyle sıralanabilir:

CopyFile (dosya kopyala), MoveFile (Dosya taşı), CopyFolder (klasör kopyala), MoveFolder (klasör taşı), Create Folder (klasör oluştur), DeleteFile (dosya sil), DeleteFolder (klasör sil).

Şimdi bunlardan birinin nasıl kullanılabileceğine bir örnek verelim:

<%

Dim DosyaSistemi

Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)

DosyaSistemi.DeleteFile “c:\\belgelerim\\test.*”

%>

Bu program ile “Belgelerim” klasöründeki “test” isimli bütün dosyaları silmiş olursunuz. (Bu programı çalıştırmadan önce bir kaç kez düşünmeniz, sanırım iyi olur; çünkü ASP yoluyla sildiğiniz dosyalar, Geri Dönüşüm Kutusu’na gitmez!) Daha az zararlı bir diğer örnek ise şöyle olabilir:

<%

Dim DosyaSistemi

Set DosyaSistemi = CreateObject(“Scripting.FileSystemObject”)

DosyaSistemi.CopyFile “c:\\belgelerim\\*.*”, “c:\\yedekler\\”

%>

Bu program “Belgelerim” dizinindeki bütün dosyaları “Yedekler” dizinine kopyalar.

FileSystemObject’in sadece bir özelliği (Property) vardır: Drives (sürücüler). Fakat bu özellik, bir değil bir çok elemandan oluşan bir dizi-değişken gibi Kolleksiyon (Collection) sayılır. Nede? Çünkü bir Web Server’da birden çok sürücü bulunur. Her sürücü, bu kolleksiyonun üyesidir (FileSystem.Drives) ve her birinin sürücü harfi (.DriveLetter), disk adı (.VolumeName), byte olarak boş alanı (.FreeSpace) özellikleri vardır. suruculer.asp adıyla kaydedeceğiniz şu program, denediğiniz sistemin disk-disket-CD-ROM durumunu size listeleyecektir.

Hata (Err) Nesnesi

Hata (Err) Nesnesi

Hangi dille olursa olsun program yazarken hata yapmak kaçınılmaz bir kuraldır. Dolayısıyla kullandığınız programlama dili hatalarınızı kolayca yakalamanıza imkan vermelidir.

ASP programlarınızda yazım yanlışlığı, olmayan değişkene gönderme gibi Script hatası olmaması gerekir. Bu tür hatalar, program Web’e gönderilmeden mutlaka ayıklanmalıdır. Fakat programcı olarak öngöremeyeceğiniz, ve çoğu Web ziyaretçisinden veya ziyaretçinin bilgisayarından kaynaklanan hata durumları olabilir. VBScript, şu standart komutla beklenmedik hata durumlarında programın yoluna devam etmesini sağlayabilir:

<% On Error Resume Next %>

Bu komutla VBScript’e, hata halinde bir sonraki satırdan yoluna devam edecektir. Fakat oluşan hata, programın daha sonra vermesi beklenen sonucu vermesini önleyebilir. VBScript, Err (Hata) Nesnesi’nin bir çok özelliğinden özellikle hata sayısı (Number), tanımı (Description) ve kaynak (Source) özellikleri ile size hatanın ne olduğunu ve nereden kaynaklandığını söyleyebilir. Bu özellikleri kullanarak, programlarınızda, en azından geliştirme aşamasında, örneğin,

If Err:Number = xx Then

şeklinde bir ifade ile hatanın türüne göre programın kazasız yürümesini sağlayabilirsiniz. Burada xx yerine 108 ayrı hata numarası yapabilirsiniz. Hata numaraları, Microsoft’un VBScript sitesinden edinilebilir.