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.

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.