Mayıs 25

Lazarus, Firebird, Brook Framework, REST

Bir süre önce grupta da tartışılan android ya da el terminalinden  firebird bağlantısı Android Günlerinde bir kaç geliştiriciye sordum ve genel olarak verdikleri cevap bu cihazların veritabanı sistemlerine direk bağlanıp oradan bilgi çekip işleyecek kadar güce sahip olmadıkları ve bu yaklaşımın yanlış olduğuydu. (Doğrudur yanlıştır ben onların yalancısıyım) Önerileri ise sunucuda gelen taleplere cevap veren bir yazılım olsun ve web üzerinden basit HTTP işlemleriyle bilgi alıp göndermeyi önerdiler. Bu işler nasıl yapılır diye araştırırken REST ile karşılaştım. REST kısaca istemci ve sunucu arasında HTTP protokolü ve PUT, GET, POST ve DELETE komutlarını kullanarak veri tabanıyla iletişimi sağlayan bir kavram. (Standart ya da bir yazılım değil çünkü herkes kendi rest yazılımını kendi geliştiriyor. Standart olan put, get, delete, post komutlarının kullanımı) JAVA, PHP, Python gibi dillerde bu işler tabi çok kolay hemen moduller vs. bulabiliyorsunuz. Peki inatla pascal olsun bizden olsun derseniz ne yapacaksınız ? Burada kullanacağınız teknoloji tabi ki eskilerden kalma cgi-bin. Peki nasıl ? Bunun için önce xampp  paketini kuruyoruz ve bilgisayarımızda Apache, mysql, php, tomcat gibi yazılımların hepsi bir anda kuruluyor ve control center yazılımıyla istediğiniz sunucuları açmaya başlıyorsunuz.

Continue reading

Ocak 11

TurboBird 1.0

Turbobird,  çok sevdiğim iki yazılımın içe içe hali. Firebird için Lazarus ile yazılmış yönetim aracı. Sade basit ama iş görür bir yazılım.  Hatta göz boyama gibi çabaları olmadığı içinde son derece hızlı çalışıyor.

Bu arada fırsat buldukça firebird ile ilgilide edindiğim bilgileri paylaşacağım. Şuan için bildiklerim bilmediklerimin kdv.si sayılmaz ama umarım hem size hem bana faydası olur.

 

Turbobird

Uygulamanın web sitesi : Turbobird 1.0

 

Düzeltme : Daha önce bildirdiğim Türkçe karakter probleminin deneme yaptığım veri dosyasıyla ilgili olduğunu görüp sıfırdan oluşturulan kayıtlarda bu tür bir sorunla karşılaşılmamıştır.

Mart 30

Firebird’e Yürüyen Bakiye (Running Sum)

Merhabalar, yürüyen bakiye muhasebe yazılımlarında sıkça kullanılan borç ve alacağın farkının bir önceki farkla toplanarak ilerlemesidir. Bu sayede her satırda ki bakiye toplam borçdan toplam alacağın farkını gösterir.

Bu işlemin çeşitli yöntemleri vardır ve benim genelde karşılaştığım index numarasına göre bir sıralamada, her satırda sahip olunan index numarasından küçük kayıtların borç ve alacak farklarının toplamı bakiye olarak gözükür.  Ama ne yazık ki bu çözüm benim işime yaramadı çünkü ben index numarasına göre değil fatura tarihine göre bir sıralama yapıyorum ve sonradan girilen bir kayıt daha önceki bir kaydın önüne geçebiliyor bu yüzden farklı bir sorgu ile bu işi çözdüm.

Öncelikle firebirdde #bky adında kullanıcı tanımlı bir değişken açıp içeriğini sıfıra eşitledim.

SELECT rdb$set_context( 'USER_TRANSACTION' ,'bky#' ,0) from rdb$database;

daha sonra  sorguda bu değişkeni önce çağırıp sonra da  çağırdığım değere borç ekleyip alacak çıkardım.

SELECT
 TARIH,KOD, FIRMA, ACIKLAMA,BORC, ALACAK,
 coalesce(CAST(rdb$get_context('USER_TRANSACTION','bky#' )AS decimal(10,4) ),0) as Bakiye,
 CAST(rdb$set_context('USER_TRANSACTION','bky#',coalesce(CAST(rdb$get_context('USER_TRANSACTION','bky#' )AS decimal(10,4) ),0)+ BORC - ALACAK )AS decimal(10,2) )as Set_Bakiye
 FROM
 CARI_GENEL WHERE KOD like '34099' ORDER BY TARIH ASC, aciklama asc

