Mengedit Data secara Lookup dari dbGrid




Okeh untuk Tips and Trick Delphi kali ini saya mau share bagaimana Mengedit Data secara Lookup dari dbGrid.ngerti gak masudnya
biar mudeng/ngerti berikut screen shootnya:


keren gak??pake skin tuh..modelnya cantiik lagi,
Form ini dalah screen shoot dari Form Data Member dari dayPerpus 2.0 ..so tunggu yah...

dengan cara ini pengeditan bisa langsung diipilih pada dbGrid..bisasanya sih orang-orang kalo mau ngedit suka nambahin Form baru..halah klo saya males,
untuk isi dari dropdown itu sendiri kita akan me retrieve dari tabel lain...pengen tau gimana caranya???
klik dan terusin bacanya...

Oke,di asumsikan anda mempunyai Tabel Member dan Tabel Kelas.untuk mengambil data dari tabel kelas dan memasukannya ke dbGrid data Member berikut adalah Penjelasannya...:

pada Properties Column di komponent dbGrid ada yang namanya properties PickList yang bertipe Strings.
prinsipnya kita akan memasukan field Kelas dari Tabel kelas ke Column 3 dari dbGrid,,sebelumnya kita buat Procedure PickList dulu pada Klausa Private (terus jar?) terus Codingnya begini nih:


procedure TForm3.Picklist;
var
i:Word;
begin

//memastikan pointer tabel kelas berada di record pertama
dm1.QKelas.First; 

//pengulangan or Looping untuk memasukan record2 dari field kelas ke dbGrid colomn ke 3
for i:=0 to dm1.QKelas.RecordCount-1 do begin
dbgrid1.Columns[3].PickList.add(dm1.QKelas.fieldbyname('Kelas').

AsString);
dm1.QKelas.Next;
end;//end looping
end;
end.


,

terima kasih..Semoga bermanfaat
"TETAP SEMANGAT NGODING YAH!!!"
Read more

Optimisasi dbGrid III


"Just Sharing Knowledge on the web"

 Melanjutkan Optimisasi dbGrid dari artikel sebelumnya,sekarang kita lanjutkan Optimisasi dbGrid nya,yaitu menampilkan data bertipe Memo dan mengedit nya secara Popup.
screenshoot nya sperti gambar di atas.
kita langsung aja deh ke codingnya.

Seperti biasa saya asumsikan anda mempunyai sebuah tabel dengan salah satu fieldnya bertipe memo.

Menampilkan data field bertipe memo
Secara default jika kita memiliki sebuah field bertipe memo maka field tersebut hanya akan bertuliskan "MEMO" di dbGrid,untuk menampilkan bukanlah hal yang sulit,kita hanya menuliskan 1 baris code pada event OnGetText pada fieldnya.untuk memperjelas berikut screen shootnya:


lalu ketikan code berikut:


procedure Tdm.QBukuDeskripsiGetText(Sender: TField; var Text: String;
  DisplayText: Boolean);
begin
text:=copy(qbuku.fieldbyname('Deskripsi').asstring,1,30);
end;

gampangkan?hanya dengan fungsi copy sekarang field bertipe memo sudah tampil di dbGrid.
lalu bagaimana untukmengeditnya secara Popup(itu lho jendela yang muncul keluar),jawabannya adalah mudah.yang diperlukan adalah sebuah Form untuk melakukan pengeditan,tambahkan saja di dalam Form itu sebuah Memo,Panel dan button kurang lebih seperti screeen shoot di atas.jangan lupa untuk merubahnya Formnya menjadi Available Form di Project Options. pada event onDblClick di dbGrid tambahkan code berikut:

procedure TForm2.DBGrid1DblClick(Sender: TObject);
begin
if dbgrid1.SelectedField=dm.QBuku.FieldByName('Deskripsi') then
With TForm7.Create(nil) do
try
memo1.Text:=dm.QBuku.fieldbyname('Deskripsi').AsString;
Showmodal;
dm.QBuku.Edit;
dm.QBuku.FieldByName('Deskripsi').AsString:=memo1.Text;
Finally Form7.Free; end;
end;

