Datetime format antara aplikasi dan SQL Server

Seringkali pada saat kita mendevelop sebuah aplikasi di Visual Studio (VB/C#), kita terkendala dengan format date/time pada saat akan menyimpan data berupa date/time. secara default SQL Server menyimpan data tanggal dengan format English United Stated yaitu yyyy-MM-dd hh:mm:ss sedangkan di komputer client di mana aplikasi kita terinstal bisa saja menggunakan format berbeda misalnya menggunakan format Indonesia yaitu dd-MM-yyyy hh:mm:ss.

Dengan situasi seperti diatas, biasanya pada saat akan melakukan penyimpanan akan muncul error sepeti di bawaah ini:

error datetime

Untuk mengatasi problem di atas, berikut solusinya. misalkan kita punya form yang berisi tanggal yang akan kita simpan ke database SQL Server seperti dibawah:

FormTanggal

kemudian kita punya tabel dengan nama TCoba dengan design sebagai berikut:

TableTanggal

untuk dapat menyimpan data tanggal pada form ke tabel SQL server dengan format yang berbeda, berikut contoh coding nya.

'deklarasikan variable untuk menampung data tanggal
Dim dt1 As DateTime = TextBox1.Text
Dim dt2 As Date = TextBox2.Text

'format variable tanggal yang sudah di deklarasikan sesuai dengan format SQL server
Dim strQuery As String = "Insert into TCoba(a,b) values('" & dt1.ToString("yyyy-MM-dd hh:mm:ss") & "', '" & dt2.ToString("yyyy-MM-dd") & "')"

'simpan data ke SQL server
Using con As New SqlConnection("Data Source=(local);Initial Catalog=dbTest;User ID=sa;Password=sajuga;")
	con.Open()
	Using cmd As New SqlCommand(strQuery, con)
		cmd.ExecuteNonQuery()
	End Using
End Using

Demikian share dari saya, semoga bermanfaat. Selamat mencoba.

VB.NET – Get the first/last day of the Work Week

Lanjutan dari artikel saya sebelumnya, sekarang akan saya share cara mendapatkan first/last day dari workweek tertentu:

'Get the first day of the week
Public Function FirstDayOfWeek(ByVal sourceDate As DateTime) As DateTime    
    Return New DateTime(DateAdd(DateInterval.Day, -Weekday(sourceDate , FirstDayOfWeek.Friday) + 1, sourceDate))
End Function
  
'Get the last day of the week
Public Function LastDayOfMonth(ByVal sourceDate As DateTime) As DateTime
    Dim lastDay As DateTime = New DateTime(DateAdd(DateInterval.Day, 6, sourceDate))
End Function

Demikian semoga bermanfaat, selamat mencoba.

VB.NET – Get the first/last day of the month

Terkadang kita butuh untuk menampilkan tanggal pada bulan tertentu, ada kalanya user ingin menampilkan sebuah laporan rutin setiap bulan berjalan tanpa harus memilih range tanggal untuk bulan tersebut.

berikut adalah fungsi untuk mendapatkan tanggal pertama dan terakhir untuk bulan tertentu:

'Get the first day of the month
Public Function FirstDayOfMonth(ByVal sourceDate As DateTime) As DateTime    
    Return New DateTime(sourceDate.Year, sourceDate.Month, 1)
End Function
 
'Get the last day of the month
Public Function LastDayOfMonth(ByVal sourceDate As DateTime) As DateTime
    Dim lastDay As DateTime = New DateTime(sourceDate.Year, sourceDate.Month, 1)
    Return lastDay.AddMonths(1).AddDays(-1)
End Function

Demikian semoga bermanfaat, selamat mencoba.

source: https://begeeben.wordpress.com/2012/05/03/get-the-firstlast-day-of-the-month-with-vb-net/

Operator Ternary di VB.Net/C#

Operator ternary (bisa juga di sebut fungsi) adalah operator atau fungsi yang bisa kita gunakan untuk mempersingkat penulisan if… else. Jadi dengan menggunakan operator ini kita bisa menyederhanakan penulisan code if…else kita.

Okay langsung saja ke contoh kasus dan penggunaannya. Misalkan kita mempunyai form biodata yang berisi jenis kelamin seperti gambar di bawah:

formBiodata

Nah kita akan menyimpan datanya ke database, jika Radio Button Pria di pilih maka jenis kelamin adalah “PRIA”, selain itu makan “WANITA”. dengan memakai if…else maka kita bisa menulis kode sebagai berikut:

VB.Net:

    Private Sub btnSimpan_Click(sender As Object, e As EventArgs) Handles btnSimpan.Click
        Dim jenisKelamin As String = String.Empty
        If radioButtonPria.Checked Then
            jenisKelamin = "PRIA"
        Else
            jenisKelamin = "WANITA"
        End If
        Dim SqlInsert As String = "INSERT INTO T_KARYAWAN(NoKarywan,Nama,Alamat,JK) " & _
                                  "VALUES ('" & textNoKar.Text & "','" & textNama.Text & "','" & textAlamat.Text & "', '" & jenisKelamin & "') "

    End Sub

C#:

        private void btnSimpan_Click(object sender, EventArgs e)
        {
            string jenisKelamin = String.Empty;

            if (radioButtonPria.Checked)
            {
                jenisKelamin = "PRIA";
            }
            else
            {
                jenisKelamin = "WANITA";
            }

            string SqlInsert = "INSERT INTO T_KARYAWAN(NoKarywan,Nama,Alamat,JK) " +
                               "VALUES ('" + textNoKar.Text + "','" + textNama.Text + "','" + textAlamat.Text + "', '" + jenisKelamin + "') ";

        }

Dengan menggunakan operator ternary kita bisa sederhanakan menjadi sebagai berikut:

VB.Net:

Private Sub btnSimpan_Click(sender As Object, e As EventArgs) Handles btnSimpan.Click
Dim jenisKelamin As String = IIf(radioButtonPria.Checked, "PRIA", "WANITA")
Dim SqlInsert As String = "INSERT INTO T_KARYAWAN(NoKarywan,Nama,Alamat,JK) " & _
"VALUES ('" & textNoKar.Text & "','" & textNama.Text & "','" & textAlamat.Text & "', '" & jenisKelamin & "') "

End Sub

C#:

        private void btnSimpan_Click(object sender, EventArgs e)
        {
            string jenisKelamin = radioButtonPria.Checked ? "PRIA" : "WANITA";
            string SqlInsert = "INSERT INTO T_KARYAWAN(NoKarywan,Nama,Alamat,JK) " +
                               "VALUES ('" + textNoKar.Text + "','" + textNama.Text + "','" + textAlamat.Text + "', '" + jenisKelamin + "') ";

        }

atau bisa juga langsung kita tuliskan di dalam statement/query tanpa harus membuat variabel terlebih dahulu, seperti berikut:

VB.Net:

        Dim SqlInsert As String = "INSERT INTO T_KARYAWAN(NoKarywan,Nama,Alamat,JK) " & _
                                    "VALUES ('" & textNoKar.Text & "','" & textNama.Text & "','" & textAlamat.Text & "', '" & IIf(radioButtonPria.Checked, "PRIA", "WANITA") & "') "

C#:

            string SqlInsert = "INSERT INTO T_KARYAWAN(NoKarywan,Nama,Alamat,JK) " +
                               "VALUES ('" + textNoKar.Text + "','" + textNama.Text + "','" + textAlamat.Text + "', '" + radioButtonPria.Checked.ToString() == "True" ? "PRIA" : "WANITA" + "') ";

Fungsi ini bisa diaplikasikan di kasus-kasus lain yang menggunakan logika if…else. demikian sharing kali ini, selamat mencoba semoga bermanfaat…

Cara Posting Source Code pada WordPress

Tambahkan tag berikut pada saat menulis blog:

[code language="vb"]
copy/paste source nya di sini
[/code]

Pilihan Parameter languane (bahasa pemrograman) yang di dukung:

  • actionscript3
  • bash
  • clojure
  • coldfusion
  • cpp
  • csharp
  • css
  • delphi
  • diff
  • erlang
  • fsharp
  • go
  • groovy
  • html
  • java
  • javafx
  • javascript
  • latex (you can also render LaTeX)
  • matlab (keywords only)
  • objc
  • perl
  • php
  • powershell
  • python
  • r
  • ruby
  • scala
  • sql
  • text
  • vb
  • xml

Jika parameter languange tidak di set, maka default nya adalah “Text”

Configuration Parameters

The shortcodes also accept a variety of configuration parameters that you may use to customize the output. All are completely optional.

  • autolinks (true/false) — Makes all URLs in your posted code clickable. Defaults to true.
  • collapse (true/false) — If true, the code box will be collapsed when the page loads, requiring the visitor to click to expand it. Good for large code posts. Defaults to false.
  • firstline (number) — Use this to change what number the line numbering starts at. It defaults to 1.
  • gutter (true/false) — If false, the line numbering on the left side will be hidden. Defaults to true.
  • highlight (comma-seperated list of numbers) — You can list the line numbers you want to be highlighted. For example “4,7,19”.
  • htmlscript (true/false) — If true, any HTML/XML in your code will be highlighted. This is useful when you are mixing code into HTML, such as PHP inside of HTML. Defaults to false and will only work with certain code languages.
  • light (true/false) — If true, the gutter (line numbering) and margin (see below) will be hidden. This is helpful when posting only one or two lines of code. Defaults to false.
  • padlinenumbers (true/false/integer) — Allows you to control the line number padding. true will result in automatic padding, false will result in no padding, and entering a number will force a specific amount of padding.
  • title (string) — Set a label for your code block. Can be useful when combined with the collapse parameter.

Selamat bebagi source code, selamat menulis…

source: https://en.support.wordpress.com/code/posting-source-code/

Bekerja Dengan SqlCommand Parameter pada VB.Net

Langsung saja, berikut adalah contoh-contoh penggunaan SqlCommand parameter. sebenarnya kita bisa langsung menuliskan value dari query yang ingin kita tulis pada query sql misalnya sebagai berikut:

        Dim strQuery As String = "SELECT UserLogin, UserName, UserPassword FROM MUser where UserLogin='" & TxtUserLogin.Text & "' and UserPassword='" & TxtUserPassword.Text & "' "
        Using cmd As New SqlCommand(strQuery, con)
            Using rd As IDataReader = cmd.ExecuteReader()
                If rd.Read() Then
                    FrmMain.Show()
                Else
                    MsgBox("User login/password salah")
                End If
            End Using
        End Using

Dengan cara di atas terlihat sangat sederhana, tapi cara tersebut sangat riskan akan SQL Injection, oleh karena itu akan lebih baik dan aman kalau kita menggunakan parameter untuk by pass value pada query SQL.

Nah berikut ragam cara penggunaan SqlCommand parameter:

1. Menggunakan method SqlCommand.Parameters.add

        Using con As New SqlConnection(strConString)
            con.Open()
            Using cmd As New SqlCommand("INSERT INTO account(ID,Name) VALUES(@ID,@Name)", con)
                cmd.Parameters.Add("@ID", SqlDbType.BigInt).Value = 1
                cmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = "Jhon"
                cmd.ExecuteNonQuery()
            End Using
        End Using

2. Menggunakan method SqlCommand.Parameters.AddWithValue
Dengan cara ini kita bisa langsung mengisikan value dari parameter tanpa harus mendefinisikan type data nya terlebih dahulu.

        Using con As New SqlConnection(strConString)
            con.Open()
            Using cmd As New SqlCommand("INSERT INTO account(ID,Name) VALUES(@ID,@Name)", con)
                cmd.Parameters.AddWithValue("@ID", "1")
                cmd.Parameters.AddWithValue("@Name", "Jhon")
                cmd.ExecuteNonQuery()
            End Using
        End Using

3. Mengunakan method SqlCommand.Parameters.AddRange
Dengan cara ini kita bisa menyimpan SqlParameter dalam bentuk array, sehingga akan menyederhanakan penulisan parameter.

        Using con As New SqlConnection(strConString)
            con.Open()
            Dim SqlParams() As SqlParameter = New SqlParameter() {
                New SqlParameter("@ID", "1"),
                New SqlParameter("@Name", "Jhon")
            }

            Using cmd As New SqlCommand("INSERT INTO account(ID,Name) VALUES(@ID,@Name)", con)
                cmd.Parameters.AddRange(SqlParams)
                cmd.ExecuteNonQuery()
            End Using
        End Using

4. Bekerja dengan output parameter
Cara ini digunakan apabila kita menggunakan SQL Store Procedure yang menghasilkan output. Misal kita punya store procedure sebagai berikut:

CREATE PROC SP_Transfer
	@TransferFrom nvarchar(20),
	@TransferTo nvarchar(20),
	@Amount int,
	@Result nvarchar(20) output
AS
BEGIN
	BEGIN TRANSACTION
	UPDATE Account set Amount=Amount-@Amount where ID=@TransferFrom
	UPDATE Account set Amount=Amount+@Amount where ID=@TransferTo

	if @@ERROR=0
	 begin
		COMMIT TRANSACTION
		SET @Result='Berhasil'
	 end
	else
	 begin
		ROLLBACK TRANSACTION
		SET @Result='Gagal'
	 end
END

dari store procedure di atas, parameter @Result adalah parameter output. berikut adalah contoh coding untuk menghandel store procedure di atas:

        Using con As New SqlConnection(strConString)
            con.Open()
            Using cmd As New SqlCommand("SP_Transfer", con)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("@TransferFrom", SqlDbType.NVarChar).Value = "123"
                cmd.Parameters.Add("@TransferTo", SqlDbType.NVarChar).Value = "321"
                cmd.Parameters.Add("@Amount", SqlDbType.Int).Value = "1000000"
                cmd.Parameters.Add("Result", SqlDbType.NVarChar).Direction = ParameterDirection.Output
                cmd.ExecuteNonQuery()
                Dim result As String = cmd.Parameters("Result").Value
            End Using
        End Using

handel output parameter menggunakan array SqlParameter:

                Using con As New SqlConnection(strConString)
            con.Open()
            Dim SqlParams() As SqlParameter = New SqlParameter() {
                New SqlParameter("@TransferFrom", "123"),
                New SqlParameter("@TransferTo", "321"),
                New SqlParameter("@Amount", "1000000"),
                New SqlParameter("@Result", SqlDbType.NVarChar)
            }
            SqlParams(3).Direction = ParameterDirection.Output

            Using cmd As New SqlCommand("SP_Transfer", con)
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.AddRange(SqlParams)
                cmd.ExecuteNonQuery()
                Dim result As String = SqlParams(1).Value
            End Using
        End Using

Demikian, Semoga bermanfaat. Selamat mencoba…

SQL Transaction di VB.Net

Ada kalanya pada saat kita mendevelop sebuah aplikasi, kita di hadapkan pada situasi dimana kita harus melakukan penyimpanan/update data pada lebih dari satu tabel pada saat yang bersamaan. Jika ada salah satu transaksi yang gagal maka, maka semua transaksi yang sudah dilakukan akan dibatalkan, sebaliknya jika semua transaksi berhasil maka semua data akan di commit. konsep seperti ini disebut sebagai SQL Transaction.

Berikut beberapa cuplikan cara menggunakan SQL Transaction di VB.Net

Cara 1: Meletakkan SqlTransaction pada properti Transaction pada object SqlCommand

Using Sqlcon As New SqlConnection(strConString)
Sqlcon.Open()
Dim SqlTrans As SqlTransaction = Sqlcon.BeginTransaction()
Using cmd As SqlCommand = Sqlcon.CreateCommand()
cmd.Connection = Sqlcon
cmd.Transaction = SqlTrans
Try
cmd.CommandType = CommandType.Text
cmd.CommandText = "update account set ammount=ammount-1000000 where accountID=1"
cmd.ExecuteNonQuery()
cmd.CommandText = "update account set ammount=ammount+1000000 where accountID=2"
cmd.ExecuteNonQuery()
SqlTrans.Commit()
Catch ex As SqlException
SqlTrans.Rollback()
MsgBox(ex.Message.ToString())
End Try
End Using
End Using

Cara 2: Meletakkan SqlTransaction pada constructor pada object SqlCommand


Using Sqlcon As New SqlConnection(strConString)
Sqlcon.Open()
Dim SqlTrans As SqlTransaction = Sqlcon.BeginTransaction()
Try
Using cmd As New SqlCommand("update account set ammount=ammount-1000000 where accountID=1", Sqlcon, SqlTrans)
cmd.ExecuteNonQuery()
End Using
Using cmd As New SqlCommand("update account set ammount=ammount+1000000 where accountID=2", Sqlcon, SqlTrans)
cmd.ExecuteNonQuery()
End Using
SqlTrans.Commit()
Catch ex As Exception
SqlTrans.Rollback()
MsgBox(ex.Message.ToString())
End Try
End Using

Demikian, semoga bermanfaat. Selamat mencoba…