https://www.youtube.com/watch?v=YYAEDqlW8oo&t=1881s

DataSnap JsonReflect Nedir?

Veri alışverişini Json datasetler üzerinden yapmamızı sağlayan sistem. Bize veri alışverişinin başka uygulamalar tarafından da okunabilir olmasını karşı tarafa Json gönderdiğimiz için bunu başka bir uygulamada açma avantajını sağlar.

Sunucumuzu açarak başlayalım. File >New >Others >açılan ekranda >DataSnap açıyoruz>DataSnap REST Application>Windows>Stand- alone GUI application>VCL application> test porta tıklayarak boş olup olmadığını kontrol ediyoruz> Mobile Connectors – Server Module – Simplified Dispatcher seçiyoruz> TDSServerModule > Kayıt yerimizi seçiyoruz>Finish.Delphi bizim için DataSnapREST sunucusu oluşturdu Çalıştırdığımızda start’a tıkladığımızda artık web browser’da kontrol edebileceğimiz bir uygulamamız var. Projeyi kaydedelim. FormUnit1.pas→UMainSrv , diğerlerini aynı isimleriyle kaydediyoruz. ServerMethodsUnıt1> Palette> FDConnection – FDQuery -FDGUIxWaitCursor- FDStanStorageBinLink. FDConnection’a çift tıklayarak Database’imizi seçiyoruz. FDQuery’e çift tıklayarak tablomuzun içini dolduruyoruz. select * from cari >execute alt kısımda tablomuzun geldiğini görüyoruz. FDQuery >properties> Login prompt >False > FDQuery >Name→qCari. Kod kısmına gidiyoruz.


procedure TServerMethods1.DSServerModuleDestory(Sender : TObject);
begin
FDConnection1.Close;
end;

Artık FireDAC işlemlerine başlayabiliriz. Uses kısmına →Data.FireDACJSONReflect ekliyoruz. Public kısmına bir adet function yazıyoruz →function CariListele : TFDJSONDataSets. Shift +Ctrl +C ile kod satırına gidiyoruz. Yazacağımız kod JsonDataSetten ve firedac queryden gelen veriyi alıcak JsonDatSet’e çevirip result olarak karşı tarafa verecek.


function TServerMethods1.CariListele:TFDJSONDataSets;
begin
  qCari.Active :=False;
  Result :=TFDJSONDataSetsWriter.ListAdd(Result,’cari’,qCari);
end;

Çalıştırıyoruz >start open browser > Server Function >TServerMethods1 >CariListele >execute. JsonDataSet olarak result’ımız dönmüş oluyor. Fazladan veriler göreceksiniz dataset olduğu için bazı eklemeler çıkartmalar yapması gerekiyor. JsonDataSet modunda döndüğü için siz bu veriyi sisteme bu şekilde kurarsanız paylaştığınızda karşı taraftaki kişi bunu parse ettiği zaman okuyabilir olması lazım.

Bir tane daha function oluşturalım. Bu seferde sunucudan bir bilgi çektik birde karşı tarafa yazmamız gerekebilir bunu update fonksiyonu ile yapıyoruz. Public’in altına funtionumuzu yazalım→ function CariGuncelle(list:TFDJSONDeltas): Boolean. Shift + Ctrl +C ile otomatik açılan satırlarda kodumuzu yazmaya başlayabiliriz.


function TServerMethods1.CariGuncelle(List:TFDJSONDeltas): Boolean;
var
  apply: IFDJSONDeltasApply
begin
  Result:=False;
  apply:= TFDJSONDeltasApplyUpdates.Create(List);
  apply.ApplyUpdates(‘cari’, qCari.Command);
  if apply.Errors.Create.Count >0 then
    raise Exception.Create(apply.Errors.Strings.Text);
    Result:= True;
end;