*Form7 adalah Form yang dibuat tadi.
saya rasa tidak perlu ditambahkan commentar pada code nya karena sangat mudah dipahami ya kan?.
Read more

Sekilas ClientDataSet


Nih Ada Sedikit Contoh Penggunaan Component ClientDataSet,ClientDataSet sangat berguna untuk Aplikasi Database untuk Arsitektur Client Server atau bahkan Multitier.Client dataSet bekerja sangat cepat karena bekerja di level Client dan mengupdatekannya ke Server dengan Perintah ApplyUpdates,dan penggunaan ClientDataSet juga sangat Mudah!!...Mau tahu?terusin bacanya..

Tutor lengkapnya ada di E-Book yang lalu.
berikut Screen Shoot Contoh Sederhana Programnya



Untuk menjalankan Program ini tentu saja anda harus menginstall Interbase Server dulu,karena saya menggunakan Database Interbase Server.anda dapat menDownload nya di DropDown Menu SideBar kanan Blog ini.
Disertakan juga Source Codenya+Comentar program agar lebih jelas.



-Apply updates ClientDataSet

Semoga  bermanfaat,


-Stop Piracy!
-Stop Global warming!
-Staw Away from Drugs!

Semoga bermanfaat !^__^
Read more

Configure freepascal Fast CGI application with nginx




Berawal dari gak mau pake CGI dan Apache yg boros memory...saya cari2 web server yang ringan dan low memory dan akhirnya pilihan jatuh pada nginx web server.
configure fast cgi di nginx tidak terlalu sulit bahkan lebih mudah dari pada fast cgi di apache, oke lets do it.

Sebagai demo Kita akan memakai contoh CGI application dari lazarus yaitu \components\fpweb\demo\echo . demo ini adalah CGI application tapi dengan mudah kita akan ubah menjadi fast cgi application.
buka echo.lpr dan rubah menjadi sebagai berikut :
program echo;

{$mode objfpc}{$H+}

uses
  fpWeb,fpfCGI, wmecho; // <== ubah fpcgi menjadi fpfcgi.

begin
  Application.Initialize;
  Application.Port:=9090; //<== tambahkan Port , Fast CGI app kita akan listening di port ini.
  Application.CreateForm(TEchoModule, EchoModule);
  Application.Run;
end. 
cool bukan?
sekarang kita buka file configuration dari nginx   /conf/nginx.conf
di root http kita tambahkan directive "upstream fastcgi"
    upstream fastcgi {
      ip_hash;
      server 127.0.0.1:9090; //<== address dan port dari fast cgi application
     // kita bisa tambahkan server lain untuk load balancing eg : server
    }
lalu di dalam directive "server" :
location /pas { // <== berarti http://example.com/pas
    fastcgi_pass fastcgi; //<== lihat upstream
    fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
    include fastcgi_params;
}
 simpan.
fast cgi app kita harus dijalankan terlebih dahulu sebelum ada request ke nginx.
simple double klik fast cgi app td.
lalu reload nginx (nginx -s reload) .pada browser ketik "http://localhost/pas".

viola!!

Read more

dayPerpus 2.0 Sistem Informasi Perpustakaan





dayPerpus 2.0 Sistem Informasi Perpustakaan

Fitur :
1.Cetak Kartu Anggota

2.Capture Photo via Webcam dan barcode supported. Pengelola perpustakaan bisa menggunakan webcam untuk mengambil Photo Anggota sehingga anggota tidak perlu membawa foto saat mendaftar. Barcode juga bisa digunakan untuk proses peminjaman sehingga mempercepat proses peminjaman buku.

3.Menu ISBN (International Standard Book Number) digunakan sebagai panduan pencatatan buku agar pengindentikasian buku bisa sejalan dengan standar perpustakaan nasional.

