Showing posts with label Visual Basic. Show all posts
Showing posts with label Visual Basic. Show all posts

Saturday, December 24, 2022

Membuat Game Snake Menggunakan VB.Net

 


1. Rancang Tampilan 



2. Buat Class :  clsMovement.vb

  Private pntLocation As Point

   Private intStep As Integer

   Private iDirection As intDirection

   Public ReadOnly Property Location() As Point

      Get

         Return pntLocation

      End Get

   End Property


   Public Property Direction() As intDirection

      Get

          Return iDirection

      End Get

      Set(ByVal Value As intDirection)

         iDirection = Value

      End Set

   End Property


   Public ReadOnly Property Increment() As Integer

      Get

         Return intStep

      End Get

   End Property


   Public Enum intDirection As Integer

      None = -1

      Left

      Down

      Right

      Up

   End Enum


' Tambahkan Constructors:

   Public Sub New()

      intStep = 8

      pntLocation = New Point(0, 0)

      Direction = intDirection.Right

   End Sub

   Public Sub New(ByVal iStep As Integer, ByVal pStart As Point, _

         ByVal dirNew As intDirection)

      iDirection = dirNew

      intStep = iStep

      pntLocation = pStart

   End Sub


' menambahkan sub procedures:

   Public Function NextLoc(Optional ByVal dirNext _

         As intDirection = intDirection.None) As Point

      Dim pntLoc As New Point(pntLocation.X, pntLocation.Y)

      If (dirNext = intDirection.None) Then dirNext = iDirection

      Select Case dirNext

         Case intDirection.Left

            pntLoc.X -= intStep

         Exit Select

         Case intDirection.Down

            pntLoc.Y += intStep

         Exit Select

         Case intDirection.Right

            pntLoc.X += intStep

            Exit Select

         Case intDirection.Up

            pntLoc.Y -= intStep

            Exit Select

      End Select

      Return pntLoc

   End Function


   Public Sub Move(Optional ByVal dirMove As intDirection = _

         intDirection.None)

      If (dirMove = intDirection.None) Then dirMove = iDirection

      Select Case dirMove

         Case intDirection.Left

            pntLocation.X -= intStep

            Exit Select

         Case intDirection.Down

            pntLocation.Y += intStep

            Exit Select

         Case intDirection.Right

            pntLocation.X += intStep

            Exit Select

         Case intDirection.Up

            pntLocation.Y -= intStep

            Exit Select

      End Select

   End Sub


   Public Sub Move(ByVal rectBounds As Rectangle, Optional ByVal _

         dirMove As intDirection = intDirection.None)

      Move(dirMove)

      If (pntLocation.X > rectBounds.Right) Then

         pntLocation.X = CInt(rectBounds.Left / intStep) * intStep

      ElseIf (pntLocation.X < rectBounds.Left) Then

         pntLocation.X = CInt(rectBounds.Right / intStep) * intStep

      ElseIf (pntLocation.Y > rectBounds.Bottom) Then

         pntLocation.Y = CInt(rectBounds.Top / intStep) * intStep

      ElseIf (pntLocation.Y < rectBounds.Top) Then

         pntLocation.Y = CInt(rectBounds.Bottom / intStep) * _

            intStep

      End If

   End Sub


3. Buat Class : clsSegment.vb

Private rectLoc As Rectangle

   Public ReadOnly Property Rect() As Rectangle

      Get

         Return rectLoc

      End Get

   End Property


   Public Property Loc() As Point

      Get

         Return rectLoc.Location

      End Get

      Set(ByVal Value As Point)

         rectLoc.Location = Value

      End Set

   End Property


   Public ReadOnly Property Size() As Size

      Get

         Return rectLoc.Size

      End Get

   End Property


 'Tambahkan  Constructor:

   Public Sub New(ByVal pntLoc As Point, ByVal intWidth As Integer)

      rectLoc = New Rectangle(pntLoc, New Size(intWidth, intWidth))

   End Sub


   Public Function CloneSegment() As clsSegment

      Return New clsSegment(rectLoc.Location, rectLoc.Width)

   End Function


   Public Overrides Function ToString() As String

      Return Me.GetType.ToString + ": " + rectLoc.Location.ToString

   End Function


