DjieSoft, All About Source Code


This is about programming, information technology, computers, source code, program, application and more ...
_______________________________________________________________________________{FOR EDUCATION}
Search in djiesoft

Search with Google

1.Banyak Web/Blog Lain Yang Meng-COPY Sebagian/Seluruh Content/Isi Blog DJIESOFT. BE CAREFUL !!!
2.Beberapa LINK DJIESOFT ada yang Broken karena TUSFILES menghapus file yang sudah lama/expired (1 Year).
3.Please report broken link to be re-Uploaded !

Selasa, 27 Desember 2011

Basic Generate Auto Number (Increment)

Posting saya kali ini tentang cara generate auto number (auto increment), ini adalah contoh paling sederhana (basic) dari auto increment. Contohnya: 01,02,03 dan seterusnya. Nah kita juga bisa membuat jumlah digit-nya menjadi dinamis, contoh: 3digit (001,002,..), 4digit (0001,0002,..) dan seterusnya. selanjutnya kita juga harus memperhitungkan batas maxsimal dari increment itu sendiri, contoh: 2digit (max 99), 3digit (max 999) dan seterusnya, hal ini perlu untuk mencegah terjadinya error saat penyimpanan data ke table jika lenght number sudah melebihi field lenght-nya. seperti biasa saya sudah buatkan codingnya, silahkan disimak baik baik ya..
Ini Untuk VB.NET : 
Function GenerateNumber(ByVal pMaxDigits As Integer) As String
        Try
            'validasi
            If pMaxDigits < 1 Then Return ""
            'buka koneksi
            Using con As New Odbc.OdbcConnection("dsn=local")
                con.Open()
                'select field table
                Dim cmd As New Odbc.OdbcCommand("SELECT No FROM tbl_test WHERE LEN(No)=" + pMaxDigits.ToString + " ORDER BY NO DESC", con)
                'buat temporary default 0
                Dim TempDigit As String = New String("0", pMaxDigits)
                Dim TempNo As Double = 0
                If cmd.ExecuteScalar Is Nothing Then
                    'jika tabel tbl_test masih kosong / belum ada data
                    'maka set 01 (banyak angka nol tergantung dari parameter pMaxDigit)
                    TempDigit = Mid(TempDigit, 1, pMaxDigits - 1) + "1"
                Else
                    'jika tabel sudah ada data nya, maka increment
                    TempNo = Val(cmd.ExecuteScalar) + 1
                    'jika Field Lenght table = New Number Lenght
                    If TempNo.ToString.Length = pMaxDigits Then
                        TempDigit = Mid(TempDigit, 1, pMaxDigits - TempNo.ToString.Length) + TempNo.ToString
                    Else
                        MessageBox.Show("Panjang Digit Sudah Maksimal, Tidak Bisa Ditambah Lagi!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
                    End If
                End If
                Return TempDigit
            End Using
        Catch ex As Exception
            MessageBox.Show(Err.Description, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return ""
        End Try
    End Function


Untuk VB.6 :
Function GenerateNumber(ByVal pMaxDigits As Integer) As String
    On Error GoTo djieHandle
        'validasi
        If pMaxDigits < 1 Then GenerateNumber = "": Exit Function
        'buka koneksi
        Dim con As New ADODB.Connection
        con.CursorLocation = adUseClient
        con.Open ("dsn=local")
        'select field table
        Dim rec As New ADODB.Recordset
        Set rec = con.Execute("SELECT No FROM tbl_test WHERE LEN(No)=" & pMaxDigits & " ORDER BY NO DESC")
        'buat temporary default 0
        Dim TempDigit As String
        TempDigit = String(pMaxDigits, "0")
        Dim TempNo As String
        TempNo = ""
        If rec.EOF = True Or rec.BOF = True Then
            'jika tabel tbl_test masih kosong / belum ada data
            'maka set 01 (banyak angka nol tergantung dari parameter pMaxDigit)
            TempDigit = Mid(TempDigit, 1, pMaxDigits - 1) + "1"
        Else
            'jika tabel sudah ada data nya, maka increment
            TempNo = Trim(Str(Val(rec.Fields(0).Value) + 1))
            'jika Field Lenght table = New Number Lenght
            If Len(TempNo) = pMaxDigits Then
                TempDigit = Mid(TempDigit, 1, pMaxDigits - Len(TempNo)) & TempNo
            Else
                MsgBox "Panjang Digit Sudah Maksimal, Tidak Bisa Ditambah Lagi!", vbExclamation, "Error"
            End If
        End If
        rec.Close
        GenerateNumber = TempDigit
    Exit Function
djieHandle:
    MsgBox Err.Description, vbExclamation, "Error"
    GenerateNumber = ""
End Function

Silahkan kembangkan lagi function tersebut sesuai kebutuhan, sekian dan semoga bermanfaat.

Tags:
autonumber, generate number, using function, how to generate autonumber, queue, auto increment, vbnet, c#, source code, sample, using auto increment

Related Post:

13 komentar:

  1. makasih gan,



    http://www.brigade-antivirus.com/A/index.php?id=Ismail

    BalasHapus
    Balasan
    1. ok... saya segea kunjungi balik,

      Hapus
    2. dilanjut gan ^^


      buat yg mau pasang iklan baris gratis
      disini : www.iklan.brigade-antivirus.com

      Hapus
  2. Mas, mau tanya nih.
    saya ada tbel karyawan di mysql fieldnya (idkar, kodekar,....dst)
    trus saya pingin idkar pada vb tampil secara berurutan otomatis (1,2,3..dst) pada form input karyawan.

    disini idkar saya jdikan PK, supaya kodekar sewaktu2 bisa diedit.

    gmana donk caranya mas..

    BalasHapus
    Balasan
    1. idkar itu di jadikan identity (auto incerment) jadi otomatis 1,2,3,4,5,6... ga perlu kita isi dari program/secara coding. contoh :
      insert into karyawan (kodekar,....dst) values (...)
      jadi mulainya dari kodekar bukan dari idkar

      contoh struktur tablenya :

      CREATE TABLE table_ai (
      kode_transaksi INT NULL AUTO_INCREMENT KEY,
      deskripsi VARCHAR(200)
      )

      INSERT INTO table_ai(deskripsi) VALUES ('deskripsi 1');

      Hapus
    2. Mas,, tapi kalo mau nampilin di textbox gimana?
      textbox nya saya disable. jadi tiap kali di run form karyawan, di texbox nomornya udah otomatis nambah sendiri. jadi yng diisi tinggal kodekar, namakar, dst..

      ada prosedur/fungsi gak mas..

      mohon pencerahannya mas.
      terimakasih.

      Hapus
  3. oke terima kasih mass...

    sangat bermanfaat..!!!!

    BalasHapus
    Balasan
    1. lengkapnya disini :
      http://djiesoft.blogspot.com/2012/08/cara-memebuat-generate-auto-numberno.html

      Hapus
  4. mas saya masih kurang jelas dengan kodingan untuk vb6.
    itu kodingannya dimasukkan ke field kodingan mana ?.Sub_load kah ?
    trims

    BalasHapus
    Balasan
    1. untuk penyimpannnnya itu tergantung kebutuhan,
      bisa di form_load, tombol_new_click, dll

      Hapus
  5. Mas Pandji mo tanya nih misal mo buat autonumber di datagrid view berdasarkan nilai dari Textbox + 1, dan nilai pada textbox bisa kita rubah sewaktu-waktu

    BalasHapus
    Balasan
    1. tinggal gini aja :
      sub btn_add_to_grid_click()
      'sintak add to grid
      Textbox.text = val(Textbox.text) + 1
      end sub

      Hapus