4.Pengaturan DENDA yang memungkinkan pengelola perpustakaan mengatur Anggota agar anggota lebih disiplin dalam mengembalikan buku.

5.Otoritas User. Menu yang digunakan untuk proses pengaturan user yang boleh menggunakan program yang dapat diatur sesuai dengan Group atau kelompok pengguna sehingga lebih aman dari proses manipulasi data oleh user yang tidak diberi kewenangan.

6.Backup & Restore database yang mudah sehingga user tidak perlu takut kehilangan data jika terjadi kerusakan pada komputer.

7.Network Supported. dayPerpus dapat digunakan dalam jaringan sehingga bisa digunakan untuk berbagi pakai data perpustakaan dalam satu jaringan komputer.

8.User Friendly

9.dan masih banyak lagi.
Software ini menggunakan Firebird 2.5 sebagai Database nya.
jika ingin menggunakannya dalam jaringan client/server cukup install firebird di komputer servernya saja,lalu dari client tinggal diatur database ke database yang berada di server.

Download
- Manual Penggunaan (Donlot dan baca terlebih dahulu)
- Firebird 2.5
- dayPerpus Setup (Trial 15 hari)
Read more

Preview hade-framework development


target pembaca : Advance

Masih tetap berambisi bikin opf/orm framework sendiri cari referensi sana sini,bahkan sampai 2 kali redesign , sekarang saya sudah cukup yakin dengan designnya.
Sekarang hade-framework sudah mampu menjalankan tugas dasarnya :D mari saya contohkan penggunaannya.

- Pertama yang anda lakukan adalah membuat Bussines Objectnya yang merupakan turunan dari THadeObject

uses
   hadeobject;
Type
  TTest = class(THadeObject)
  private
   FAge: integer;
   FLName: string;
   FName: string;
  public
   function Full_Name : String;
  published
   property First_Name: string read FName write FName;
   property Last_Name: string read FLName write FLName;
   property Age: integer read FAge write FAge;
  end;


Property yang ingin di mapping harus berada pada published section, property yang berada pada published section juga tidak harus di mapping ke schema database.
semisal anda hanya ingin First_Name dan Last_Name saja yang di mapping anda tidak perlu meremove property Age.

- Langkah berikutnya adalah melakukan Register Mapping ( uses unit hademapping ).

GHadeMappingManager.RegisterMapping(TTest, 'person', 'OID', 'oid',
ftInteger, 0, [ptkPK, ptkReadOnly]);

GHadeMappingManager.RegisterMapping(TTest, 'person', 'Name',
'first_name', ftVarchar, 25);

GHadeMappingManager.RegisterMapping(TTest, 'person', 'Age', 'age', ftInteger);

GHadeMappingManager.RegisterMapping(TTest, 'person', 'Last_Name',
'last_name', ftVarchar, 25);


GHadeMappingManager adalah singleton function lebih detil bisa dilihat hademappingmanager.pas
interface dari RegisterMapping adalah

procedure RegisterMapping(const AObjClass: THadeObjectClass;
const ATable, APropName, AColName: string; const AFieldType: THadeFieldType;
const ALength: integer = 0; const ASetPtkInfo: TSetPtkInfo = []);


- Selanjutnya Register Connection ( uses unit hadeopfmanager,hadebroker )

GHadeOPFManager.RegisterConnection('test', 'test.s3db',
'', '', '', SQLDB_SQLITE);
GHadeOPFManager.OIDStrategy := oidAutoInc;

code diatas berarti "Registrasikan koneksi dengan nama 'test' , 'nama DB','Host','username','password' dengan menggunakan broker SQLLite"

anda bisa mempunyai lebih dari satu koneksi dalam satu applikasi :D .
OIDStrategy := oidAutoInc berarti anda menggunakan PK(Primary Key) dengan strategy AutoIncrement fitur yang tersedia dihampir semua R/DBMS, anda juga bisa menggunakan oidGUID sebagai OIDStrategy, oidGUID menggunakan GUID(Global Unique Identifier) sebagai primary key nya yang disimpan sebagai string.