4. Buat Class : clsSnake.vb

    Private Const intMaxLength As Integer = 1024

   Private Const intDefaultLength As Integer = 4

   Private Const intDefaultWidth As Integer = 8

   Private qSegments As Queue

   Private intWidth As Integer


  ' tambahkan properties:

   Public Property NumberOfSegments() As clsSegment()

      Get

         Dim cSegments(qSegments.Count - 1) As clsSegment

         qSegments.CopyTo(cSegments, 0)

         Return cSegments

      End Get

      Set(value As clsSegment())

      End Set

   End Property


   Public Property Head() As clsSegment

      Get

         Return DirectCast(qSegments.Peek, clsSegment).CloneSegment

      End Get

      Set(value As clsSegment)

      End Set

   End Property


  ' tambahkan constructor:

   Private Sub InitializeSnake(ByVal pntLoc As Point, _

         ByVal iWidth As Integer, ByVal iLength As Integer)

      intWidth = iWidth

      Dim pLoc As Point = pntLoc

      Dim i As Integer

      For i = 1 To iLength

         Eat(pLoc)

         pLoc.X -= intWidth

      Next

   End Sub


   Public Sub New()

      MyBase.New()

      InitializeSnake(New Point(intDefaultLength * _

         intDefaultWidth, 0), intDefaultWidth, intDefaultLength)

   End Sub


   Public Sub New(ByVal pntStart As Point, _

         ByVal iWidth As Integer, ByVal iLength As Integer)

      MyBase.New()

      InitializeSnake(pntStart, iWidth, iLength)

   End Sub


 ' tambahkan sub procedures and Function:

   Public Sub Eat(ByVal pntLoc As Point)

      Dim cHead As New clsSegment(pntLoc, intWidth)

      If (qSegments Is Nothing) Then

         qSegments = New Queue(intMaxLength)

      ElseIf (qSegments.Count = intMaxLength) Then

         Move(pntLoc)

         Exit Sub

      End If

      qSegments.Enqueue(cHead)

   End Sub


   Public Sub Clear()

      qSegments.Clear()

   End Sub


   Public Sub Move(ByVal pntLoc As Point)

      Dim cHead As New clsSegment(pntLoc, intWidth

      qSegments.Enqueue(cHead)

      qSegments.Dequeue()

   End Sub


   Public Function FoodPlacedOnSnake(ByVal pntLoc As Point) _

         As Boolean

      Dim ieSegments As IEnumerator = qSegments.GetEnumerator

      While ieSegments.MoveNext

         If DirectCast(ieSegments.Current, clsSegment) _

            .Rect.Contains(pntLoc) Then Return True

      End While

   End Function


5. Tambahkan members pada Form:

   Private Const intGrow As Integer = 3

   Private Const intWidth As Integer = 8

   Private cSnake As clsSnake

   Private cMovement As clsMovement

   Private blnMoving As Boolean = False

   Private blnExpanding As Boolean = False

   Private rectFood As Rectangle

   Private intScore As Integer


 ' tambahkan Functions and subs:

   Public Sub Feed()

      Dim pntFood As Point

      Do

         pntFood = Randomize()

         If Not (cSnake Is Nothing) Then

            If Not cSnake.FoodPlacedOnSnake(pntFood) Then Exit Do

         Else

            Exit Do

         End If

      Loop

         rectFood.Location = pntFood

   End Sub


   Private Sub Die()

      DisplayMessage("Press Enter to play or Escape to quit.")

      Initialize()

   End Sub


   Private Sub Initialize()

      intScore = 0

      rectFood = New Rectangle(0, 0, intWidth, intWidth)

      Feed()

      Dim pntStart As New Point(CInt(picGame.ClientSize.Width _

         / 2 / intWidth + 0.5) * intWidth, CInt(picGame _

         .ClientSize.Height / 2 / intWidth + 0.5) * intWidth)

      cSnake = New clsSnake(pntStart, intWidth, 1)

      cMovement = New clsMovement(intWidth, cSnake.Head.Loc, _

         clsMovement.intDirection.Right)

      blnExpanding = True

   End Sub


   Private Sub UpdateUI()

      Static iGrow As Integer = intGrow

      Static intAddSeg As Integer

      If Not blnMoving Then Exit Sub

      cMovement.Move(picGame.ClientRectangle)

      If cSnake.FoodPlacedOnSnake(cMovement.Location) Then

         iGrow = 0

         intAddSeg = 0

         Die()

         Return

      ElseIf rectFood.Contains(cMovement.Location) Then

         iGrow += intGrow

         blnExpanding = True

         Feed()

         intScore += 5

         Text = "Score: " + intScore.ToString

      End If

      If blnExpanding Then

         If iGrow < intGrow Then iGrow = intGrow

         If intAddSeg >= iGrow Then

            blnExpanding = False

            intAddSeg = 0

            iGrow = 0

            cSnake.Move(cMovement.Location)

         Else

            cSnake.Eat(cMovement.Location)

            intAddSeg += 1

            End If

      Else

         cSnake.Move(cMovement.Location)

      End If

   End Sub


   Private Sub DisplayMessage(ByVal strMsg As String)

      lblMessage.Text = strMsg

      lblMessage.Visible = True

      blnMoving = False

      tmrGame.Enabled = False

   End Sub


   Public Function Randomize() As Point

      Dim rnd As New Random(Now.Second)

      Dim intScreenWidth As Integer = ((ClientRectangle.Width \ _

         intWidth) - 2) * intWidth

      Dim intScreenHeight As Integer = ((ClientRectangle.Height \ _

         intWidth) - 2) * intWidth

      Dim intX As Integer = rnd.Next(0, intScreenWidth)

      Dim intY As Integer = rnd.Next(0, intScreenHeight)

      intX = (intX \ intWidth) * intWidth

      intY = (intY \ intWidth) * intWidth

      Return New Point(intX, intY)

   End Function


   Private Sub HideMessage()

      Me.Text = "Score: " + intScore.ToString

      lblMessage.Visible = False

      blnMoving = True

      tmrGame.Enabled = True

   End Sub


6. Tambahkan script pada : form1/vb

Private Sub Form1_Load(ByVal sender As Object, _

         ByVal e As System.EventArgs) Handles MyBase.Load

      Initialize()

   End Sub


   Private Sub picGame_Paint(ByVal sender As Object, ByVal e As _

         System.Windows.Forms.PaintEventArgs) Handles picGame.Paint

      If Not blnMoving Then

         e.Graphics.Clear(picGame.BackColor)

         Exit Sub

      End If

      e.Graphics.FillEllipse(Brushes.White, rectFood)

      Dim segCurrent As clsSegment

      For Each segCurrent In cSnake.NumberOfSegments

         e.Graphics.FillRectangle(Brushes.White, segCurrent.Rect)

      Next

   End Sub


   Private Sub tmrGame_Tick(ByVal sender As System.Object, _

         ByVal e As System.EventArgs) Handles tmrGame.Tick

      UpdateUI()

      picGame.Invalidate()

   End Sub


   Private Sub Form1_KeyUp(ByVal sender As Object, ByVal e As _

         System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyUp

      Select Case e.KeyCode

         Case Keys.Enter

            HideMessage()

         Case Keys.Escape

            If blnMoving Then

               DisplayMessage("Press Enter to continue or Escape _

                  to quit.")

            Else

               Me.Close()

            End If

      End Select

   End Sub


   Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As _

         System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

      Select Case e.KeyCode

         Case Keys.Right

            cMovement.Direction = clsMovement.intDirection.Right

         Case Keys.Down

            cMovement.Direction = clsMovement.intDirection.Down

         Case Keys.Left

            cMovement.Direction = clsMovement.intDirection.Left

         Case Keys.Up

            cMovement.Direction = clsMovement.intDirection.Up

      End Select

   End Sub


Monday, August 8, 2022

Membuat Paginasi dengan Visual Basic .Net


Berikut adalah contoh Paginasi pada DataGridView dengan Visual Basic .Net


Buat tampilan seperti gambar diatas terdiri dari 2 Button, dengan nama masing-masing btnPrev, btnNext lalu 1 DataGridView

Setelah itu tambahkan sintak seperti dibawah ini :

Imports System.Data.SqlClient
Public Class Form1
Dim pagingAdapter As SqlDataAdapter
Dim pagingDS As DataSet
Dim scrollVal As Integer
Private Const dtbase As String

           dtbase = “data source=.;initial catalog=lp3i;integrated security=true”

Private Sub viewData()
Dim sql As String = “Select * From barang”
Dim connection As New SqlConnection(dtbase)
pagingAdapter = New SqlDataAdapter(sql, connection)
pagingDS = New DataSet()
connection.Open()
pagingAdapter.Fill(pagingDS, scrollVal, 10, “isiTabel”)
connection.Close()
DataGridView1.DataSource = pagingDS
DataGridView1.DataMember = “isiTabel”
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
viewData()
End Sub

Private Sub btnPrev_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrev.Click
scrollVal = scrollVal – 10
If scrollVal <= 0 Then
scrollVal = 0
End If
pagingDS.Clear()
pagingAdapter.Fill(pagingDS, scrollVal, 10, “isiTabel”)
End Sub

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnNext.Click
scrollVal = scrollVal + 10
If scrollVal > 23 Then
scrollVal = 28
End If
pagingDS.Clear()
pagingAdapter.Fill(pagingDS, scrollVal, 10, “isiTabel”)
End Sub
End Class

Jalankan tekan F5



Find Kata di DataGridView Dengan TexBox pada Visual Basic .Net


Berikut adalah cara membuat pencarian data dengan Textbox pada DataGrid


lalu tambahkan sintax seperti dibawah ini :

Imports MySql.Data.MySqlClient

Public Class Form1

    Dim svr As String = "localhost"

    Dim uid As String = "root"

    Dim pwd As String = ""

    Dim db As String = "dtbase"

    Dim cConn As New MySqlConnection

    'Membuat Koneksi

    Sub Koneksi()

    cConn.ConnectionString = "server= " + svr + "; user id=" + uid + "; password=" + pwd + "; database=" + db + ""

Try

            cConn.Open()

        Finally

            cConn.Dispose()

        End Try

    End Sub

Private Sub Form_Load()

Call Koneksi() 

  ' Memanggil table  karyawan

da = New MySqlDataAdapter("Select * from karyawan", conn):

ds = New DataSet

da.Fill(ds, "karyawan")

DataGridView1.DataSource = ds.Tables("karyawan")

End Sub

   Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged

        Dim xloop1 As Integer

        Dim sPola As String

        Dim sbuka As String

        Dim SBetul As Boolean

        sPola = TextBox1.Text + "*"

With DataGridView1 

        For xloop1 = 1 To .RowCount - 1

            sbuka = .Rows(xloop1 - 1).Cells(0).Value

            SBetul = UCase(sbuka) Like UCase(sPola)

            If SBetul = True Then

                .CurrentCell = .Item(0, xloop1 - 1)

                Exit Sub

            End If

        Next

End With 

    End Sub

  End Class


Jalankan tekan F5, lalu ditampilkan layout seperti dibawah ini :


Kemudian coba ketikan : 71.12, lihat focus cell pada datagridview akan mengarahkan ke data tersebut



Membuat CRUD pada Visual Basic .Net - V [ Laporan ]

 

Berikut cara memanggil Crustall Report dengan Visual Basic .Net

Buat Form dengan 1 button dan object CrystallReport

Catatan : untuk membuat laporan pada bisa baca pada artikel : Membuat Laporan Dengan Crystal Reports - I

Kemudian double klik pada button Cetak Laporan, tambahkan sintak :

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        AxCrystalReport1.ReportFileName = "Laporan.rpt"

        AxCrystalReport1.WindowState = Crystal.WindowStateConstants.crptMaximized

        AxCrystalReport1.RetrieveDataFiles()

        AxCrystalReport1.Action = 1

    End Sub


Membuat CRUD pada Visual Basic .Net - IV [ Delete ]


Berikut adalah cara menghapus data pada Visual Basic .Net, tampilan layout seperti gambar dibawah ini :


lalu buat form1.vb untuk koneksi ke database, pada tutor ini menggunakan Mysql sebagai database:

Klik kanan pada form1.vb, lalu pilih view code, isikan sintak :

Imports MySql.Data.MySqlClient

Public Class Form1
    Dim svr As String = "localhost"
    Dim uid As String = "root"
    Dim pwd As String = ""
    Dim db As String = "dtbase"
    Dim cConn As New MySqlConnection

    'Membuat Koneksi
    Sub Koneksi()
    cConn.ConnectionString = "server= " + svr + "; user id=" + uid + "; password=" + pwd + "; database=" + db + ""
Try
            cConn.Open()
        Finally
            cConn.Dispose()
        End Try
    End Sub

   Sub clearText()
        ' Kosongkan value textbox
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""

         TextBox1.Enabled = False
         TextBox2.Enabled = False
         TextBox3.Enabled = False
         TextBox4.Enabled = False

        ' membatasi length Textbox1 
        TextBox1.MaxLength = 15

        ' Panggil koneksi 
        Call Koneksi()

        ' Memanggil table karyawan
da = New MySqlDataAdapter("Select * from karyawan", cConn):
ds = New DataSet
da.Fill(ds, "karyawan")
DataGridView1.DataSource = ds.Tables("karyawan")
 
    End Sub
  End Class

Kemudian tambahkan sintak pada event DataGridView Klik, untuk mengambil Nilai pada 

DataGridView dan tampung ke Textbox

Private Sub DataGridView1_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick
With DataGridView1 
TextBox1.Text = .Rows(e.RowIndex).Cells(0).Value
TextBox2.Text = .Rows(e.RowIndex).Cells(1).Value
TextBox3.Text = .Rows(e.RowIndex).Cells(2).Value
TextBox4.Text = .Rows(e.RowIndex).Cells(3).Value
End With
 End Sub

Lalu tambahkan sintak pada button klik

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
                Call Koneksi()
                Dim hData As String   
                hData= "delete from karyawan where nip ='" & TextBox1.Text & "'"
                 cmd = New MySqlCommand(eData, cConn)
      cmd.ExecuteNonQuery();
                ' message
                MsgBox("Hapus data berhasil")
                ' mengosongkan Textbox
                Call clearText()
    End Sub

kemudian jalankan tekan F5, maka akan ditampilkan data seperti


Coba klik pada DataGridView, maka akan ditampilkan 


Kemudian klik Button Delete, maka kan menampilkan hasil 



Membuat CRUD pada Visual Basic .Net - III [ Update ]



Berikut adalah cara menggubah data pada Visual Basic .Net,  tampilan layout seperti gambar dibawah ini :


lalu buat form1.vb untuk koneksi ke database, pada tutor ini menggunakan Mysql sebagai database:

Klik kanan pada form1.vb, lalu pilih view code, isikan sintak :

Imports MySql.Data.MySqlClient

Public Class Form1
    Dim svr As String = "localhost"
    Dim uid As String = "root"
    Dim pwd As String = ""
    Dim db As String = "dtbase"
    Dim cConn As New MySqlConnection

    'Membuat Koneksi
    Sub Koneksi()
    cConn.ConnectionString = "server= " + svr + "; user id=" + uid + "; password=" + pwd + "; database=" + db + ""
Try
            cConn.Open()
        Finally
            cConn.Dispose()
        End Try
    End Sub

   Sub clearText()
        ' Kosongkan value textbox
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""

        TextBox1.Enabled = False
        

        ' membatasi length Textbox1 
        TextBox1.MaxLength = 15

        ' Panggil koneksi 
        Call Koneksi()

        ' Memanggil table karyawan
da = New MySqlDataAdapter("Select * from karyawan", cConn):
ds = New DataSet
da.Fill(ds, "karyawan")
DataGridView1.DataSource = ds.Tables("karyawan")
 
    End Sub

  End Class

untuk melihat hasilnya sementara jalankan tekan F5, maka akan ditampilkan gambar seperti dibawah :


Kemudian tambahkan sintak pada event DataGridView Klik, untuk mengambil Nilai pada DataGridView dan tampung ke Textbox

Private Sub DataGridView1_CellMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView1.CellMouseClick
With DataGridView1 
TextBox1.Text = .Rows(e.RowIndex).Cells(0).Value
TextBox2.Text = .Rows(e.RowIndex).Cells(1).Value
TextBox3.Text = .Rows(e.RowIndex).Cells(2).Value
TextBox4.Text = .Rows(e.RowIndex).Cells(3).Value
End With
 
 End Sub

lalu tambahkan sintax ubah pada button Edit :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

            ' validasi textbox jika tidak terisi maka muncul alert 
            If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Then
                MsgBox("Semua field harus terisi")
            Else
                ' jika semua terisi 
                Call Koneksi()
                ' update table karyawan
                Dim eData As String 
                 eData = "Update karyawan set nama='" & TextBox2.Text & "', telepon ='" & TextBox3.Text & "',  alamat='" & TextBox4.Text & "'where nip ='" & TextBox1.Text & "'"

                cmd = New MySqlCommand(eData, cConn)
cmd.ExecuteNonQuery();

                ' jika berhasil tampilkan alert / message ("edit data berhasil")
                MsgBox("Edit data berhasil")
                ' mengosongkan textbox 
                Call clearText()
            End If
    End Sub

Kemudian jalankan tekan F5, klik DataGridView, maka akan ditampilkan 


Kemudian ubah menjadi seperti gambar dibawah :


Lalu klik Edit, maka akan tampil seperti dibawah ini:



Membuat CRUD pada Visual Basic .Net - II [ Insert ]

 

Berikut adalah cara menyimpan data pada Visual Basic .Net , tampilan layout  seperti gambar dibawah ini :


lalu buat form1.vb untuk koneksi ke database, pada tutor ini menggunakan Mysql sebagai database:

Klik kanan pada form1.vb, lalu pilih view code, isikan sintak :

Imports MySql.Data.MySqlClient

Public Class Form1
    Dim svr As String = "localhost"
    Dim uid As String = "root"
    Dim pwd As String = ""
    Dim db As String = "dtbase"
    Dim cConn As New MySqlConnection

    'Membuat Koneksi
    Sub Koneksi()
    cConn.ConnectionString = "server= " + svr + "; user id=" + uid + "; password=" + pwd + "; database=" + db + ""
Try
            cConn.Open()
        Finally
            cConn.Dispose()
        End Try
    End Sub

   Sub clearText()
        ' Kosongkan value textbox
        TextBox1.Text = ""
        TextBox2.Text = ""
        TextBox3.Text = ""
        TextBox4.Text = ""

        ' membatasi length Textbox1 
        TextBox1.MaxLength = 15

        ' Panggil koneksi 
        Call Koneksi()

        ' Memanggil table  karyawan
da = New MySqlDataAdapter("Select * from karyawan", conn):
ds = New DataSet
da.Fill(ds, "karyawan")
DataGridView1.DataSource = ds.Tables("karyawan")
 
    End Sub

  End Class

Kemudian tambahkan sintak pada button simpan untuk proses penyimpanan data :

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            ' mencek pengisian data, jika kosong muncul alert semua harus field terisi
            ' ini artinya disebut validasi
If TextBox1.Text = "" Or TextBox2.Text = "" Or TextBox3.Text = "" Or TextBox4.Text = "" Then
                MsgBox("Semua field harus terisi")
            Else
                ' jika semua terisi field maka akan memanggil koneksi
                Call Koneksi()
                ' simpan data
                Dim simpan As String 
                simpan = "Insert into karyawan values('" & TextBox1.Text & "','" & TextBox2.Text & "','" & TextBox3.Text & "','" & TextBox4.Text & "')"

cmd = New MySqlCommand(simpan, cConn)
                ' tampilkan message "berhasil simpan"
                MsgBox("data berhasil tersimpan")
                ' membersihkan textbox
                Call clearText()
            End If

    End Sub

Memunculkan Simbol & Emoji Pada OS Mac

  Memunculkan Simbol & Emoji  1. Buka aplikasi Pages / Notes pada Macbook. 2. Klik pada Menubar Edit --> Pilih Emoji and Symbols a...