Penomoran Otomatis Pada C#

Penomoran Otomatis Pada C# - Disini saya meggunakan SQL server 2005 sebagai databasenya. Pertama buatlah terlebih dahulu tabel yang ingin anda beri nomor otomatis dari database yang sudah anda buat.
Misal disini saya menggunakan tabel User.


Kemudian buat desing formnya.


textBox1 = Kode User
textBox2 = Nama
textBox3 = Username
textBox4 = Password
textBox5 = Jabatan

Kemudian tuliskan script berikut pada code form program.

private string NoUser
        {
            get
            {
                string nomer = "USR-0001";
                SqlCommand cmd = new SqlCommand("select max(right(kode_user,4)) from tb_user",
                    MyData.Connection);
                SqlDataReader reader = cmd.ExecuteReader();
                reader.Read();
                if (reader[0].ToString() != "")
                    nomer = "USR-" + (int.Parse(reader[0].ToString()) + 1).ToString("0000");

                reader.Close();
                return nomer;
            }
        }


kode_user adalah primary key dari tabel, nama tabelnya tb_user. Untuk nama awal kode otomatis disitu saya gunakan USR-0001 urut hingga berikutnya..

Doble klik form.

pada form load ketikkan berikut ini, 

textBox1.Text = NoUser;

yang kita buat otomatis adalah kode usernya.. untuk membuat nomer kembali otomatis saat selesai penyimpanan maka ketikkan script textBox1.Text = NoUser; pada code button simpannya. Jadi hasilnya nanti setiap selesai penyimpanan nomer akan otomatis mendeteksi nomer selanjutnya pada database.

berikut hasilnya :


Nah, itu yang dapat saya share.. semoga bermanfaat..  

29 komentar

Alhamdulillah berhasil, makasih telah share source code.

Ini Source Code ku :

private string NoUser
{
get
{
if (oc.State == ConnectionState.Closed) oc.Open();

string nomer = "SPK-00001";
OracleCommand cmd = new OracleCommand("select max(substr(PRIMARY_KEY_SPK,-5)) from SPK", oc);

OracleDataReader reader = cmd.ExecuteReader();
reader.Read();
if (reader[0].ToString() != "")
nomer = "SPK-" + (int.Parse(reader[0].ToString()) + 1).ToString("00000");

reader.Close();
return nomer;
}
}

Mkash, jdi nambah refrensi jg bwt yg pakek oracle.. Terima kasih sharenya :)

ba kenapa myData saya error

Meli : Buat class baru dg nama "MyData" isinya kyak gne



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace SWOT
//SWOT = nama project
{
class MyData
{
public static string ConnectionString
{
get
{
return "Server=localhost; Initial Catalog=SWOT; Integrated Security=true";

//Initial Catalog = nama database yang digunakan
}
}

private static SqlConnection _connection;
public static SqlConnection Connection
{
get
{
if (_connection == null)
_connection = new SqlConnection(ConnectionString);
if (_connection.State == ConnectionState.Closed)
_connection.Open();

return _connection;
}
}

}
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;


namespace input
{
public partial class WebForm5 : System.Web.UI.Page
{
private string NoUser
{
get
{
string nomer = "USR-001";
SqlCommand cmd = new SqlCommand("select max(right(KodeBarang,4)) from Barang",
MyData.Connection);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
if (reader[0].ToString() != "")
nomer = "USR-" + (int.Parse(reader[0].ToString()) + 1).ToString("00");

reader.Close();
return nomer;
}
}
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = NoUser;
}
}
}

ba aku taroh sintaknya disitu. tp error. salah dimana y

oh y ba maaf, alhamdulillah sudah berhasil. terima kasih.

saya mw tanya lagi ba sintak untuk button klik tambah supaya noUser bisa masuk ke database kode_user itu bagaimana? terima kasih

Meli : pada button tambah, tambahkan script berikut ini

tambah = true;
textBox1.Text = NoUser;

untuk coding simpannya seperti ini


SqlCommand cmd = new SqlCommand();
cmd.Connection = MyData.Connection;
cmd.CommandType = CommandType.Text;

try
{
if (tambah == true)
{
cmd.CommandText = "insert into tb_user (kode_user, nama,username,pass,jabatan) values('" + textBox1.Text + "','" + textBox2.Text + "','" + textBox3.Text + "','" + textBox4.Text + "','" + textBox5.Text + "')";
}
else
{
cmd.CommandText = "update tb_user set nama='" + textBox2.Text + "', username='" + textBox3.Text + "', pass='" + textBox4.Text + "', jabatan='" + textBox5.Text + "' where kode_user='" + textBox1.Text + "'";

}
cmd.ExecuteNonQuery();


MessageBox.Show("Data Tersimpan !!");

}
catch (SqlException ex)
{
MessageBox.Show("Gagal menyimpan: \n" + ex.Message);
}

ba di buuton tambah saya tulis sperti ini
protected void tambah_Click(object sender, EventArgs e)
{
tambah = true;
TextBox1.Text = NoUser;
}
tetapi truenya itu msh ada tanda merahnya? itu kenapa y ba?
tambah itu id button? atau apa? terima kasih

Meli : sebelumnya dideklarasikan dlu diatas kayak gne

private bool tambah = false;