- Create/Read/Update/Delete Bussines Object
Untuk Melakukan CRUD pada Bussines Object anda harus menggunakan session, mungkin bagi sebagian orang penggunaan session cuma bikin ribet,tetapi sebenarnya penggunaan session sangat powerfull untuk melakukan transaksi,management koneksi dll.

uses
hadeobject,
hadeopfmanager,
hademapping,
hadession;
//..some code omitted for brevity
var
MySession : THadeSession;
obj : TTest;//class TTest yang tadi
begin
MySession := GHadeSessionFactory('test');//session dengan koneksi 'test'
obj := TTest.Create(71);//mengeset OID/pk dengan nilai 71
Try
MySession.read(obj);//sekarang obj = record di table person dengan OID = 71

//kita update
obj.First_Name := 'Test Doank';
obj.MarkDirty;//tandai object ini adalah dirty( kotor dalam artian tidak sama dengan database )
MySession.save(obj);//sekarang record dengan OID 71 sudah terupdate.
end.
untuk melakukan Create(Insert) sangat mudah dan sama seperti operasi update/delete

//tanpa OID karena oidAutoInc , jika oidGUID tambahkan(uses) unit hadeoid
//tmp := GHadeOID.getOID.getGUID; dan pass variable tmp ke TTest Constructor
obj := TTest.create();
obj.First_Name := 'Test';
obj.Last_Name := 'Lagi'
obj.Age := 76;
MySession.save(obj);//tersimpan

//untuk Delete cukup tandai object dengan MarkDelete
obj.MarkDelete();
MySession.save(obj);// record terhapus

- Transaction
Katakanlah anda mempunyai 2/lebih object yang harus di save(insert/update/delete) yang mana jika salah satu objectnya gagal maka keseluruhan object tersebut harus di rollback.

begin
MySession.StartTransaction;
Try
//save/read operation
except
MySession.Rollback;
//raise again?
end;
MySession.Commit;
end.

Session tidak perlu di free secara manual karena THadeSession adalah interface.
anda juga bisa menaruh Session di constructor suatu class dan session akan hidup sepanjang object dari class tersebut hidup.

well tentunya framework ini masih jauh untuk di release saya masih berhati-hati takutnya gagal lagi :D. nanti tak kabarin lagi kalo ada major improvement.

kalo mau ngulik sourcenya bisa di checkout di http://hd-framework.googlecode.com/svn/trunk/ dengan svn client kesayangan anda :D

Thanks happy coding.
Read more

FeedReader 3.14 Open Source RSS Feed Desktop



RSS Feed(Really Simple Syndication Feed) ,pada tau RSS Feed donk?yang belum tau silahkan klik link tadi.
disini saya tidak akan menjelaskan apa itu rss feed karena saya yakin anda pasti lebih tau dari saya.saya cuma mau bagi-bagi  feeed reader desktop yang free.nih situs resminya http://feedreader.com ,dengan software ini anda dapat berlangganan artikel situs/blog favorite anda dan di update setiap ada entry baru jadi anda tidak perlu membookmark situs blog/situs favorite anda di browser.cara penggunaannya pun sangat mudah ada dua cara:
1.langsung memasukan alat rss ke feedreader dengan cara menekan tombol F3 lalu masukan alamat rss nya.
2.langsung dari browser,sebuah web yang mempunyai RSS pada  navigation toolbarnya bertanda seperti yang anda lihat di navigation toolbar anda sekarang



Anda tinggal mengklik tanda itu lalu jika situs itu mempunyai 2 rss/atom klik salah satunya: atau biar lebih gampang deh,pada browser anda(Firefox ya)klik Tools-->Option-->Tab Application,perhatikan screen shoot berikut: lalu klik Ok selesai.



silahkan download feedreader nya:



Semoga bermanfaat
Read more

Archive