Sabtu, 20 November 2010
Cursor for SQL Server
Sebagaimana layaknya bahasa pemrograman seperti C#, Delphi, Visual Basic atau lainnya tentunya tidak lepas dari proses perulangan, entah itu dengan menggunakan for, while atau apalah yang tujuan utamanya adalah untuk melakukan suatu proses perulangan dalam aplikasi yang kita buat.
tidak terlepas pula dengan Sql Server juga memiliki fasilitas ini yang salah satunya bisa pula diterapkan dalam storeprocedure yang biasa penulis lakukan tentunya hehehe.
untuk contoh sederhana mungkin akan penulis buatkan contoh sebagai berikut:
kita memiliki 2 buah tabel yaitu tabel master dan tabel detail, yang didalam tabel detail memiliki file perhitungan yang jumlah perhitungan dalam masing-masing recordnya akan diakumulasikan dan diupdate kedalam tabel master .
Sebelumnya kita coba untuk membuat 2 buah tabel sederhana berikut:
CREATE TABLE [dbo].[tbmaster](
[NOBUKTI] [char](20) NOT NULL,
[JUMLAH] [numeric](18, 2) NULL DEFAULT (0))
CONSTRAINT [PK_tbmaster] PRIMARY KEY CLUSTERED
([NOBUKTI] ASC)ON [PRIMARY])
CREATE TABLE [dbo].[tbdetail](
[ID] [numeric](18, 0) IDENTITY(1,1) NOT NULL, [kdbarang] [char](20) NOT DEFAULT(''),
[QTY] [uang] [numeric](18, 2) NULL DEFAULT (0),
[HARGA] [uang] [numeric](18, 2) NULL DEFAULT (0))
CONSTRAINT [PK_tbdetail] PRIMARY KEY CLUSTERED
([ID] ASC)ON [PRIMARY])
Untuk mempermudah pemrosesan data silahkan isikan terlebih dahulu data-data untuk kedua buah tabel tersebut sebanyak-banyaknya, akan tetapi saya anjurkan agar membuat data-data didalam 2 buah tabel ini saling berhubungan dengan dihubungkan dari NoBukti.
Selanjutnya sesuai dengan topik bahasan diatas yaitu cursor, penulis ingin mencoba memberikan contoh sederhana , mengikuti tabel diatas penulis menginginkan bahwa field jumlah di tabel tbMaster akan terupdate dari nilai perkalian dari field Qty dan field Harga yang ada ditabel tbdetail. untuk itu kita coba membuat store procedure sederhana berikut :
create procedure [dbo].[spUpdateJumlah]
as
begin tran
declare @nobuk varchar(20),@J numeric(18,0)
declare CurHitung cursor for select nobukti from tbmaster order
by nobukti
open CurHitung
fetch next from CurHitung into @nobuk
while @@fetch_status = 0
begin
select @J = sum(qty*harga) from tbdetai where
nobukti=@nobuk
update tbmaster set jumlah=isNull(@J,0)
where nobukti=@nobuk
fetch next from CurHitung into @nobuk
end
close CurHitung
Deallocate CurHitung
if @@error<>0 goto salah
commit tran
return
Salah:
rollback tran
raiserror('Ada Kesalahan ',16,1)
return
Untuk menjalankannya kita cukup ketikkan spUpdateJumlah dan silahkan dieksekusi
dan untuk melihat hasil dr proses store procedure ini kita cukup ketikkan:
select * from tbmaster order by nobukti
Namun penulis anjurkan apabila tidak sangat diperlukan hasil perhitungan disimpan sebaiknya kita tidak menambahkan field didalam tabel karena akan membuat kinerja database kita menjadi tidak efektif, bandingkan apabila kita hanya memerlukan nilai jumlah hanya untuk ditampilkan saja dan bukan untuk proses lebih lanjut maka kita tidak memerlukan media simpan/field tambahan seperti diatas, coba kita bandingkan dengan hasil berikut (dalam kasus bahwa data penjumlahan hanya untuk ditampilkan):
select a.nobukti,sum(b.qty * b.harga) as jumlah from tbmaster a, tbdetail b where a.nobukti=b.nobukti group by nobukti
hasilnya sama bukan?, kiranya ini yang dapat penulis contohkan melalui contoh sederhana ini untuk penggunaan "Cursor", dan penulis mohon maaf apabila tulisan ini masih jauh dari sempurna,
Salam..
Selasa, 16 November 2010
Insert and display the icon into the Delphi Grid
dengan judul diatas sebelumnya penulis pernah mengalami kesulitan dalam menampilkan icon kedalam grid yang kebetulan penulis menggunakan database mysql, dari beberapa kali experimen (caile... kayak prof aja padahal kebetulan aja bisa) akhirnya penulis dapat menyelesaikan masalah tersebut seperti tampilan berikut :kita langsung aja ya,
yang kita butuhkan tentunya VCL yang mendukung koneksi kedatabase, dalam hal ini penulis menggunakan komponennya Zeos yang bisa didownload dibeberapa situs internet, kemudian setelah koneksikan database melalui komponen zeos, tambahkan komponen ZQuery untuk memfilter data yang akan kita butuhkan untuk ditampilkan kedalam grid.
selanjutnya tambahkan komponen ImageList, komponen Image serta komponen DataGrid.
Field : kdNgr char(3) Primari key
Rupiah numeric(18,2)
Dolar numeric(18,2)
nah untuk kebutuhan linknya nama file icon penulis samakan dengan nama isi dari field KdNgr.
selanjutnya kita buat procedure untuk mengenali dan menempatkan icon kedalam colom di grid
procedure TForm5.cekbendera;
var nm:string;
begin
with qKurs do
begin
first;
while not Eof do
begin
nm:=trim(Fields[0].Value);
Try
image1.Picture.LoadFromFile('D:\delphi\Delphi\Kurs Mandiri\bendera\ICON\'+nm+'.ICO');
ImageList1.AddIcon(Image1.Picture.icon);
except
End;
next;
end;
end;
end;
selanjutnya letakkan even DrawColumnCell kedalam Grid dengan kode berikut:
procedure TForm5.Grid1DrawColumnCell(Sender: TObject; const Rect: TRect;
begin
s:=0;
with BGrid1 do
begin
if DataCol=0 then
begin
ImageList1.Draw(Canvas,rect.Left+30, Rect.Top+1,qKurs.Fields[3].value);
end;
end;
end;
Jadi deh... tinggal selanjutnya tinggal kita tentukan kapan nih procedure kita panggil;
bisa pula pada saat even form on Create dengan mengetikkan perintah berikut:
Procedure Form5.FormCreate(Sender: TObject);
begin
ZQuery.active:=true;
cekbendera;
end;
Rabu, 20 Oktober 2010
Flash files displays with dephi 2007

langkah-langkah nya yang pertama kita coba import ActiveX untuk Flash, untuk referensi yang lebih lengkap teman-teman dapat merujuk ke alamat ini adapun activeX yang perlu kita import nanti nya adalah shockwaveflash dan pallete sesuai pilihan teman-teman, sebetulnya ada beberapa VCL yang memang telah disediakan untuk menangani flash ini teman-teman mungkin pernah mendengar yang namanya smartFlash yang dapat di unduh disini (kebetulan nemu link hehehe), tapi untuk kali ini kita coba pakai ActiveX yang memang sudah disediakan ya.
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
ShockwaveFlash1.Movie:=Application.ExeName+'namafileflash.swf'; // sebagai contoh ya
ShockwaveFlash1.Play;
end;
Sederhana bukan , mudah-mudahan trik sederhana ini dapat memberikan tambahan referensi teman-teman dan mohon maaf kalau artikel ini masih jauh dari sempurna.
Sabtu, 09 Oktober 2010
Import Excell to Access with Delphi
Sebetulnya tidak terlalu sulit untuk membuat program sederhana ini, penulis mencoba menggunakan koneksi yang menggunakan ODBC sebagai penghubung yang diterapkan melalui metode "ADO nya Delphi".
langkah-langkah yang perlu diterapkan hanyanya membuat 2 buah AdoConnection, yang pertama adalah AdoConnection yang digunakan untuk menghubungkan ke file Excell sedangkan AdoConnection yang kedua digunakan untuk menghubungkan ke database yang kita inginkan, semisal penulis coba dengan menggunakan Access sebagai media untuk koneksi ke dua ini.
selanjutnya kita buat Dua buah AdoQuery, untuk query pertama dihubungkan dengan AdoConnection yang pertama , sedangkan AdoQuery yang kedua dihubungkan ke AdoConnection yang ke dua.
selanjutnya jangan lupa kita tinggal membuat sintax program untuk menjalankan dan mengimport data dari Excell ke database tujuan tersebut, sebagai contoh penulis membuat sintax sederhana sebagai berikut :
with AdoQuery1 do
begin
disablecontrols;close;sql.clear;
sql.add('select * from [Sheet1$] ORDER BY F9');
open;enablecontrols;
end;
with AdoQuery2 do
begin
disablecontrols;close;sql.clear;
sql.add('select * from tabel1 order by Id');
open;enablecontrols;
end;
with AdoQuery1 do
begin
first;
while not eof do
begin
with AdoQuery2 do
begin
Append;
Fields[4].AsString:=trim(AdoQuery1.Fields[4].AsString);
Post;
end;
next;
end;
end;
semoga dengan trik singkat ini dapat membantu teman-teman yang membutuhkan , terimakasih
Rabu, 04 Agustus 2010
Attach Detach Database SQL Server
Sabtu, 17 Juli 2010
Function Of Numeric With Delphi
sebagai informasi tambahan fungsi yang kami buat ini telah dapat digunakan dalam 2 format mata uang yaitu indonesia (xxx.xxx,xx) dan inggris (xxx,xxx,xxx.00)
sintax source terbilang :
function Tfutil.konversi(karakter: string):string;
var i,a1,a2,a3 : integer; c,k,c1,c2,huruf : string; d : array [0..8] of char;
function satuan(angka : integer):string;
var kata : string;
begin
case angka of
0 : kata := '';
1 : kata := 'Satu';
2 : kata := 'Dua';
3 : kata := 'Tiga';
4 : kata := 'Empat';
5 : kata := 'Lima';
6 : kata := 'Enam';
7 : kata := 'Tujuh';
8 : kata := 'Delapan';
9 : kata := 'Sembilan';
end;
Result := kata;
end;
function puluhan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 10;
b := angka - (a*10);
if a > 0 then
begin
if a = 1 then
begin
if b = 0 then
kata := 'Sepuluh'
else if b = 1 then
kata := 'Sebelas'
else
kata := satuan(b) + ' Belas';
end else
begin
kata := satuan(a)+' Puluh '+ satuan(b);
end;
end else
kata := satuan(angka);
Result := kata;
end;
function ratusan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 100;
b := angka - (a*100);
if a > 0 then
begin
if a = 1 then
begin
kata := 'Seratus ' + puluhan(b)
end else
begin
kata := satuan(a)+' Ratus '+ puluhan(b);
end;
end else
kata := puluhan(angka);
Result := kata;
end;
function ribuan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 1000;
b := angka - (a*1000);
if a > 0 then
begin
if a = 1 then
begin
kata := 'Seribu ' + ratusan(b)
end else
begin
kata := Ratusan(a)+' Ribu '+ Ratusan(b);
end;
end else
kata := Ratusan(angka);
Result := kata;
end;
function jutaan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 1000000;
b := angka - (a*1000000);
if a > 0 then
begin
kata := Ratusan(a)+' Juta '+ Ribuan(b)
end else
kata := Ribuan(angka);
Result := kata;
end;
function milyardan(angka : integer):string;
var kata : string;
begin
if angka > 0 then
begin
kata := Ratusan(angka)+' Milyar'
end else
kata := '';
Result := kata;
end;
function trilyunan(angka : integer):string;
var kata : string; a,b :integer;
begin
a := angka div 1000;
b := angka - (a*1000);
if a > 0 then
begin
kata := Ratusan(a)+' Trilyun ' + milyardan(b);
end else
kata := milyardan(angka);
Result := kata;
end;
function koma(angka : string):string;
var kata : string; a,b : integer;
begin
kata := copy(angka,1,1);
a := strtoint(kata);
if a = 0 then
begin
kata := 'Nol'
end else
begin
kata := satuan(a);
end;
a := strtoint(angka);
b := a div 10;
a := a - (b * 10);
kata := kata + ' ' + satuan(a);
result := kata;
end;
begin
a1 := AnsiPos(',',trim(karakter));
a2 := AnsiPos('.',trim(karakter));
if ((a1 <> 0) or (a2<>0)) then
begin
if (a1 > a2) then
begin
k := copy(trim(karakter),1,a1-1);
c := '';
for i := 1 to length(k) do
begin
if k[i] <> '.' then c := c + k[i];
end;
if (length(karakter)-a1 > 1) then k := copy(trim(karakter),a1+1,2)
else
begin
k := copy(trim(karakter),a1+1,1);
k := k + '0';
end;
end else
begin
k := copy(trim(karakter),1,a2-1);
c := '';
for i := 1 to length(k) do
begin
if k[i] <> ',' then c := c + k[i];
end;
if (length(karakter)-a2 > 1) then k := copy(trim(karakter),a2+1,2)
else
begin
k := copy(trim(karakter),a2+1,1);
k := k + '0';
end;
end;
end else
begin
c:= karakter;
k := '00';
end;
if length(trim(c)) > 9 then
begin
a3 := length(c);
i :=0;
while i <=8 do
begin
d[8-i] := c[a3];
a3 := a3 - 1;
i := i + 1;
end;
for i := 0 to 8 do begin c2 :=c2+d[i];d[i]:=' ' ; end;
a3 := length(c)- 9;
while a3 > 0 do
begin
d[a3-1] := c[a3];
a3 := a3-1;
end;
for i := 0 to 8 do begin c1 := c1 + d[i];d[i]:=' '; end;
a1 := strtoint(trim(c1));
a2 := strtoint(trim(c2));
huruf := trilyunan(a1) +' '+ jutaan(a2);
end else
begin
a1 := strtoint(c);
huruf := jutaan(a1);
end;
if ((trim(k) <> '00') and (trim(k)<>'0')) then
begin
if huruf = '' then huruf := 'Nol Koma';
huruf := huruf +' Koma ' + koma(k);
end;
result := huruf;
end;
Selasa, 06 Juli 2010
Execute Storeprocedure SQL Server Express 2005 with C# - part 3

Ketemu lagi di Execute Storeprocedure SQL Server Express 2005 with C#, pada kesempatan ini penulis akan mencoba melanjutkan lagi hasil pembelajaran penulis dengan menggunakan C#, pada kesempatan ini silahkan buat desain form seperti gambar yang penulis sertakan pada artikel ini kemudian untuk dapat menjalankan aplikasi sederhana ini silahkan ketikkan source berikut :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
//sertakan file uConnection
using GL.DataAkses;
using GL.ClassInputMaster;
namespace GL
{
public partial class fperkiraan : Form
{
ClassPerkiraan ClasPerkiraan = new ClassPerkiraan();
// buat variabel untuk pemanggil koneksi di file uConnection.cs
private SqlConnection conn;
string trans;
public fperkiraan()
{
InitializeComponent();
// deklarasikan + Buka koneksi
this.conn = uConnection.GetConnection();
} string cmdsqlGL;
Boolean Proses;
DataTable tperkiraanGL = new DataTable();
private void load_data()
{
tperkiraanGL.Clear();
cmdsqlGL = "Select noperk,perkiraan,gd,dk from tperkiraan where order by noperk";
SqlDataAdapter adapterPerkiraan = new SqlDataAdapter(cmdsqlGL,conn);
SqlCommandBuilder commandPerkiraan = new SqlCommandBuilder(adapterPerkiraan);
adapterPerkiraan.Fill(tperkiraanGL);
dgperkiraan.DataSource = tperkiraanGL;
dgperkiraan.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgperkiraan.Columns[0].HeaderText = "NO.PERKIRAAN";
dgperkiraan.Columns[1].HeaderText = "PERKIRAAN";
dgperkiraan.Columns[0].Width = 150;
dgperkiraan.Columns[1].Width = 300;
dgperkiraan.Columns[2].Width = 60;
dgperkiraan.Columns[3].Width = 60;
dgperkiraan.Columns[2].HeaderText = "G/D";
dgperkiraan.Columns[2].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
dgperkiraan.Columns[3].HeaderText = "D/K";
dgperkiraan.Columns[3].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
}
private void fperkiraan_Load(object sender, EventArgs e)
{
trans = "Baru";
WindowState = FormWindowState.Maximized;
lblproses.Text = "Penambahan data baru...";
try
{
load_data();
}
catch (SqlException err)
{
throw new Exception(err.Message.ToString());
}
finally
{
conn.Close();
}
}
private void txtcarinama_TextChanged(object sender, EventArgs e)
{
// untuk pencarian data
}
private void btnselesai_Click(object sender, EventArgs e)
{
Close();
}
private void kosong()
{
txtnoperk.Text = "";
txtnaperk.Text = "";
cbGD.Text = "General";
rodebet.Checked=true;
}
private void btntambah_Click(object sender, EventArgs e)
{
lblproses.Text = "Penambahan data baru...";
kosong(); trans = "Baru"; txtnoperk.ReadOnly = false; txtnoperk.Focus();
}
private void btsimpan_Click(object sender, EventArgs e)
{
string _idbook = txtnoperk.Text;
if (txtnoperk.Text == "")
{
MessageBox.Show("Pengisian tidak lengkap!!!");
btntambah_Click(sender, e);
}
else
{
try
{
string GD, DK;
if (cbGD.Text == "General")
{
GD = "G";
}
else
{
GD = "D";
}
if (rodebet.Checked == true)
{
DK = "D";
}
else
{
DK = "K";
}
if (trans=="Edit" || trans=="Baru")
{
ClasPerkiraan.spAdd(trans.ToString(), txtnoperk.Text.ToString(), txtnaperk.Text.ToString(), GD.ToString(), DK.ToString());
}
load_data();
}
catch (Exception err)
{
MessageBox.Show("Gagal menyimpan data");
}
finally
{
btntambah_Click(sender, e);
}
}
}
private void btnhapus_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("Anda Yakin akan menghapus perkiraan : " + dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["perkiraan"].Value.ToString(), "Peringatan", MessageBoxButtons.YesNo);
if (result == DialogResult.No)
{
btntambah_Click(sender, e);
}
else
{
string no = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString();
ClasPerkiraan.spAdd("Hapus",no.ToString(),"","","");
tperkiraanGL.Clear();
load_data();
}
}
private void btnperbaiki_Click(object sender, EventArgs e)
{
string nobookmark;
try
{
if (dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString() != "")
{
nobookmark = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString();
txtnoperk.Text = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["noperk"].Value.ToString();
txtnaperk.Text = dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["perkiraan"].Value.ToString();
if (dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["GD"].Value.ToString() == "G")
{
cbGD.Text = "General";
}
else
{
cbGD.Text = "Detail";
}
if (dgperkiraan.Rows[dgperkiraan.CurrentCellAddress.Y].Cells["dk"].Value.ToString() == "D")
{
rodebet.Checked = true;
}
else
{
rokredit.Checked = true;
}
trans = "Edit";
txtnoperk.ReadOnly = true;
trans = "Edit"; lblproses.Text = "Perbaikan data...";
txtnaperk.Focus();
}
else
{
MessageBox.Show("data tidak ada");
}
}
catch
{
MessageBox.Show("Data tidak ada");
}
}
private void btncetak_Click(object sender, EventArgs e)
{
//untuk menampilkan data dalam mode report
}
private void txtnoperk_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == 13)
{
// buat class untuk pencarian data yang pernah di isi disini
}
else
{
txtnaperk.Focus();
}
}
}
}
private void konfirmasi()
{
string pesan = "Simpan data?";
string judul = "Konfirmasi";
MessageBoxButtons tombol = MessageBoxButtons.OKCancel;
DialogResult result;
result = MessageBox.Show(pesan, judul, tombol);
if (result == System.Windows.Forms.DialogResult.OK)
{
Proses = true;
}
else
{
Proses = false;
}
}
}
}
Mudah-mudahan hasil pembelajaran penulis ini juga dapat memberikan manfaat bagi teman-teman yang juga sama dengan penulis dalam mempelajari C#, serta tidak lupa penulis ucapkan beribu-ribu maaf kalau artikel ini masih jauh dari sempurna
Execute Storeprocedure SQL Server Express 2005 with C# - part 2
1. File uConnection.cs yang penulis letakkan dalam folder DataAkses, file ini nantinya berfungsi untuk penghubung antara database dengan C#, berikut contoh sourcenya :
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
namespace GL.DataAkses
{
public class uConnection
{
public static SqlConnection GetConnection()
{
string conGL = @"server=CENK26-PC\SQLEXPRESS;integrated security=true;database=GL_C#";
SqlConnection conn = new SqlConnection(conGL);
conn.Open();
return conn;
}
}
}
2. Selanjutnya kita buat Class yang berfungsi untuk proses transaksi yang berhubungan dengan tabel perkiraaan yang penulis coba kombinasikan dengan storeprocedure SQL SERVER 2005 EXPRESS, untuk kebutuhan ini penulis meletakkan file class ini didalam folder " ClassInputMaster " dengan nama file ClassPerkiraan.cs, sedangkan sourcenya adalah sebagai berikut :
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Text;
using System.Windows.Forms;
using GL.DataAkses;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Data;
namespace GL.ClassInputMaster
{
public class ClassPerkiraan
{
private SqlConnection conn;
private string idnoperk;
private string idnaperk;
private string idgd;
private string iddk;
private string keterangan { get; set; }
#region ClassPerkiraan property
public string idNoperk
{
get { return idnoperk; }
set { idnoperk = value; }
}
public string idNaperk
{
get { return idnaperk; }
set { idnaperk = value; }
}
public string idGd
{
get {return idgd;}
set {idgd=value;}
}
public string idDk
{
get { return iddk; }
set { iddk = value; }
}
#endregion
public ClassPerkiraan()
{
}
///class store procedure
/// untuk MASRER PERKIRAAN UTAMA
public string spAdd(string tr, string no, string na, string gd, string dk, string th)
{
this.conn = uConnection.GetConnection();
SqlCommand spAdd = new SqlCommand();
spAdd.Connection = conn;
spAdd.CommandText = "sp_perkiraan";
spAdd.CommandType = CommandType.StoredProcedure;
SqlParameter tran = new SqlParameter("@transaksi", SqlDbType.VarChar);
SqlParameter noperk = new SqlParameter("@noperk", SqlDbType.Char);
SqlParameter naperk = new SqlParameter("@naperk", SqlDbType.VarChar);
SqlParameter Gd = new SqlParameter("@gd", SqlDbType.Char);
SqlParameter Dk = new SqlParameter("@dk", SqlDbType.Char);
tran.Value = tr;
noperk.Value = no;
naperk.Value = na;
Gd.Value = gd;
Dk.Value = dk;
spAdd.Parameters.Add(tran);
spAdd.Parameters.Add(noperk);
spAdd.Parameters.Add(naperk);
spAdd.Parameters.Add(Gd);
spAdd.Parameters.Add(Dk);
spAdd.ExecuteNonQuery();
conn.Close();
return spAdd.ToString();
}
}
}
3. Selanjutnya kita tinggal coba jalankan storeprocedure yang telah kita buat di SQL SERVER 2005 EXPRESS dipart 1 dengan Class yang telah kita buat di Part 2 sebelumnya... yang kita lanjutkan di Execute Storeprocedure SQL Server Express 2005 with C# - part 3
Minggu, 04 Juli 2010
Execute Storeprocedure SQL Server Express 2005 with C# - part 1
Banyak literatur yang menjelaskan bagaimana mengkoneksikan database SQL SERVER EXPRESS 2005 jangan lupa sebelumnya download juga SQLServer2005_SSMSEE.msi untuk memudahkan anda mengoperasikan SQL Server Express 2005 dengan C# dengan berbagai tehnik dan cara, untuk kali ini saya akan mencoba menjalankan storeprocedure yang dipanggil dengan C#.
Sebelumnya silahkan anda buat database sesuai yang diinginkan dengan SQL server Express 2005, sebagai contoh saya membuat database dengan nama GL_C#, kemudian tambahkan tabel seperti contoh berikut :
CREATE TABLE [dbo].[tperkiraan](
[noperk] [char](20) NOT NULL,
[perkiraan] [varchar](50) NULL,
[gd] [char](1) NOT NULL CONSTRAINT [DF_tperkiraan_gd] DEFAULT ('G'),
[dk] [char](1) NOT NULL CONSTRAINT [DF_tperkiraan_dk] DEFAULT ('D'),
CONSTRAINT [PK_tperkiraan] PRIMARY KEY CLUSTERED
(
[noperk] ASC
)ON [PRIMARY]
)
Selanjutnya silahkan buat satu storeprocedure seperti berikut :
CREATE PROCEDURE [dbo].[sp_perkiraan]
@noperk char(20),
@naperk varchar(50),
@gd char(1),
@dk char(1)
@transaksi varchar(20)
AS
BEGIN
if @transaksi='Baru'
begin
Insert Into tperkiraan(noperk,perkiraan,gd,dk)
Values(@noperk,@naperk,@gd,@dk)
end
if @transaksi='Hapus'
begin
delete from tperkiraan where noperk=@noperk
end
if @transaksi='Edit'
begin
Update tperkiraan set perkiraan=@naperk, gd=@gd,dk=@dk
where noperk=@noperk
end
END
Oke untuk selanjutnya untuk koneksi dari C# silahkan buka artikel Execute Storeprocedure SQL Server Express 2005 with C# - part 2
Sabtu, 03 Juli 2010
Fungsi Konversi Terbilang C#
Sudah lama sekali rasanya tidak memiliki semangat untuk belajar sesuatu yang baru mungkin dikarenakan kesibukan dan juga mungkin umur yang sudah mulai beranjak tua (hahahahahaa baru sadar sudah tidak muda lagi).
Langsung aja, kemarin iseng-iseng bongkar-bongkar kode-kode program lamaku dulu, salah satunya program "konversi terbilang" yang dulu saya buat dengan delphi ver 5 dan buat teman-teman delphier sekarang website resminya kalau nggak salah http://www.embarcadero.com, sebelumnya penulis mohon maaf karena sebetulnya ini adalah materi/topik yang sudah kadaluarsa bagi rekan-rekan programmer.
Ada perasaan pengen tahu aja apakah penulisan program yang dibuat penulis waktu jaman jadul bisa diterapkan dalam jaman sekarang akhirnya penulis mencoba mempelajari bahasa pemrograman yang penulis amati sedang beken saat ini " VISUAL STUDIO - C# " yang kalau tidak salah dikembangkan oleh Microsoft,.
Kembali ke konversi bilangan tadi, ternyata memang dari segi logika mungkin teman-teman bilang algoritma alur dalam bahasa delphi dengan bahasa pemrograman yang lain tidaklah berbeda yang membedakan hanyalah sintak dari masing-masing program tersebut.
Mungkin penulis akan memaparkan sekelumit dari contoh code program yang penulis buat menggunakan C# seperti hasil contoh didalam gambar diatas. Akan tetapi penulis mohon maaf apabila banyak kekurangannya karena untuk saat ini penulispun baru mempelajari C# tersebut ibarat bayi masih belajar merangkak...
using System;
using System.Collections.Generic;
using System.Text;
namespace cenkDll
{
public class fungsibilangan
{
string c1, c2, huruf, c;
char[] d;
public string C
{
set { this.c = value; }
get { return this.c; }
}
public string C1
{
set { this.c1 = value; }
get { return this.c1; }
}
public string C2
{
set { this.c2 = value; }
get { return this.c2; }
}
public string Huruf
{
set { this.huruf = value; }
get { return this.huruf; }
}
public string konversi(string karakter)
{
int i,a1,a2,a3;
string k,potong;
a1 = karakter.IndexOf(',');
a2 = karakter.IndexOf('.');
i = 0;
if ((a1 != 0) || (a2 != 0))
{
if (a1 > a2)
{
k = karakter.Substring(0, a1);
c = "";
for (i = 0; i < potong =" k.Substring(i," c =" c"> 1)
{
k = karakter.Substring(a1 + 1, 2);
}
else
{
k = karakter.Substring(a1 + 1, 1);
k = k + "0";
}
}
else
{
k = karakter;
c = "";
for (i = 0; i != k.Length; i++)
{
potong = k.Substring(i, 1);
if (potong != ",")
{
c = c + potong;
}
}
if ((k.Length) - a2 > 1)
{
k = karakter.Substring(a2 + 1, 2);
}
else
{
k = karakter.Substring(a2 + 1, 1);
k = k + "0";
}
}
}
else
{
c = karakter;
k = "00";
}
if (c.Length > 9)
{
a3 = c.Length;
i = 0;
while (i <= 8) { d[8 - i] = c[a3]; a3 = a3 - 1; i++; } for (i = 0; i <= 8; i++) { a3 = c.Length - 9; while (a3 > 0)
{
d[a3 - 1] = c[a3];
a3 = a3 - 1;
}
}
for (i = 0; i <= 8; i++) { c1 = c1 + d[i]; a1 = Int32.Parse(c1); a2 = Int32.Parse(c2); huruf = trilyunan(a1)+" "+jutaan(a2); } } else { a1 = Int32.Parse(c); huruf = jutaan(a1); } if ((k.Trim() != "00") & (k.Trim() != "0")) { if (huruf == "") { huruf = "Nol Koma"; huruf = huruf + " Koma " + koma(k); } } return huruf; } private string trilyunan(int angka) { string kata; int a, b; a = angka % 1000; b = (angka - a) / 1000; kata = ""; if (b > 0)
{
kata= ratusan(b)+" Trilyun "+ milyaran(a);
}
else
{
kata=milyaran(angka);
}
return kata;
}
private string milyaran(int angka)
{
string kata;
kata = " ";
if (angka > 0)
{
kata = ratusan(angka) + " Milyar";
}
else
{
kata = " ";
}
return kata;
}
private string jutaan(int angka)
{
string kata;
int a, b;
a = angka % 1000000;
b = (angka - a) / 1000000;
kata = " ";
if (b > 0)
{
kata = ratusan(b) + " Juta " + ribuan(a);
}
else
{
kata = ribuan(angka);
}
return kata;
}
private string ribuan(int angka)
{
string kata;
int a, b;
a = angka % 1000;
b = (angka - a) / 1000;
kata = " ";
if (b > 0)
{
if (b == 1)
{
kata = "Seribu " + ratusan(a);
}
else
{
kata = ratusan(b) + " Ribu " + ratusan(a);
}
}
else
{
kata = ratusan(angka);
}
return kata;
}
private string ratusan(int angka)
{
string kata;
int a, b;
a = angka % 100;
b = (angka - a) / 100;
kata = " ";
if (b > 0)
{
if (b == 1)
{
kata = "Seratus " + puluhan(a);
}
else
{
kata = satuan(b) + " Ratus " + puluhan(b);
}
}
else
{
kata = puluhan(angka);
}
return kata;
}
private string puluhan(int angka)
{
string kata;
int a, b;
a = angka % 10;
b = (angka - a) / 10;
kata = " ";
if (b > 0)
{
if (b == 1)
{
if (a == 0)
{
kata = "Sepuluh";
}
else
{
if (a == 1)
{
kata = "Sebelas";
}
else
{
kata = satuan(a) + " Belas";
}
}
}
else
{
kata = satuan(b) + " Puluh " + satuan(a);
}
}
else
{
kata = satuan(angka);
}
return kata;
}
private string satuan(int angka)
{
string kata;
kata = "";
switch (angka)
{
case 0: kata="";break;
case 1: kata="Satu";break;
case 2: kata="Dua";break;
case 3: kata="Tiga";break;
case 4: kata="Empat";break;
case 5: kata="Lima";break;
case 6: kata="Enam";break;
case 7: kata="Tujuh";break;
case 8: kata="Delapan";break;
case 9: kata="Sembilan";break;
}
return kata;
}
private string koma(string angka)
{
string kata;
kata = "";
int a, b;
kata = angka.Substring(0,1);
a = Int32.Parse(kata);
if (a == 0)
{
kata = "Nol";
}
else
{
kata = satuan(a);
}
a = Int32.Parse(angka);
b = a % 10;
a = (Int32.Parse(angka) - b) / 10;
kata=kata+" "+satuan(a);
return kata;
}
}
Demikian kira-kira dari fungsi konversi terbilang yang penulis coba implementasikan didalam C#, mohon maaf sebelumnya mungkin fungsi ini belum terlalu sempurna, untuk kesempurnaan teman-teman dapat melengkapinya , dan penulis informasikan bahwa fungsi konversi ini sudah dapat mendeiteksi format penulisan digit versi indonesia (xxx.xxx.xxx) ataupun versi inggris (xxx,xxxx,xxx), terimakasih