makasih ba bantuannya, sudah tidak ada yang error. tp databasenya tidak masuk? :(

Meli : tidak masuk dimananya ya ? tidak bisa disimpan ?

iya gak bisa disimpan. Ada kata2 data tersimpan tp di databasenya tdk masuk.

Meli : Type datanya sudah benar ? mungkin koneksinya yg msh salah. Coba dicek lgi.

saya kode_usernya pke varchar ngaru gk ba?

Meli : Gak ngaruh sbnernya, char sama varchar kan sma2 utk type text. Coding simpannya mungkin, coba dicek lgi.

ba, terima kasih banyak bantuannya. saya sudah berhasil buat kode otomatis dan bisa masuk ke databasenya.
kmrn kyknya saya salah taroh sintak jd saya jadiin satu sintak simpan dan tambahnya. alhmadulillah berhasil kayak gini sintaknya ba
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using input.Acces;


namespace input
{
public partial class WebForm5 : System.Web.UI.Page
{
private string NoUser
{
get
{
string nomer = "OBT-0001";
SqlCommand cmd = new SqlCommand("select max(right(KodeBarang,4)) from Coba",
MyData.Connection);
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
if (reader[0].ToString() != "")
nomer = "OBT-" + (int.Parse(reader[0].ToString()) + 1).ToString("0000");

reader.Close();
return nomer;
}
}
protected void Page_Load(object sender, EventArgs e)
{
TextBox1.Text = NoUser;
}


private bool tambah = false;
protected void tambah_Click(object sender, EventArgs e)
{
tambah = true;
TextBox1.Text = NoUser;
SqlCommand cmd = new SqlCommand();
cmd.Connection = MyData.Connection;
cmd.CommandType = CommandType.Text;
TextBox1.Text = NoUser;
try
{
if (tambah == true)
{
cmd.CommandText = "insert into Coba (KodeBarang, NamaBarang) values('" + TextBox1.Text + "','" + TextBox2.Text + "')";
}
else
{
cmd.CommandText = "update Coba set NamaBarang='" + TextBox2.Text + "' where KodeBarang='" + TextBox1.Text + "'";

}
cmd.ExecuteNonQuery();

TextBox2.Text = "";
Label1.Text = ("Data Tersimpan !!");
Response.Redirect("WebForm5.aspx");
}
catch (SqlException ex)
{
Label1.Text = ("Gagal menyimpan: \n" + ex.Message);
Response.Redirect("WebForm5.aspx");
}
}

}
}

ba,, saya mw tanya lagi klo boleh. tp ini diluar topik. bagaimana caranya supaya data dari gridview itu bisa dijumlah nilainya.
misal saya punya tabel nama barang, jumlah barang. nah jumlah barang itu bisa ditotalin. punya referensinya gak ba? terima kasih

Meli : Sebentar ya.. utk coding akan segera sya upload. Insyallah secepatnya..

Mba Saya pake MySql nieh,,
tapi kode/id otomatisnya ga muncul,,
Sudah di otak atik tp bingung masalahnya dmn gt,,
Codingnya kayak gini :
-------------------------------------------------------------
public static string kanan(string param, int length)
{
string result = param.Substring(param.Length - length, length);
return result;
}

private void otomatis()
{
{
string MyConString = "server=localhost;" + "database=dbcoba;" + "username=root;" + "password=;";
MySqlConnection conn = new MySqlConnection(MyConString);
conn.Open();
MySqlCommand query = conn.CreateCommand();
string que = "select count(ID) from tb_coba";
query.CommandText = que;

try
{
MySqlDataReader result = query.ExecuteReader();
while (result.Read())
{
if (result[0].ToString() == "0")
{
int panjangno;
string countdata = "1";
panjangno = countdata.Length;
int panjang;
string nooto = "0000";
panjang = nooto.Length;
int len = panjang - panjangno;
string prm = kanan(nooto, len);
txtID.Text = "USR-" + prm + countdata;
}
else
{
string test = result[0].ToString();
int jumlah = Convert.ToInt32(test) + 1;
string countData = jumlah.ToString();
int panjangno = countData.Length;
int panjang;
string nooto = "0000";
panjang = nooto.Length;
int len = panjang - panjangno;
string prm = kanan(nooto, len);
txtID.Text = "USR-" + prm + countData;
}
}
}
catch (Exception err)
{
MessageBox.Show("Error : " + err);
}
}
}
------------------------------------------------------------
Itu kesalahannya dimana ya mba??
Atau mungkin ada cara yang lebih sederhana lagi mungkin mba..
Terima Kasih.. :)

get
{
string nomor = "K0001";
SqlCommand cmd = new SqlCommand("select max(right(kd_kec,4)) from Kecamatan", AutoNoKec.Connection);
SqlDataReader dr = cmd.ExecuteReader();
dr.Read();
if (dr[0].ToString() != "")
---> nomor = "USR-" + (int.Parse(dr[0].ToString()) + 1).ToString("0000");
dr.Close();
return nomor;
}

error input string incorect format mbak
thanx

mbak kalo misalnya di string nomer = "USR-0001"; ditambahkan jadi "USR 0001 VGA" gimana? setelah 1 bisa ditambahkan valuenya tidak?

Makasih mba udah share... :)

kalo buat datagridview indexnya berwarna bisa nggk mba jika stok bernilai 0 maka warnanya merah...

terimakasih mba

kok punya saya yang errornya MyData nya ia gan?

kak errorr "The connection was not closed. The connection's current state is open." kenapa ya ? itu ketika di klik tambah

mba Mydata saya masih eror dan masih belum paham pembuatan class baru itu

Berkomentar yang sopan ya, Terimakasih sahabat..
EmoticonEmoticon