Sunucu kısmında yapacağımız işlemler bu kadar. Client tarafını yazarken sunucunun mutlaka çalışıyor olması gerekiyor. Uygulamamızı çalıştıralım ve client tarafını yazmaya başlayabiliriz. ProjectGroup1’e sağ tuş> add new project > Delphi > Multi Device Application >Blank Application. Uygulamamızı kaydediyoruz. Yeni klasör ekliyoruz→clnt, Unit2.pas→uMainClnt, Project1.dproj→JsonReflectClnt, ProjectGroup1.grouproj→pgjsonReflect şeklinde isimlendirerek kaydediyoruz. Client Module ekleyeceğiz. File >New >Others >DataSnap REST> Client Module →bunu eklerken server uygulaması açık olmalı. Açılan ekranda Local Server>Next >değişiklik yapmadan next >Test Connection >bağlantı başarılı ise finish. DataSnapServer ile kolay haberleşebilmemiz için delphi bizim için ekledi bunu da kaydediyoruz. Use unit ile clientmodule’i ekliyoruz. ClientModuleUnit2’ye >Palette >FDMemtable – FDStanStorageBinLink – FDGUIxWaitCursor ekliyoruz. uMainClnt kısmına >palette >Toolbar- Grid -BindNavigator ekliyoruz. BindNavigator >align >bottom. Grid>align >client. Live Bindings Designerdan Grid ile MemTable’ı ve sonrada Navigator’ü bağlıyoruz. Kod kısmına geçiyoruz. Uses kısmına→ data.FireDACJSONReflect; yazıyoruz. ClientModuleUnit2 kısmının uses kısmınada →data.FireDACJSONReflect; yazıyoruz.ClientModuleUnit2 de FDMemtable >name →memCari. Public kısmına →function CariAl: Boolean; Shift + Ctrl + C ile kod kısmına iniyoruz.


function TClientModule2.CariAl : Boolean,
begin
  var
  list:TFDJSONDataSets
  memCari.Close;
  list:ServerMethods1.Client.CariListele();
  memCari.AppendData(TFDJSONDataSetsReader.GetListValueByName(list,‘cari’));
  memCari.CachedUpdates:=True;
  memCari.Open;
end;

uMainClnt’e arayüz için eklemeler yapacağız. Toolbar’ın içine Palette > Button >name →btnCariListele >text →Cari Listele – align>left. Buttona çift tıklıyoruz.


procedure TForm2.btnCariListeleClick (Sender : TObject);
begin
  ClientModule2.CariAl;
end;
end.

Çalıştırıyoruz CariListele butonuna tıklıyoruz ve verileri görüyoruz. Palette>Button ekliyoruz. Button >align >right. Public kısmına function oluşturuyoruz →function CariGuncelle; Shift +Ctrl +C ile kod satırına iniyoruz.


procedure  Tform2.CariGuncelle ;
var
  deltas:TFDJSONDeltas;
begin
  try
  ClientModule2.memCari.Post;
  except
  end;
  deltas:= TFDJSONDeltasWriter.ListAdd(deltas,’cari’, ClientModule2.memCari);
  ClientModule2.ServerMethods1Client.CariGuncelle(deltas);
  ClientModule2.CariAL;
  end;
end.

Button1 >name →btmGuncelle(oluşturduğumuz fonksiyonu buradan çağırıyoruz.) Çift tıklıyoruz.


procedure TForm2.btnGuncelleClick(Sender:TObject);
begin
  CariGuncelle;
end;

Çalıştırıyoruz, Cari Listele butonuna tıklıyoruz veriler geliyor. Navigatorden ekleme(+) yapıyoruz btnGuncelle ile gönderiyoruz karşıya. Uygulamayı kapatıp açıyoruz eklediğimiz kaydın geldiğini görüyoruz.

Firma Bilgileri


Camart Araştırma Geliştirme Yazılım Otomasyon San. Tic.Ltd. Şti.

Mersis no : 3356 7133 6775 9746

info@camartarge.com

Vergi Dairse / no : Pamukkale v.d. 196 074 62 30

Tel : +90 850 333 80 20

İban (TL): TR30 0020 5000 0085 3809 5000 03

Arge :

Pamukkale Üniversitesi teknoloji geliştirme bölgesi (Teknokent)

Kınıklı mah. Hüsseyin yılmaz cad. no 67

idari bina d blok no g05 Pamukkale / Denizli

İban (USD):TR03 0020 5000 0085 3809 5001 01


Barbaros Mah. Halk Cad. No 47 / 2 34746 Ataşehir İstanbul

İban (Euro):TR73 0020 5000 0085 3809 5001 02

 
Harita verileri ©2015 Google

İletişim

Facebook Pinterest Twitter Google+ Dribbble