UniDAC ile dBase veri tabanı kullanımı (Android, iOS, MacOS, Win32, Win64)

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
ertank
Kıdemli Üye
Mesajlar: 1650
Kayıt: 12 Eyl 2015 12:45

UniDAC ile dBase veri tabanı kullanımı (Android, iOS, MacOS, Win32, Win64)

Mesaj gönderen ertank »

Veri tabanı ve bileşenleri konusunda uzman Devart (https://www.devart.com) firmasının ürünü olan UniDAC (https://www.devart.com/unidac/) farklı veri tabanı sistemlerini tek şekilde bir kod kullanarak erişim yapabilmenizi sağlar. Delphi 7 ve sonrası tüm Delphi sürümlerini desteklemektedir. Ancak bazı özellikler sadece belli Delphi sürümleri ile çalışmaktadır. Örneğin en son çıkan Delphi 10.3.3 kullanmadığınız sürece UniDAC Android 64Bit desteğini kullanamazsınız.

UniDAC uzun bir süredir “Direk” erişim imkânı vermektedir. Direk erişim ile kasıt herhangi bir veri tabanı sürücüsü gerektirmeden. TCP/IP veya direk veri tabanı dosyasını/dosyalarını kullanmak anlamına gelmektedir. UniDAC bir süredir dBase veri tabanı dosyalarını direk kullanmaya izin vermektedir. dBase her ne kadar eski bir veri tabanı formatı diye düşünülse de sunucu gerektirmeyen ve çok hızlı çalışan bir yapısı vardır. Aynı şekilde yıllar içinde formatı güncellenmiş ve yeniliklere daha uyumlu hale getirilmiştir. Mesela SQLite içinde olmayan tarih formatı desteği mevcuttur. Yine SQLite içinde olmayan NUMERIC(10,5) şeklindeki parasal alan kullanımına yönelik tanımlamalar için de desteği mevcuttur. SQLite ondalıklı rakam olarak sadece Double desteği vermektedir.

UniDAC avantajlarından birisi birden fazla platformda aynı şekilde kullanıma izin vermesidir. Dolayısıyla desteklediği dosya tabanlı database sistemlerinin tamamını direk erişim şeklinde destekler ve Android, iOS, MacOS, Win32, Win64 platformlarında kullanmak mümkündür.

Andoid platformunda için çalışma zamanında bir dBase veri tabanı oluşturmak istersek ekteki örnek projede oluğu gibi bunu yapmamız mümkündür.

Örnek Delphi 10.3.3 ile hazırlanmış ve anlaşılır olması için dizayn kısmında fare yardımı ile yapılabilecek işlemlerin tamamı kod satırı ile ve mümkün olduğunca açıklama ekleyerek paylaşılmıştır. Ayrıca UniDAC’e özel bazı prosedür ve fonksiyon kullanımlarını da içermektedir.

İpucu: Çalışma zamanında sorun yaşamamak için UniConnection.Options.KeepDesignConnected parametresini dizayn aşamasında False yapmakta fayda vardır.

Veri tabanı bağlantılarının kullanıcıya ekran görüntüsü gelmeden hazır olması için OnCreate() olayı kullanılmış ve tüm gerekli işlemler burada tamamlanmıştır. Yeni nesil Android ve iOS uygulamalarda "SharedDocuments" gibi ortak dizine veri yazmak isterseniz çalışma zamanında özel olarak izin kontrolü yapılması gerekmektedir. Örnek uygulama konuyu detaylandırmamak için yetkisi bulunan yerde veri tabanı oluşturmaktadır.

Ekranda tek satırda en az iki adet bilgi gösterilmek istenildiği için ListView nesneleri ItemAppearance.ItemAppearance özelliğinden ListItemRightDetail şeklinde ayarlanmıştır.

Uygulama çalıştığı zaman ekranın üst kısımda stok tablosu bilgilerini göstermektedir. Ekranın alt kısmında ise depo bilgilerini göstermektedir. Eğer stok bilgilerinden herhangi bir tanesi üzerine tıklar/dokunursanız ilgili stok kaleminin KDV rakamını görebilirsiniz.

Birçok Delphi programcısı veri tabanı işlemleri yaparken alan değerlerini okuma ve yazma işlemini Variant türündeki

Kod: Tümünü seç

UniTable1.FieldByName(‘vat’).Value
şeklinde yapılmamasını. Bunun yerine veri türü belli olan

Kod: Tümünü seç

UniTable1.FieldByName(‘vat’).AsString
UniTable1.FieldByName(‘vat’).AsFloat
benzeri erişim yöntemlerini kullanılmasını tavsiye etmektedir. UniDAC bu anlamda bize veri tabanı içindeki veri türü rakamsal (double, integer, vb) olsa dahi AsString şeklinde erişim imkânı sunmaktadır. Ekteki projede aşağıdaki satır bunun bir örneğini sergilemektedir.

Kod: Tümünü seç

ShowMessage('KDV Oranı: ' + UniTable1.FieldByName('vat').AsString);
Tablo içinde vat kolonu numeric(20,6) şeklinde tanımlanmış olmasına rağmen içinde FloatToStr() fonksiyonuna gerek duymadan direk string değer okuyabiliyoruz.

FMX platformunda LiveBinding kullanımı veri tabanı işlemlerini yavaşlattığı bilinmektedir. Bunu önlemek için örnek kullanıcıya gösterilecek bilgileri kod yazarak göstermiştir. Kullanıcının hangi kayıt ile işlem yapması gerektiğini anlamak için OnItemClick() olayı kullanılmış ve UniTable.RecNo özelliğinden faydalanılmıştır. UniDAC.RecNo hem okunabilir hem yazılabilir bir parametredir. Okuduğumuzda veri içinde hangi numaralı kayıtta olduğumuzu bildirir. Yazdığımızda ise hızlı bir şekilde veri içinde ilgili satıra gider. Böylece ListView içinde kendimize özel bir dizayn yapıp “id”, “code” veya benzer bilgileri bu dizayn içinde belli bir yerde saklama zorunluluğu ortadan kalkmaktadır.

UniDAC’in tüm platformları destekliyor olmasına istinaden tüm bunları yaptıktan sonra hiçbir kod değişikliği yapmadan farklı platformlar için uygulamayı derleyip bu platformlarda çalıştırabilirsiniz. Örnek uygulamada değinilmeyen kayıt değişikliği, kayıt arama, sorgu çalıştırma gibi özelliklerin tamamı dBase formatı için desteklenmektedir.

UniDAC dBase desteği ile ilgili genel bilgi için: https://www.devart.com/unidac/features.html#dbf
UniDAC dBase kullanım bilgileri için: https://www.devart.com/unidac/docs/using-dbf.htm
Dosya ekleri
UniDAC_dBase_Android.7z
(4.18 KiB) 229 kere indirildi
Cevapla