VERĠ TABANI YÖNETĠMĠ-DBASE 1-VERİ TABANI VERĠ TABANI : Belirli bir tarzda organize edilmiģ bilgiler koleksiyonudur. VERĠ TĠPLERĠ : 1-) Karaktersel (Alfasayısal)Veriler ASCII karakterlerini kapsar. 1 ile 254 arası sayıda karakterden oluģabilir. (Bursa, Okul0115a,#, s, 123 ) 2-) Sayısal (Numeric) Veriler Sayısal değerler, dört iģlem yapabildiğimiz değerlerdir. Ondalık veya tamsayı olabilir. (123, 845) 3-) Tarih Tipi Veriler Tarih gösteren verilerdir.otomatik olarak 8 karakter uzunluğundadır. Normalde gg/aa/yy formatındadır. SET KONTROL komutları kullanılarak gg/aa/yy formatına dönüģüm yapılabilir. (05/28/95) gg aa yy g- gün a-ay y-yıl 4-) Memo Tipi Veriler Bu türden olan veriler herhangi bir metni yani text i içeren verilerdir. Bu tip verilere ait sahalar diğer sahalardan farklı Ģekilde iģlenir. ÇalıĢılan dosya çağrıldığında bu sahaya iliģkin bilgiler görünmez, özel olarak o sahaya girilerek içeriği görülebilir. Kısa not Ģeklinde bir veri tipi olarak tanımlayabiliriz.
5-) Logical (Mantıksal) Tip Veriler Mantıksal bir sahanın içeriği yalnızca doğru veya yanlıģ olabilir. BaĢka alternatif yoktur. (Doğru veya YanlıĢ) (True veya False) ( Yes veya No) VERĠ TABANI KÜTÜĞÜNÜN ANA PARÇALARI: a-) Veri Alanları Bir veri alanı, veri tabanı kütüğünün içinde hep aynı tipte veri tutan depolama birimidir. Örneğin öğrencilere ait sicil bilgilerinin saklandığı bir veri tabanı kütüğünde Yalnızca Öğrenci No.larının saklandığı alan adı OGRNO alanı Yalnızca Ġsimlerin saklandığı alan adı ADSOY alanı Yalnızca Telefonların saklandığı alan adı TELNO alanı Her bir alanda tek bir tipte veri depolanmaktadır. Bütün öğrenci numaraları tek bir alanda, bütün isimler tek bir alanda ve yine bütün telefonlar da tek bir alanda saklanmakta ve bu alanlara alanın içeriğine uygun olmayan veri girilmemektedir. b-) Veri Kayıtları Veri tabanı kütüğüne girilen bilgilerdir. Veri tabanı kütüğünde her kayıt tek bir kiģiye veya nesneye aittir. Örneğin dört adet ile ait bilgileri sakladığımız oldukça basit bir kütük olan il kütüğünü ele alalım.
Kayıt No ILKOD ILADI NUFUSU 1 01 ADANA 2100000 2 16 BURSA 2000000 3 34 ĠSTANBUL 8000000 4 67 ZONGULDAK 750000 Her bir kayıtta sadece tek bir kiģi veya nesneye ait bilgilerin depolanacağı kuralına uygun olarak, yukarıdaki örnekte birinci kaydın sadece ADANA iline, ikinci kaydın sadece BURSA iline üçüncü kaydın sadece ISTANBUL iline ve yine dördüncü kaydın ise sadece ZONGULDAK iline ait bilgileri içerdiğine dikkat edelim. Yine yukarıdaki örnekte ILKOD, ILADI, NUFUSU baģlıklarının her birisi ayrı birer VERĠ ALANI ve her bir ile ait bilgiler ise ayrı birer VERĠ KAYDI dır. BaĢka bir deyiģle yukarıdan aģağıya her sütün birer VERĠ ALANI iken, soldan sağa doğru her satır ise ayrı birer VERĠ KAYDI dır. VERĠ TABANI KÜTÜĞÜNÜN YAPISI: Veri tabanı yapısı, bir veri kütüğünün içindeki her alanın ayrıntılı tarifini içerir. Veri tabanı kütüğünün yapısı Ģu Ģekildedir: a-) Field Name (Alan Adı) b-) Type (Alan Tipi) c-) Width (Alan GeniĢliği) a-) Field Name (Alan Adı) : Alfabetik (A-Z arası)bir değerle baģlayıp sayısal bir değerle devam edebilir. Karakterler arasında _ sembolü ile ayırma yapılabilir. Bunların dıģındaki karakterler kabul edilmez. Aynı isim birden fazla alana verilemez. Aynı alan adı yazılırsa uyarılarak bir süre bekletilir. Bir alan adı için kullanılabilecek toplam karakter uzunluğu 10 karakterdir. Bir alan adının uzunluğu 128 byte ı, bir kayıttaki
alanların toplam uzunluğu ise 4000 byte ı geçemez. b-) Type (Alan Tipi) : BeĢ adet alan tipi vardır. Bunlar Character, Numeric, Date, Logical, Memo alan tipleridir. Alan tiplerini seçmek için tiplerin ilk harfini yazmamız veya ara çubuğuna (space bar) basmamız yeterlidir. c-) Width (Alan GeniĢliği) : Character 1-254 arası uzunlukta karakter alabilir Numeric 1-19 arası uzunlukta karakter alabilir Date 8 karakter uzunluğunu otomatik olarak alır Logical 1 karakter uzunluğunu otomatik olarak alır Memo 10 karakter uzunluğunu otomatik olarak alır 2-DBASE KOMUTLARI 1-) VERİ TABANI DOSYASI OLUŞTURMAK: DBASE ortamına girmek yani dbase i çalıştırmak için disk veya disketimizde aşağıdaki dosyaların bulunması gerekmektedir: DBASE.EXE DBASE.MSG DBASE.LD1 DBASE.OVL DBASEINL.OVL ASSIST.HLP HELP.DBS Yukarıdaki dosyalar disk veya disketimizde mevcut ise DBASE yazıp ENTER tuşuna basarak Dbase ortamına girebiliriz. CREATE komutunu kullanarak bir veri tabanı dosyası oluşturma işlemine başlayabiliriz. Komutun Genel yazılımı şu şekildedir:
CREATE dosya adı CREATE DENEME CREATE KART CREATE ORNEK CREATE ORNEK yazıp ENTER tuģuna bastığımızda karģımıza aģağıdaki türden bir ekran gelir: Field Name ISIM yazıp ENTER tuģuna basınız. Type bölümünde yine ENTER tuģuna basınız.width için 10 yazıp ENTER tuģuna basınız. Yaptığımız bu iģlemler ile ORNEK adlı veri tabanı kütüğünde ISIM adında ve en fazla 10 karakter uzunluğunda bilgi girilebilecek bir alan tanımlamıģ olduk. Böyle devam ederek aģağıdaki ekrana ulaģalım yani kütüğün diğer alanlarını da aģağıdaki örneğe uygun olarak tanımlayalım. Alan giriģ tanımları sona erince CTRL+END tuģlarına basarız. Press ENTER to confirm. Any other key to resume. Mesajında ENTER tuģuna basarsanız oluģturduğunuz veri tabanı kütüğünü (ORNEK.DBF adlı dosyayı) disk veya disketinize kaydetmiģ olursunuz. ENTER tuģundan baģka herhangi bir tuģa basarsanız
kayıt yapılmaz. Kayıt iģleminden sonra aģağıdaki mesaj ekranda görüntülenir. Input data records now? (Y/N) Y tuģuna basarsanız kütüğe bilgi girmeye baģlarsınız. N tuģuna basarsanız dbase nokta iletisine dönülür. CREATE komutu ile bir dosya oluģturduğumuzda, daha önce aynı adla oluģturulmuģ bir dosya varsa o dosyanın içeriği sıfırlanır. DBASE kullanarak oluģturduğumuz veri tabanı dosyalarının uzantısı DBF olur. 2- BĠR DOSYAYI AÇMAK Önceden oluģturulmuģ bir dosyayı içindeki bilgileri yok etmeden açmak için USE komutunu kullanabiliriz. Komutun genel yazılımı Ģu Ģekildedir: USE dosya adı USE DENEME USE KART USE ORNEK USE ORNEK yazıp ENTER tuģuna bastığımızda daha önceden CREATE komutunu kullanarak oluģturup sakladığımız ORNEK.DBF adlı veri dosyasını ana bellekte aktif hale getiririz, yani açarız. 3- DOSYAYA KAYIT ĠLAVE ETMEK: APPEND komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğe yeni bilgi ekleyebiliriz. USE ORNEK yazıp dosyamızı açtıktan sonra, APPEND yazıp ENTER
tuģuna basarak daha önce oluģturduğumuz ORNEK adındaki dosyaya bilgi ilave edelim ve dosyamızın içeriği aģağıdaki gibi olsun. 4- KAYITLARI GÖRÜNTÜLEMEK: DISPLAY (DISP) komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğün kayıtları ekran yada yazıcıdan görüntülenebilir. DISP yazıp ENTER tuģuna bastığımızda açık olan kütüğün o anda üzerinde bulunulan kaydı görüntülenir DISP record 3 yazıp ENTER tuģuna bastığımızda açık olan (aktif olan) kütüğün 3 numaralı kaydı görüntülenir DISP ALL yazıp ENTER tuģuna bastığımızda açık olan (aktif olan) kütüğün bütün kayıtları görüntülenir. DISP ALL ISIM,SOYAD,TELEFON yazıp ENTER tuģuna bastığımızda açık olan (aktif olan) kütüğün bütün kayıtlarının sadece, ISIM, SOYAD ve TELEFON bilgileri görüntülenir.kütüğün ISIM, SOYAD, TELEFON alanlarının dıģında baģka
alanları varsa, o alanlara ait bilgiler görüntülenmez. DISP record 3 ISIM,SOYAD,TELEFON yazıp ENTER tuģuna bastığımızda açık olan (aktif olan) kütüğün 3 nolu kaydının sadece, ISIM, SOYAD ve TELEFON bilgileri görüntülenir.kütüğün ISIM, SOYAD, TELEFON alanlarının dıģında baģka alanları varsa, o alanlara ait bilgiler görüntülenmez. DISP ALL ISIM,SOYAD,TELEFON FOR BAKIRKOY $ ADRES yazıp ENTER tuģuna bastığımızda açık olan (aktif olan) kütüğün bütün kayıtları içinden sadece ADRES alanında BAKIRKOY kelimesi geçen kayıtlara ait, ISIM, SOYAD ve TELEFON bilgileri görüntülenir.kütüğün ISIM, SOYAD, TELEFON alanlarının dıģında baģka alanları varsa, o alanlara ait bilgiler görüntülenmez. DISP ALL FOR SUBSTR(TELEFON,2,1)= 5 yazıp ENTER tuģuna bastığımızda açık olan kütüğün bütün kayıtları içinden sadece TELEFON alanının (telefon numaralarının) ikinci karakteri 5 olan kayıtlara ait tüm bilgiler görüntülenir. DISP ALL ISIM,SOYAD,TELEFON FOR SUBSTR(TELEFON,2,1)= 5 yazıp ENTER tuģuna bastığımızda açık olan kütüğün bütün kayıtları içinden sadece TELEFON alanının (telefon numaralarının) ikinci karakteri 5 olan kayıtların ISIM, SOYAD ve TELEFON bilgileri görüntülenir.kütüğün ISIM, SOYAD, TELEFON alanlarının dıģında baģka alanları varsa,o alanlara ait bilgiler görüntülenmez. 5- KAYITLARI LĠSTELEMEK: LIST komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğün kayıtları ekran yada yazıcıdan listelenebilir.
LIST yazıp ENTER tuģuna bastığımızda açık olan kütüğün bütün kayıtları listelenir. LIST ISIM,SOYAD,TELEFON yazıp ENTER tuşuna bastığımızda açık olan kütüğün bütün kayıtlarının sadece, ISIM, SOYAD ve TELEFON bilgileri listelenir. Kütüğün ISIM, SOYAD, TELEFON alanlarının dıģında baģka alanları varsa, o alanlara ait bilgiler listelenmez. 6- KAYITLARI GÖRÜNTÜLEMEK ve DEĞĠġTĠRMEK: EDIT komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğün kayıtlarını ekranda görüntüleyebilir ve kayıtlar üzerinde değiģiklikler yapabiliriz. EDIT yazıp ENTER tuģuna bastığımızda açık olan kütüğün, o anda aktif olan kaydını görüntüleyip üzerinde değiģiklikler yapabiliriz. Yani kütüğün baģındaysak ilk kaydı, kütüğün sonundaysak ise son kaydı görüntüleyip değiģtirebiliriz. EDIT record 3 yazıp ENTER tuģuna bastığımızda açık olan kütüğün, 3 nolu kaydını görüntüleyip üzerinde değiģiklikler yapabiliriz. 7- KAYITLARI GÖRÜNTÜLEMEK ve DEĞĠġTĠRMEK: BROWSE (BROWS) komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğü, alanları yan yana olarak ekranda listeleyip görüntüleyebilir ve kayıtlar üzerinde değiģiklikler yapabilir yada yeni kayıt giriģi yapabiliriz. BROWSE komutunu kullanabilmemiz için dosyada en azından bir adet kaydın mevcut olması gerekmektedir. Ġstenilen alanda düzeltme yapmak için kursoru
düzeltilecek alan üzerine getirip değiģiklik yapabilirsiniz. 8- ĠSTENĠLEN KAYDA GĠTMEK: GO komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğün istediğimiz kaydına gidebiliriz. GO 3 yazıp ENTER tuģuna bastığımızda açık olan kütüğün, 3 nolu kaydına gideriz. GO TOP yazıp ENTER tuģuna bastığımızda açık olan kütüğün, ĠLK kaydına (yani kütüğün baģına) gideriz. GO BOTTOM yazıp ENTER tuģuna bastığımızda açık olan kütüğün, SON kaydına (yani kütüğün sonuna) gideriz. SKIP komutunu kullanarak dbase nokta iletisi konumundayken istenildiği anda, ana bellekte o anda aktif olan yani açık olan kütüğün kayıtları arasında istediğimiz sayıda ĠLERĠ yada GERĠ gidebiliriz. SKIP 3 yazıp ENTER tuģuna bastığımızda açık olan kütükte o anda bulunduğumuz kayıttan 3 kayıt ileriye gideriz. SKIP -3 yazıp ENTER tuģuna bastığımızda açık olan kütükte o anda bulunduğumuz kayıttan 3 kayıt geriye gideriz. 9- KAYIT SİLMEK: DELETED (DELE) komutunu kullanarak dbase nokta iletisi konumundayken, ana bellekte o anda aktif olan yani açık olan kütüğün istediğimiz kaydını silinmek üzere iģaretleriz. Bunun anlamı silinen kaydın baģına * koymaktır. DELE komutu ile silinmek üzere iģaretlenen yani baģına * konulan
kayıtlar istenilirse dikkate alınır, istenilirse dikkate alınmaz. SET DELETED ON yazılırsa, DELETED komutu kullanılarak silinmek üzere iģaretlenmiģ olan kayıtlar iģlemlerde dikkate alınır. SET DELETED OFF yazılırsa, DELETED komutu kullanılarak silinmek üzere iģaretlenmiģ olan kayıtlar iģlemlerde dikkate alınmaz. DELE RECORD 3 yazıp ENTER tuģuna bastığımızda açık olan kütüğün, 3 nolu kaydını silinmek üzere iģaretleriz. 10- SĠLĠNEN KAYITLARI KURTARMAK: DELETED (DELE) komutu kullanılarak silinmek üzere iģaretlenmiģ kayıtları kurtarmak yani kayıtların baģındaki silinecek anlamına gelen * iģaretini kaldırmak için RECALL komutunu kullanırız. RECALL RECORD 3 yazıp ENTER tuģuna bastığımızda açık olan kütüğün, daha önce silinmek üzere DELE komutu ile iģaretlenmiģ 3 nolu kaydını eski haline getiririz yani baģındaki * iģaretini kaldırırız. 10- SĠLĠNEN KAYITLARI TAMAMEN YOK ETMEK: DELETED (DELE) komutu kullanılarak silinmek üzere iģaretlenmiģ kayıtları yok etmek yani RECALL komutu kullanılsa bile geri getirilemeyip dosyadan fiziksel olarak tamamen silinmesini sağlamak için PACK komutunu kullanırız. PACK yazıp ENTER tuģuna bastığımızda açık olan kütüğün, daha önce silinmek üzere DELE komutu ile iģaretlenmiģ bütün kayıtlarını bir daha geri getirilemeyecek
Ģekilde, tamamen yok ederiz. 11- BĠR DOSYANIN TÜM KAYITLARINI YOK ETMEK: Bir veri tabanı dosyasında bulunan bütün kayıtları dosyadan fiziksel olarak tamamen silmek yani dosyanın içindeki bütün kayıtları yok etmek için ZAP komutunu kullanırız. Bu komut dosyanın içindeki bütün kayıtları yok edeceği için çok dikkatle kullanılmalıdır. ZAP yazıp ENTER tuģuna bastığımızda açık olan kütüğün bütün kayıtlarını bir daha geri getirilemeyecek Ģekilde, tamamen yok ederiz. 12- BĠR DOSYANIN YAPISINI GÖRMEK: Bir dosyanın kayıt yapısını görmek için LIST STRU veya DISP STRU komutunu kullanırız.list STRU komutu ile DISP STRU komutu arasındaki fark çok sayıda alana sahip dosyaların yapısını görüntülerken ortaya çıkar. DISP STRU komutu bir ekran dolduğu zaman bir tuģa basmanız için beklerken, LIST STRU komutu beklemez ve dosyanın yapısını sonuna kadar döker bu arada bilgi ekrandan hızla geçeceği için dosya yapısının tamamını sağlıklı biçimde incelemekte zorlanabiliriz. DISP STRU yada LIST STRU yazıp ENTER tuģuna bastığımızda açık olan kütüğün kayıt yapısını görebiliriz. Yukarıdaki örnekte oluģturduğumuz ORNEK.DBF adlı dosyanın içeriğini bu komutları kullanarak görmek istesek aģağıdaki gibi bir görüntü elde ederiz.
13- BĠR DOSYANIN YAPISINI DEĞĠġTĠRMEK: Bir dosyanın yapısını daha önce girilen bilgilerimizi kaybetmeden değiģtirebilmek için MODI STRU komutunu kullanırız. Yukarıdaki örneği dikkate aldığımızda telefon numaralarını girerken 9 karakter uzunluğunun yetmediğini (ülke ve Ģehir kodlarını da yazınca) daha uzun telefon numaraları girmemiz gerektiğini düģünelim. Bu durumda TELEFON alanının uzunluğunu örneğin 15 e çıkarmak için MODI STRU komutunu kullanırız. 14- TÜM KAYITLARDA BĠR ALANIN YAPISINI DEĞĠġTĠRMEK: Veri tabanı dosyasındaki herhangi bir alandaki bütün kayıtlara ait bilgileri değiģtirmek için REPLACE komutunu kullanırız. Komutun genel yazılımı : REPLACE all DEĞĠġECEK ALAN ADI with NE ġekġlde DEĞĠġECEĞĠ REPLACE all BUNU değiģtir BU ġekġlde Yukarıdaki örneği dikkate aldığımızda telefon numaralarının tamamının baģına örneğin 3 getirmek için REPLACE all TELEFON with 3 +TELEFON yazıp ENTER tuģuna basmamız yeterlidir. 15- DOSYANIN BĠR KOPYASINI ALMAK:
Açık olan bir dosyanın baģka bir isimle yeni bir kopyasını almak için COPY TO komutunu kullanırız. Komutunu Genel Yazılımı Ģu Ģekildedir: COPY TO Yeni Dosya Adı 16- DOSYANIN YAPISINI BAŞKA BİR DOSYAYA KOPYALAMAK: Açık olan bir dosyanın içindeki kayıtlar( bilgiler) aktarılmadan, o dosyanın sadece yapısını (sadece alanlarının adlarını, tiplerini ve uzunluklarını) baģka bir dosyaya aktarmak için COPY STRUCTURE TO komutunu kullanırız. Komutunu Genel Yazılımı Ģu Ģekildedir: COPY STRUCTURE TO Yeni Dosya Adı 17- AÇIK OLAN BÜTÜN DOSYALARI KAPATMAK: Açık olan bütün dosyaları kapatmak için CLOSE ALL komutunu kullanırız. 18- EKRANI TEMĠZLEMEK: Ekranı temizlemek için CLEAR komutunu kullanırız. 19- DBASE ORTAMINDAN ÇIKMAK: Dbase ortamından çıkmak QUIT komutunu kullanırız. 3-DBU PROGRAMININ TANITIMI Database(veri) ve index dosyaları üzerinde iģlem yapmamızı sağlayan çok kullanıģlı bir yardımcı
programdır. Dbase nokta iletisinde komutlar kullanarak yapmak zorunda olduğumuz iģlemlerin hemen hemen tamamını bu programı kullanarak daha hızlı ve pratik yapma imkanımız vardır. DBU yazıp ENTER tuģuna bastığımızda karģımıza aģağıdakine benzer bir ekran gelecektir. F1- Help :Program ile ilgili yardım almak için kullanılır. F2- Open : Open-Database : Önceden oluģturulmuģ olan database kütüğünü (DBF) aktif hale getiriyor, yani açıyor. Open-Index : Önceden oluģturulmuģ olan index dosyasını (NTX veya NDX) aktif hale getiriyor, yani açıyor. Open-View : Önceden oluģturulmuģ olan görüntüyü açıyor.
F3- Create : Create-Database : Bir database (DBF) kütüğünü ilk defa oluģturabilir veya var olan bir kütüğün alanlarının yapısını (kütük yapısını) değiģtirebiliriz. Create-Index : Yeni index dosyası oluģturabilir veya var olan indeksi değiģtirebiliriz. F4- Save : Save-View : Görüntüyü saklamak için kullanırız. Save-Struct : Kütük yapısını saklamak için kullanırız. F5- Browse : Browse-Database : Aktif olan kütüğün bütün kayıtlarını üzerinde iģlem yapabilmemiz için bize gösterir. Kayıtlar üzerinde istediğimiz değiģiklikleri yapabildiğimiz gibi mevcut kayıtları silinmek üzere iģaretleyebilir ya da kütüğe yeni kayıt ekleyebiliriz.
Browse-View : Görüntüyü kullanarak değiģiklikler yapabiliriz. F6- Utility : Utility-Copy : Bir kütüğün istediğimiz koģulu sağlayan kayıtlarını yeni bir kütüğe aktarmak amacıyla kullanabiliriz. Utility-Apppend : ÇalıĢtığımız kütüğe baģka bir kütükten kayıt ekleyebiliriz. Utility-Replace : Kütüğün istediğimiz alanlarının içindeki bilgileri değiģtirebiliriz. Utility-Pack : Silinmek üzere iģaretlenmiģ kayıtları yok ederiz, tamamen sileriz. Utility-Zap : Kütüğün tüm kayıtalarını sileriz yani içindeki bilgileri yok ederiz. Utility-Run : Dos komutlarını DBU içindeyken çalıģtırabiliriz. F7- Move :
Move-Seek : Ġndeksi olan database dosyalarının kayıtları arasında arama yapabiliriz. Move-Goto : Ġstenilen kayda, kaydın record nosunu vererek ulaģabiliriz. Move-Locate : Ġndex kullanmadan belirli bir koģulu sağlayan kayıtlara ulaģmak için kullanırız Move-Skip : Kayıt atlamamızı sağlar. F8- Set : Set-Relation : Birden fazla DBF dosyasında ortak alanları sayesinde aynı anda hareket etmemizi sağlar. Set--Filter Set-Fields : Filtre oluģturur. : Kütüğün alanlarının sırasını (yerlerini) değiģtirir. 4-DBASE-CLIPPER PROGRAM KOMUTLARI
Örnek programlarda kullanacağımız veri tabanı kütüğü ORNEK.DBF aşağıda listelenmiştir. Field Name Type Width Dec ADSOY C 25 MAAS N 10 0 TARIH D 8 BKOD C 1 DO WHILE...ENDDO DÖNGÜ YAPISI DO WHILE <koşul> <komutlar> ENDDO DO WHILE <koşul> <komutlar> LOOP <komutlar> ENDDO
DO WHILE <koşul> <komutlar> EXIT <komutlar> ENDDO DO WHILE <koşul> DO WHILE <koşul> <komutlar> ENDDO ENDDO Koşul doğru olduğu sürece komutlar işleme girer.
LOOP deyimi ile DO WHILE döngüsü içinde Karşılaşılırsa, LOOP deyimi ile ENDDO arasındaki komutlar işleme alınmaz ve DO WHILE döngüsünün başına dönülür. EXIT deyimi ile DO WHILE döngüsü içinde Karşılaşılırsa, EXIT deyimi ile ENDDO arasındaki komutlar işleme alınmaz ve DO WHILE döngüsünün dışına çıkılır.
İçiçe DO WHILE döngüsü kullanıldığında Birbirini kesme olmaması gerekir. İşleme En içteki döngüden dışa doğru devam edilir. ÖRNEK-1 İsim ve soyadınızı ekranda 9 kere tekrarlayan ve her defasında kaçıncı kez isminizi tekrarladığını gösteren programı yazınız. CLEAR SET TALK OFF X=1 ADSOY= ERDİNÇ KAHRAMAN Do WHILE x<=9? adsoy,x x=x+1
ENDDO CLEAR : Ekranı temizler SET TALK OFF : Dbase yorumlayıcısında kullanılan komut ve deyimlerin sonuçlarını saklar.? : Değişkeni ekranda yazdırır. ÖRNEK-2 ORNEK.DBF kütüğündeki kayıtları kütük başından sonuna doğru, kayıt numaralarıyla beraber ekranda sıralayan programı yazınız. (Sadece adsoy alanını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( )? adsoy, RECNO( ) SKIP ENDDO RETURN USE ORNEK : ORNEK.DBF adlı dosyayı çağırır( Ana bellkte aktif hale getirir) GO TOP : Kütüğün en başına gider. SKIP : Bir kayıt ileriye doğru atlatır.
RETURN : Programı sonuna geldiğini ve artık çalışabileceğini gösterir. ÖRNEK-3 ORNEK.DBF kütüğündeki kayıtları kütük sonundan başına doğru, kayıt numaralarıyla beraber ekranda sıralayan programı yazınız. (Sadece adsoy alanını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO BOTTOM Do WHILE.NOT. BOF( )? adsoy, RECNO( ) SKIP -1 ENDDO RETURN GO BOTTOM : Kütüğün en sonuna gider. SKIP -1 : Bir kayıt geriye doğru atlatır. BOF ( ) : Kütük Başı ÖRNEK-4 1 1 1 2 1 3 2 1 2 2 2 3
3 1 3 2 3 3 Yukarıdaki matrisi içiçe döngü kullanarak döken programı yazınız. CLEAR SET TALK OFF x=1 y=1 Do WHILE x<=3? x, y Do WHILE y<=3 y=y+1 ENDDO x=x+1 y=1 ENDDO RETURN IF...ELSE...ENDIF KOŞUL YAPISI IF <koşul> <komutlar> ENDIF
IF <koşul> <komutlar1> ELSE <komutlar2> ENDIF Koşul doğruysa komutlar işleme girer, yanlışsa İşleme girmez. Koşul doğruysa <komutlar1> işleme girer ve ENDIF deyimi ile bloktan çıkılır. Koşul yanlışsa <komutlar2> işleme girer ve bloktan çıkılır.
ÖRNEK-1 ORNEK.DBF kütüğündeki bkod=1 olan kayıtları, kayıt numaralarıyla beraber ekrana döken programı yazınız. (Sadece adsoy ve bkod alanlarını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) IF BKOD= 1? adsoy, bkod, RECNO( ) ENDIF SKIP ENDDO RETURN ÖRNEK-2 ORNEK.DBF kütüğündeki maaşı 300.000.000 dan küçük olan kayıtları, kayıt numaralarıyla beraber ekrana döken programı yazınız. (Sadece adsoy ve maas alanlarını görüntüleyin).
CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) IF MAAS<300000000? adsoy, maas, RECNO( ) ENDIF SKIP ENDDO RETURN ÖRNEK-3 ORNEK.DBF kütüğündeki maaşı 300.000.000 dan küçük ve bkod=1 olan kayıtları, kayıt numaralarıyla beraber ekrana döken programı yazınız. (Sadece adsoy, bkod ve maas alanlarını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) IF MAAS<300000000 IF BKOD= 1 ENDIF SKIP? adsoy, bkod, maas, RECNO( ) ENDIF
ENDDO RETURN ÖRNEK-4 ORNEK.DBF kütüğünde kişinin maaşı 150.000.000 dan küçük veya 150.000.000 a eşitse kişinin adını soyadını ve maaşını görüntüleyip yanına AZ KAZANIYOR, ve kişinin maaşı 150.000.000 dan büyük ise kişinin adını soyadını ve maaşını görüntüleyip yanına İYİ KAZANIYOR yazan programı yazınız. (Sadece adsoy ve maas alanlarını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) IF MAAS=<150000000? adsoy, maas, AZ KAZANIYOR ELSE? adsoy, maas, İYİ KAZANIYOR ENDIF SKIP ENDDO RETURN
ÖRNEK-5 ORNEK.DBF kütüğünde sadece bkod=1 olan kayıtlar için kişinin maaşı 150.000.000 dan küçük veya 150.000.000 a eşitse kişinin adını soyadını ve maaşını görüntüleyip yanına AZ KAZANIYOR, ve kişinin maaşı 150.000.000 dan büyük ise kişinin adını soyadını ve maaşını görüntüleyip yanına İYİ KAZANIYOR yazan ve programı yazınız. (Sadece adsoy ve maas alanlarını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) IF BKOD= 1 IF MAAS=<150000000? adsoy, maas, AZ KAZANIYOR ELSE? adsoy, maas, İYİ KAZANIYOR ENDIF ENDIF SKIP ENDDO
RETURN ÖRNEK-6 ORNEK.DBF kütüğünde sadece bkod=1 olan kayıtlar için kişinin maaşı 150.000.000 dan küçük veya 150.000.000 a eşitse kişinin adını soyadını ve maaşını görüntüleyip yanına AZ KAZANIYOR, ve kişinin maaşı 150.000.000 dan büyük ise kişinin adını soyadını ve maaşını görüntüleyip yanına İYİ KAZANIYOR yazan ve bkod=1 den farklı olan kayıtlar için ise kişinin adını soyadını görüntüleyip yanına BKODU 1 DEN FARKLI ifadesini yazan programı yazınız. (Sadece adsoy ve maas alanlarını görüntüleyin). CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) IF BKOD= 1 IF MAAS=<150000000? adsoy, maas, AZ KAZANIYOR ELSE? adsoy, maas, İYİ KAZANIYOR ENDIF
ELSE? adsoy, maas, BKODU 1 DEN FARKLI ENDIF SKIP ENDDO RETURN
DO CASE...CASE...ENDCASE İçiçe IF deyimleri ile birden fazla koşulu kontrol edebildiğimiz gibi, aynı işlemi DO CASE...ENDCASE blokları ile de yapabiliriz. DO CASE bloklarında tanımlanan koşullardan sadece birisi doğruysa, onunla ilgili deyimler işleme girer. Kullanılması içiçe IF deyimlerinden daha kolaydır. Program işlemesi sırasında da daha hızlı çalışır. DO CASE CASE <koşul-1> <komutlar-1> CASE <koşul-2> <komutlar-2>......... CASE <koşul-n> <komutlar-n> [OTHERWISE]
<komutlar-x> ENDCASE Koşul-1 doğruysa komutlar-1 Koşul-2 doğruysa komutlar-2 Koşul-n doğruysa komutlar-n işleme girer. OTHERWISE hiçbir koşulun sağlanamaması durumunda işleme girer ve komutlar-x çalışır. ÖRNEK-1 ORNEK.DBF kütüğünde bkod alanını kullanarak kişilerin adlarını soyadlarını ve unvanlarını döken programı yazınız. bkod =1 ise ünvanı MÜDÜR bkod =2 ise ünvanı ŞEF bkod =3 ise ünvanı MEMUR CLEAR SET TALK OFF USE ORNEK GO TOP Do WHILE.NOT. EOF( ) DO CASE CASE bkod= 1 YAZ= MÜDÜR CASE bkod= 2 YAZ= ŞEF CASE bkod= 3 YAZ= MEMUR ENDCASE
SKIP? adsoy, YAZ ENDDO RETURN