Burada kullanılan CAST komutu gelen sonucun türünü değiştirir. COALESCE ise NULL olan bir değer için belirttiğiniz değeri girer. Ben bu sorguda sıfır değerini girdim ama istenirse farklı bir tablodan istenen kayıt çekilerek değişik çözümlerde de kullanılabilinir.

Aralık 31

DB Designer FORK

 

DB Designer FORK, DB Designer 4 programını temel alarak geliştirilmiş açık kaynak kodlu görsel veri tabanı tasarım programıdır.

Program uzun zamandır geliştirilmeyen bir program. Son güncelleme 2010 yılının nisan ayına ait. Ama bu sizi vazgeçirmesin çünkü programın gelmiş olduğu noktada sonra derece başarılı.

Programda tamamen sürükle bırak mantığıyla, adeta herhangi bir şema programında şema çizer gibi veritabanınızın tasarımını yapıp (bazı veritabanları için)  anında güncelleme işlemi yapabiliyorsunuz.

Ne yazık ki bu veritabanlarına firebird dahil değil. Bu benim açımdan en büyük eksikliği ama firebird’e uyumlu bir şekilde SQL olarak dışarı çıkış verebilmeside işimi görüyor.

 

 

 

Aralık 18

Lazarus’da ZeosLIB Kurulumu

Merhabalar, uzun zamandır  ne yazık ki herhangi bir yazı ya da uygulama siteye ekleyemiyorum. Bu durum yıl sonuna kadar istemesemde böyle devam etmek zorunda kalacak. Yıl başından sonra yine güzel yazılarla siteyi zenginleştirmeye uğraşacağım.

Bu yazıda size zeoslib gibi çok kullanışlı bir veritabanı bileşen setinin kurulumunu anlatacağım.  Kurulum için öncelikle  http://zeosdownload.firmos.at/downloads/snapshots/ adresinden en son stabil sürüm olan http://zeosdownload.firmos.at/downloads/snapshots/ZEOSLIB_STABLE_REV922.zip dosyasını indiriyoruz ve lazarus klasörünün altında components klasörünün altına zeoslib adında bir klasör açıp içerisine kuruyoruz.

Continue reading

Ağustos 29

ZeosLIB + FireBIRD Edit – Post hatası

Delphi’de firebird 2.1 ve zeoslib 7.0.0 Alpha kullanarak geliştirdiğim bir proje var ve artık son safhalarına doğru ilerliyor. Amma ve lakin ilk günden bu yana çözemediğim bir sıkıntı vardı. Programın herşeyi güzel firebird ile bağlantısı, kayıt eklemesi, silmesi, sql sorguları herşey güzel. Fakat herhangi bir kaydı edit yapıp ardından post yapınca “Error Code – 104 invalid token” diye hata mesajı veriyor. Ara tara bi türlü çözemedim, zeoslib’den de çok şüphelenmiyorum adam 7. versiyonu böyle hata yapmış olamazlar diyordum ki yapmışlar …

Continue reading

Haziran 26

Firebird’de Stored Procedure İçerisinde SQL Kullanımı

Benim için günlük aynı zamanda not defterim gibi bir yerde de
tuttuğu için  başıma gelen internette arayıp taradığım ya da kitaplarda
bulduğum bazı çözümleri burada paylaşacağım. İşte bunlardan biri şuanda
ciddi oranda cebelleştiğim Firebird içerisinde Stored Procedure ve
SQL kullanımı. Neyse lafı uzatmayım Firebird yazılımını kullanmak için
Firebird Maestro kullanıyorum daha çok derinlemesine araştırmadım kurdum
baktım çalışıyor işime devam ettim.
Yazılımda kolayca Stored Procedure tanımlana biliyor ama stored procedure’ün
içerisine SQL tanımı giremiyorsunuz (tabi bu tamamen firebird ile ilgili programla
alâkası yok) Procedure içerisine SQL girmek için
EXECUTE STATEMENT
komutu kullanılıyor ve komutun kullanımı ;

 

EXECUTE STATEMENT ‘ Select * From TABLO_ADI’ şeklinde.

Peki herşey gayet güzelde komut (‘) işaretiyle başlıyor ve aynı işareti SQL de kullanıyor
bu durumda ne yapacağız ?
Yapacak işlem kolay SQL içerisinde (‘) işareti yerine (?) kullanacağız. Bunuda ;

EXECUTE STATEMENT ' Select * From TABLO_ADI where ADI =?ARANACAK_KELIME? '
şeklinde yaparak sorunu çözmüş oluyoruz.