Selasa, 28 Mei 2013

[belajar-access] Membuat Program Multiuser Dengan Front-End Microsoft Access dan Back-End Microsoft SQL Server (Bagian 2)

 

Membuat Program Multiuser Dengan Front-End Microsoft Access dan Back-End Microsoft SQL Server (Bagian 2)

3 Kewajiban Pada Table

Setelah sahabat membuat trigger, langkah selanjutnya adalah sahabat harus melaksanakan 3 kewajiban sahabat pada seluruh table yang sahabat buat, yakni:

1.       Setiap table wajib terdapat primary key, minimal 1 field.

2.       Setiap table wajib ditambahkan field dengan jenis data type = "timestamp". Terserah nama fieldnya, boleh timestamp, atau apa saja, yang penting, data type harus timestamp.

3.       Setiap field dengan jenis "bit" wajib dibuat default value, misal diset 0 (nol) atau -1 (minus satu). Jangan sampai field ini dibiarkan null (kosong, hampa tanpa nilai).

Beberapa Sunnah (Anjuran) Pada Table

Bila sahabat tidak melaksanakan sunnah ini tidak mengapa, namun bila dikerjakan itu lebih baik.

1.       Set default value pada seluruh field dengan data type money, float atau number lainnya ke 0 (nol). Hal ini kelak membawa manfaat dimasa mendatang, ketika sahabat hendak menjumlahkan, tidak perlu menggunakan rumus NZ lagi.

2.       Tambahkan beberapa field tambahan, misal dengan nama "UserDefField1", "UserDefField2", dst, hanya sekedar untuk jaga-jaga, mungkin kedepannya diperlukan, tanpa harus design table lagi.

3.       Set validation field-field yang hendak Anda jaga batasan nilainya, yakni pada constraints expressionnya.

4.        Tambahkan field "TglTransaksi", dengan default value : (convert(datetime,convert(varchar,getdate(),1))). Lebih detail mengenai format date di SQL Server, sahabat bisa mengunjungi: http://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/

5.       Mengatur size (length) field sesuai yang diperlukan saja.

Beberapa Perkiraan FAQ

1.       Perlukah saya membuat Diagram View? Sama sekali tidak perlu, cukup dibuat saja triggernya.

2.       Cukup sulit melihat table-table yang berhubungan dalam trigger, adakah cara lebih mudahnya? Gunakan fasilitas "Show Dependencies" atau "Display Dependencies".

3.       Bolehkah saya memiliki nama field yang sama dalam dua table atau lebih? Bedakan dengan memberi nama tambahan pada field tsb. Misal, dalam table IMA ada nama field ItemID, dan dalam table LOC ada juga field dengan nama ItemID. Maka bedakan keduanya, misal di table IMA nama field IMA_ItemID, dan dalam table LOC nama field LOC_ItemID. Sehingga memberi info mudah ketika membuat query atau script SQL, field tersebut bersumber dari table mana.

4.       Bagaimana copy-paste satu table menjadi table lainnya? Bila di Access menggunakan CTRL+C dan CTRL+V, maka di SQL Server, sahabat harus membuat scriptnya dahulu. Gunakan fasilitas Database Scripting, kemudian pilih table yang hendak dicopy paste, lalu klik Preview. Maka script SQL yang muncul dicopy, lalu paste di Query Analyzer. Jangan lupa hapus dahulu perintah dropnya, lalu rename nama tablenya. Sebagai contoh, saya hendak copy paste table lokasi barang (LOC). Maka akan didapat script setelah di Preview, sbb:

if exists (select * from sysobjects where id = object_id(N'[dbo].[LOC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[LOC]

GO

CREATE TABLE [dbo].[LOC] (

                [LOC_ItemID] [varchar] (25) NOT NULL ,

                [LOC_WarehouseLoc] [varchar] (10) NOT NULL ,

                [LOC_LocTransDate] [datetime] NULL ,

                [LOC_LocQty] [float] NOT NULL ,

                [LOC_LocCode] [varchar] (30) NULL ,

                [LOC_NonNetFlag] [bit] NOT NULL ,

                [LOC_GL_InvLocAcctNbr] [varchar] (25) NULL ,

                [LOC_GL_SalesLocAcctNbr] [varchar] (25) NULL ,

                [LOC_GL_COGSLocAcctNbr] [varchar] (25) NULL ,

                [LOC_UserDef1] [varchar] (255) NULL ,

                [LOC_UserDef2] [varchar] (255) NULL ,

                [LOC_UserDef3] [varchar] (255) NULL ,

                [LOC_UserDef4] [varchar] (255) NULL ,

                [LOC_UserDef5] [varchar] (255) NULL ,

                [timestamp] [timestamp] NULL

)

GO

Maka pada query analyzer, hapus dahulu paragraph pertama sbb:

if exists (select * from sysobjects where id = object_id(N'[dbo].[LOC]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[LOC]

GO

Kemudian rename script berikutnya, misal dari:

CREATE TABLE [dbo].[LOC] (

Menjadi:

CREATE TABLE [dbo].[LOC_Copy] (

Lalu klik RUN, maka di SQL Server terbentuk table baru dengan nama LOC_Copy.

Sebenarnya pilihan untuk generate script cukup banyak, diantaranya sahabat bisa copy paste juga primary key, trigger, dsb. Sahabat bisa menentukan berbagai pilihan generate script pada optionnya.

5.       Saya masih ragu-ragu menggunakan SQL Server, banyak yang belum dipahami, maka kapan kira-kira saya perlu menggunakannya? Sekarang!

Insya Allah disambung kembali dilain waktu.

/* --------------------------------------------------------------- */

Penyusun: Sofyan Efendi. Sebagian besar aplikasi Alhamdulillah telah dibuat oleh penyusun menggunakan Microsoft Access sebagai front-end dan Microsoft SQL Server sebagai back-end. Sahabat bisa mengunjungi blog penyusun di: http://imopi.wordpress.com/. Terima kasih.

/* --------------------------------------------------------------- */

Wassalamu'alaikum Warahmatullahi Wabarakatuh,
Sofyan Efendi
Access DVD Collections ; Access Course by Request 

__._,_.___
Reply via web post Reply to sender Reply to group Start a New Topic Messages in this topic (1)
Recent Activity:
SPAM IS PROHIBITED
.

__,_._,___

Tidak ada komentar:

Posting Komentar