Fungsi Spin Text Pada VB.NET

Apakah Anda tahu bagaimana membuat satu kalimat menjadi banyak kalimat yang berbeda? Di sini saya akan memberikan sebuah fungsi tersebut agar sebuah kata/kalimat/paragraf bisa menjadi unik.

Biasanya teknik ini digunakan oleh para blogger kere atau malas. :)
Tidak perlu berlama-lama lagi, ini kodenya dalam bahasa VB.NET.



 Function GetRandomSequence(ByVal sample As String) As String
        GetRandomSequence = Nothing
        Try
            Static R As New Random
            Dim SB As New System.Text.StringBuilder
            Dim InSet As Boolean = False
            Dim Values As New List(Of List(Of String))
            Dim CurSet As New List(Of String)

            For i As Integer = 0 To sample.Length - 1
                Select Case sample.Substring(i, 1)
                    Case "{"
                        If Not InSet Then
                            If SB.Length > 0 Then
                                CurSet.Add(SB.ToString)
                                Values.Add(CurSet)
                                CurSet = New List(Of String)
                                SB.Clear()
                            End If

                            InSet = True
                        Else
                            ' Reached an Open Set Marker but we were ALREADY in a Set
                            Return "Duplicate Opening Marker Found: " & sample
                        End If

                    Case "}"
                        If InSet Then
                            If SB.Length > 0 Then
                                CurSet.AddRange(SB.ToString.Split("|"))
                                Values.Add(CurSet)
                                CurSet = New List(Of String)
                                SB.Clear()
                            Else
                                ' Reached a Close Set Marker but NOTHING was BETWEEN the Markers
                                Return "Empty Set Between Markers Found: " & sample
                            End If

                            InSet = False
                        Else
                            ' Reached a Close Set Marker but we were NOT in a Set
                            Return "Missing Opening Marker: " & sample
                        End If

                    Case Else
                        SB.Append(sample.Substring(i, 1))
                End Select
            Next

            If SB.Length > 0 Then
                If Not InSet Then
                    CurSet.Add(SB.ToString)
                    Values.Add(CurSet)
                Else
                    ' End of Sample Reached and Set was NOT closed
                    Return "Missing Closing Marker: " & sample
                End If
            End If

            Dim output As New List(Of String)
            For Each valueSet As List(Of String) In Values
                output.Add(valueSet(R.Next(0, valueSet.Count)))
            Next
            Return String.Join("", output.ToArray)
        Catch ex As Exception
            Debug.Print(Date.Now & " GetRandomSequence error " & ex.Message)
        End Try
    End Function
Cara pakainya, kalimat yang mau di spin katanya harus diapit oleh tanda { dan }. Jadi {kata 1|kata 2|kata 3|kata ...}.

Contohnya
Dijual {cepat|BU|Butuh Uang}, Rumah {LB:36m|Luas Bangunan 36m|Tipe 36} {LT:50m|luas tanah 50m} Harga {Murah|Nego|Bersahabat}

Nanti fungsi di atas bisa membuat variasi kalimat seperti di bawah ini:
- Dijual cepat, Rumah Tipe 36 LT:50m Harga Nego
- Dijual BU, Rumah LB:36m Luas tanah 50m Harga Murah
- Dijual Butuh Uang, Rumah Luas Bangunan 36m LT: 50m Harga bersahabat
- dst

OK sekarang ke bagian kedua. Bagaimana bila Anda ingin membuat kalimat tersebut lebih unik lagi? Salah satu caranya adalah dengan menambahkan tanda { dan } di dalam { dan }. Hal ini biasanya disebut dengan nested spin.

Contohnya
Dijual {cepat|BU|Butuh Uang}, Rumah {{LB|Luas Bangunan}:36{m|m2|meter persegi}|{LB|Luas Bangunan} 36{m|m2|meter persegi}|Tipe 36} {LT:50m|luas tanah 50m} Harga {Murah|Nego|Bersahabat}.

Bila Anda memakai fungsi di atas, maka tidak akan berhasil dan akan keluar pesan error:
Duplicate Opening Marker Found

Lalu bagaimana cara menyiasatinya?

Gunakan kode di bawah ini, tetapi kode ini tidak memusingkan soal performa ya..
Imports System.Text.RegularExpressions
Private rand As New Random()

Function RandomReplacement(ByVal m As Match) As String
        Dim matchedText As String = m.Value.Substring(1, m.Value.Length - 2) ' Skip { and }
        Dim delimiter() As Char = {"|"c}
        Dim choices() As String = matchedText.Split(delimiter)
        Dim randomIndex As Integer = rand.Next(choices.Length)

        Return choices(randomIndex)
End Function

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

Dim pattern As String = "\{[^{}]*\}"  ' Any set of braces that do not contain other braces
Dim m As Match = Regex.Match(TextBox1.Text, pattern)
Dim result As String = TextBox1.Text


While m.Success
  result = Regex.Replace(result, pattern, AddressOf RandomReplacement)
  m = Regex.Match(result, pattern)
End While
 
Label1.Text = result

End Sub

Kode kedua, memakai fungsi regex untuk memanipulasi string. Nanti kalau ada waktu saya akan membahas tentang regex ini. Jadi sampai jumpa di artikel berikutnya.

Menggunakan Background Worker

Apakah anda pernah membuat program dari VB.NET lalu program tersebut tiba-tiba freeze / not responding dikarenakan program tersebut sedang memproses sebuah task?

Di sinilah thread harus digunakan agar kita bisa memonitor proses pekerjaan sekaligus membuat program kita lebih baik.

Dalam VB.NET ada beberapa cara menggunakan threading. Tapi hal yang paling mudah adalah menggunakan salah satu komponen dari VB.NET dari background worker.

Dengan menggunakan background worker kita dengan mudah membuat, membatalkan, dan melihat proses sebuah thread.

Pertama masukan komponen background worker ke project.


Ubah properties dari background worker seperti di bawah ini.


Untuk menjalankan background worker ini, cukup panggil kode di bawah ini.

bw1.RunWorkerAsync()

Untuk proses yang akan dijalankan oleh background worker, masukan kodenya di prosedur Do_Work.

Private Sub bw1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles bw1.DoWork
'letakan kode anda di sini
If bw1.CancellationPending Then
       bw1.ReportProgress(CInt(100 * i / jumlahproses))
       Exit For
End If
End Sub

Anda bisa membuat prosedur ini dengan cara mengklik dua kali komponen background worker-nya.

Untuk melacak prosesnya masukan kode di bawah ini di dalam prosedur ProgressChanged

Private Sub bw1_ProgressChanged(sender As Object, e As ComponentModel.ProgressChangedEventArgs) Handles bw1.ProgressChanged
        Me.pb.Value = e.ProgressPercentage
        Me.Text = "Progress (" & e.ProgressPercentage.ToString & "% complete)"
End Sub

pb yang saya tulis itu adalah komponen progressbar yang saya beri nama pb dengan maximum valuenya 100.

Bila telah selesai seluruh tugas maka secara otomatis RunWorkerCompleted akan dieksekusi.

  Private Sub bw1_RunWorkerCompleted(sender As Object, e As ComponentModel.RunWorkerCompletedEventArgs) Handles bw1.RunWorkerCompleted
        pb.Value = 0
End Sub

Tapi ketika bekerja dengan komponen background worker ini, ternyata kita tidak bisa memperbaharui tampilan pada komponen pada form. Contohnya anda tidak dapat melakukan hal seperti di bawah ini pada program anda.

Private Sub bw1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles bw1.DoWork
    i += 1
    label1.text = i
End Sub

Intinya anda bisa melakukan proses yang tidak melibatkan proses layout. Tapi kadang-kadang hal ini bisa menjadi masalah.

Lalu bagaimana cara agar kita bisa melakukan update ketika proses pada DoWork berjalan? Kita harus menambahkan sebuah prosedur untuk merefresh tampilan. Kodenya adalah seperti di bawah ini.

Delegate Sub perbaharuiTampilannya(nilai As Integer)

Private Sub perbaharuiTampilan(nilai As Integer)
        If Me.InvokeRequired Then
            Me.Invoke(New perbaharuiTampilannya(AddressOf perbaharuiTampilan), nilai)
        Else
            label1.text = nilai
        End If
End Sub

Private Sub bw1_DoWork(sender As Object, e As ComponentModel.DoWorkEventArgs) Handles bw1.DoWork
        
        For i=0 to 10
           'panggil kode ini untuk mengupdate proses
           bw1.ReportProgress(CInt(100 * i / 10))

           'silakan panggil nama prosedurnya ketika akan mengupdate
           perbaharuiTampilan(i)
           Threading.Thread.Sleep(1000)
        Next i

End Sub

Dengan kode di atas maka merefresh tampilan tidak akan menjadi masalah.

Untuk membatalkan proses thread ini, silakan panggil metode CancelAsync.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Button1.Text = "Start" Then
            Button1.Text = "Cancel"
            bw1.RunWorkerAsync()
        ElseIf Button1.Text = "Cancel" Then
            Button1.Text = "Start"
            bw1.CancelAsync()
        End If
End Sub

Sebagai contoh saya telah membuat form dengan beberapa komponen di dalamnya,


Kodenya adalah seperti berikut ini.

Public Class Form1

    Private Sub bw1_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) Handles bw1.DoWork

        For i = 0 To 10
            'panggil kode ini untuk mengupdate proses
            bw1.ReportProgress(CInt(100 * i / 10))

            'silakan panggil nama prosedurnya ketika akan mengupdate
            perbaharuiTampilan(i)
            Threading.Thread.Sleep(1000)

            If bw1.CancellationPending Then
                bw1.ReportProgress(CInt(100 * i / 10))
                Exit For
            End If
        Next i

     
    End Sub

    Private Sub bw1_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs) Handles bw1.ProgressChanged
        Me.pb.Value = e.ProgressPercentage
        Me.Text = "Progress (" & e.ProgressPercentage.ToString & "% complete)"
    End Sub

    Private Sub bw1_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles bw1.RunWorkerCompleted
        MsgBox("Done")
        Button1.Text = "Start"
    End Sub

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Button1.Text = "Start" Then
            Button1.Text = "Cancel"
            bw1.RunWorkerAsync()
        ElseIf Button1.Text = "Cancel" Then
            Button1.Text = "Start"
            bw1.CancelAsync()
        End If

    End Sub

    Delegate Sub perbaharuiTampilannya(nilai As Integer)

    Private Sub perbaharuiTampilan(nilai As Integer)
        If Me.InvokeRequired Then
            Me.Invoke(New perbaharuiTampilannya(AddressOf perbaharuiTampilan), nilai)
        Else
            label1.text = nilai
        End If
    End Sub
End Class

Semoga artikel kali ini berguna bila anda ingin menggunakan thread dengan cara mudah.

Cara Mengolah Data JSON dengan VB NET

 
Kadangkala kita harus mengelola data yang mempunyai format JSON. Tidak mudah memang untuk mengolahnya karena biasanya kalau bagi yang baru berurusan dengan JSON, pusing rasanya. Apalagi di MSDN VB.NET, dokumentasinya tidak terlalu banyak.

Dalam pemograman PHP, ada sebuah fungsi untuk menguraikan data dari JSON ini, tapi bagaimana dengan VB.NET?

Menurut rumornya, VB.NET juga menyediakan fungsi ini tapi banyak kekurangannya. Saya tidak akan membahas kekurangannya karena saya rasa yang terpenting, tugas yang berikan pada kamu untuk mengelola data JSON selesai.

Kali ini saya akan memberikan kode bagaimana menguraikan JSON dengan menggunakan Newtonsoft library. Silakan lihat cara menginstal library ini ke VB.NET di sini.

Salah satu keuntungan dari Newtonsoft ini adalah anda akan dimudahkan untuk membereskan data dengan format JSON. Perhatikan contoh berikut ini.
Dim jsontext As String = "{"meta":{"code":200},"data":[{"username":"wallsticker_mv","bio":"wallstiker murah\nlokasi jakarta\nno cancel\nmaaf bila bertanya di IG tidak respont\nfor order:\nsms:0858 1723 1088\nline  :wallstiker_mv","website":"","profile_picture":"http:\/\/photos-c.ak.instagram.com\/hphotos-ak-xap1\/928032_1482822948662954_433465877_a.jpg","full_name":"","id":"1520060215"}]}"

Dim readingJson = Newtonsoft.Json.Linq.JObject.Parse(jsontext)
dim meta, username, bio as String

With readingJson           
    meta = .Item("meta")("code").ToString 'akan menghasilkan nilai 200
    username = .Item("data")("username").ToString 'akan menghasilkan nilai wallsticker_mv
    bio = .Item("data")("id").ToString 'akan menghasilkan nilai 1520060215
End With

Yup semudah dan sesederhana itu kode untuk mengolah data JSON dengan menggunakan Newtonsoft library. :D

Intinya kamu harus mengerti format JSON itu sendiri. Ketika kamu ingin menemukan pola JSON yang dipakai, berikan breakline pada setiap data JSON agar mudah dibaca.

{"meta":{"code":200},

"data":[
{"username":"wallsticker_mv",
"bio":"wallstiker murah\nlokasi jakarta\nno cancel\nmaaf bila bertanya di IG tidak respont\nfor order:\nsms:0858 1723 1088\nline  :wallstiker_mv",
"website":"",
"profile_picture":"http:\/\/facebook.com\/hphotos-ak-xap1\/928032_1482822948662954_433465877_a.jpg",
"full_name":"",
"id":"1520060215"}]
}

Gunakan notepad++ agar memudahkan kamu untuk melihat polanya.

Apakah sudah masalahnya di sini?

Belum teman. Kode di atas tidak bisa digunakan mengakses JSON yang memiliki penutup '[' dan ']'. JSON juga bisa dibuat dengan menggunakan format array jadi kode VB NETnya juga harus memakai array. Jadi kalau kamu menemukan kode JSON dengan kode '[' dan ']', silakan gunakan kode di bawah ini.

Dim jsontext as String = "{"meta":{"code":200},"data":[{"username":"wallsticker_mv","bio":"wallstiker murah\nlokasi jakarta\nno cancel\nmaaf bila bertanya di IG tidak respont\nfor order:\nsms:0858 1723 1088\nline  :wallstiker_mv","website":"","profile_picture":"http:\/\/facebook.com\/hphotos-ak-xap1\/928032_1482822948662954_433465877_a.jpg","full_name":"","id":"1520060215"}]}"
Dim readingJson = Newtonsoft.Json.Linq.JObject.Parse(jsontext)
MsgBox("User ID for this user is " & readingJson.SelectToken("data[0].id").ToString)

Coba lihat, dalam kode diatas saya menggunakan index untuk mengakses nilai yang ada di braket '[' dan ']'.
Mudah-mudahan kamu tidak kesulitan ketika berurusan dengan JSON.

Oke saya akhiri saja sampai di sini. Kalau ada pertanyaan silakan beri komentar di bawah ini. Sampai jumpa di artikel berikutnya.

Membuat Menu Pada DataGridView

Seperti yang kita ketahui bahwa tabel pada VB.NET menyimpan banyak fitur yang bisa kita pakai dan salah satunya adalah dengan menambahkan menu ketika DataGridView tersebut mendapatkan event klik kanan dari mouse.

Caranya mudah, yang penting anda sudah memasukan objek DataGridView dan ContentMenuStript, lalu masukan kode di bawah ini pada event CellMouseClick pada DataGridView yang anda pakai.

Private Sub DataGridView1_CellMouseClick(sender As Object, e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles tblData.CellMouseClick
        
         'pastikan DataGridView1 tersebut sudah ada datanya dan baris dalam DataGridView1 sudah terpilih
         If DataGridView1.RowCount > 0 AndAlso e.RowIndex > -1 Then
            If e.Button = Windows.Forms.MouseButtons.Right Then
                ContentMenuStrip1.Show(Windows.Forms.Cursor.Position.X, Windows.Forms.Cursor.Position.Y)
            End If
        End If
    End Sub

Export data dari DataGridView ke file CSV

Tabel merupakan salah satu komponen yang sangat berguna dalam menampilkan data. Adakalanya mengharuskan kita mengambil data dari DataGridView tersebut ke sebuah format yang berbeda seperti CSV.

Berikut script untuk mengexport data dari DataGridView ke CSV.

Private Sub exportCSV()
        'test to see if the DataGridView has any rows
        If tblData.RowCount > 0 Then
            Dim value As String = ""
            Dim dr As New DataGridViewRow()
            Dim swOut As New StreamWriter("d:\test.csv")

            'write header rows to csv
            For i As Integer = 0 To tblData.Columns.Count - 1
                If i > 0 Then
                    swOut.Write(",")
                End If
                swOut.Write(tblData.Columns(i).HeaderText)
            Next

            swOut.WriteLine()

            'write DataGridView rows to csv
            For j As Integer = 0 To tblData.Rows.Count - 1
                If j > 0 Then
                    swOut.WriteLine()
                End If

                dr = tblData.Rows(j)

                For i As Integer = 0 To tblData.Columns.Count - 1
                    If i > 0 Then
                        swOut.Write(",")
                    End If

                    value = dr.Cells(i).Value.ToString()
                    'replace comma's with spaces
                    value = value.Replace(","c, " "c)
                    'replace embedded newlines with spaces
                    value = value.Replace(Environment.NewLine, " ")

                    swOut.Write(value)
                Next
            Next
            swOut.Close()
        End If
End Sub


Cara Menginstal JSON.NET Library



JSON (JavaScript Object Notation) merupakan salah satu cara untuk menampilkan data seperti XML tapi lebih ringan karena tidak memerlukan tag seperti pada XML.

Nah kali ini saya mendapatkan tantangan bagaimana cara mengelola data yang mempunyai format JSON. Terus terang sih agak pusing bacanya karena seringkali data JSON yang diberikan tidak ada breakline.

{
"employees": [
{ "firstName":"John" , "lastName":"Doe" }, 
{ "firstName":"Anna" , "lastName":"Smith" }, 
{ "firstName":"Peter" , "lastName":"Jones" }
]
}

Terus setelah itu saya mencarinya di Google dan banyak banget yang menyarankan memakai library JSON.NET.

Walaupun pada versi .NET terbaru, Microsoftnya sudah menyediakan fitur tersebut tapi menurut komentar yang saya baca dan pembuatnya bilang, JSON.NET ini lebih cepat dalam memprosesnya daripada bawaannya Microsoft.

Saya memakai Visual Basic Express 2010 ketika akan mencobanya. Penggunanya diharuskan memasukan library tersebut ke VB.NET.

Setelah saya menunduh file JSON memakai link di atas dan akan menjalankan program bernama NuGet, saya mendapatkan masalah seperti ini:
Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, click on Package Manager node and check 'Allow NuGet to download missing packages during build.' You can also give consent by setting the environment variable 'EnableNuGetPackageRestore' to 'true'.
Yang jadi masalah adalah ketika saya akan menginstallnya VB express, tidak ada Visual Studio Options. Kalau untuk versi pro, secara default pilihan ini memang ada.

Lalu saya juga mencoba menginstall NuGet package manager dengan mengakses menu pada VB.NET
Tools » Extension Manager.



Di sana saya ketikan kata NuGet dan akhirnya saya mendapatkan installer untuk NuGet.



Yang jadi masalah bagaimana memasukan library JSON.NETnya karena menurut tutorial yang saya dapat, setelah menginstall NuGet, kita bisa install JSON.NET melalui NuGet Package Installer.

Begitu pula bagaimana mengakses NuGet Package Installer selain dari Visual Studio Options?

Setelah beberapa jam mencari cara bagaimana cara menginstallnya di VB Express, ternyata seperti yang ada di dokumentasi NuGet, NuGet Package Installer itu tidak bisa di install dalam VB 2010 Express.
For Visual Studio 2010, NuGet is available through the Visual Studio Extension Manager. The extension can be installed into the Professional, Premium, and Ultimate editions. Additionally, the extension can be installed into Visual Web Developer 2010 Express.
Setelah mencari lagi ternyata kita bisa membuka project VB di dalam VWD 2010 Express agar library ini dapat dipakai di dalam project.

Awalnya saya tidak menginstall VWD 2010 Express karena saya jarang memakainya tapi mau tidak mau saya harus menginstall VWD 2010 Express agar bisa menggunakan JSON.NET.

Beberapa menit telah berlalu dan akhirnya VWD 2010 Express telah terinstall. Seperti cara diatas saya mencoba kembali menginstall NuGet Package Installer melalui Tools » Extension Manager

Ternyata ketika mengetikan kata NuGet, hasilnya didapat memang berbeda. NuGet yang saya dapatkan adalah NuGet Package Manager, bukan NuGet Packager.


Langkah -langkah setelah NuGet Package Manager terinstall adalah
1. Merestart VWD 2010 Express.
2. Buka project VB ke dalam VWD 2010 Express.
3. Klik kanan pada Solution Explorer lalu pilih Manage NuGet Packages...


4. Akhir paket JSON.NET siap diinstal. :)


5. Save project lalu buka kembali memakai Visual Basic Express 2010.

Sebenarnya ada 1 lagi caranya memasukan JSON.NET langsung dari Visual Basic Express 2010 tanpa memakai VWD 2010 Express.

Caranya adalah sebagai berikut:
1. Buka project lalu klik kanan nama project dalam Solution Explorer.
2. Pilih Add Reference...
3. Pada tab Browse cari Newtonsoft.Json.dll
4. Klik OK untuk memasukan library JSON.NET

Semoga tutorial ini berguna bagi anda yang ingin menggunakan JSON.NET library.

Kode ASCII Untuk Setiap Karakter

Apa itu kode ASCII? Kalau dari Wikipedia sih kepanjangannya adalah American Standard Code for Information Interchange. Kalau mau tahu lebih jauh tentang apa itu ASCII silakan klik di sini. (Tenang pakai bahasa Indonesia kok dengan EDY)

Terus apa gunanya ASCII?

Yang saya tahu kode ASCII ini digunakan pada saat membuat program. Contoh gampangnya:

» Bagaimana caranya kita memasukan fungsi "enter" / "Del" secara programming tetapi fungsi "enter" / "Del" itu sendiri tidak ada simbolnya?

» Bagaimana caranya memasukan kode yang tidak ada di keyboard komputer kita, contohnya tanda "»", "£", "á", "≥", dst?

Untuk jawaban kedua, kalau dulu saya pikir yang tinggal copas (copy paste) saja selesai tapi untuk menjawab persoalan pertama, tidak bisa dicopas.

Nah disinilah kode ASCII diperlukan.

Kode ASCII untuk kontrol karakter (seperti tombol "enter", "delete", "backspace", dan lain-lain)
DEC OCT HEX BIN Symbol HTML Number HTML Name Description
00000000000000NUL�Null char
10010100000001SOHStart of Heading
20020200000010STXStart of Text
30030300000011ETXEnd of Text
40040400000100EOTEnd of Transmission
50050500000101ENQEnquiry
60060600000110ACKAcknowledgment
70070700000111BELBell
80100800001000BSBack Space
90110900001001HT	Horizontal Tab
100120A00001010LF
Line Feed
110130B00001011VTVertical Tab
120140C00001100FFForm Feed
130150D00001101CR
Carriage Return
140160E00001110SOShift Out / X-On
150170F00001111SIShift In / X-Off
160201000010000DLEData Line Escape
170211100010001DC1Device Control 1 (oft. XON)
180221200010010DC2Device Control 2
190231300010011DC3Device Control 3 (oft. XOFF)
200241400010100DC4Device Control 4
210251500010101NAKNegative Acknowledgement
220261600010110SYNSynchronous Idle
230271700010111ETBEnd of Transmit Block
240301800011000CANCancel
250311900011001EMEnd of Medium
260321A00011010SUBSubstitute
270331B00011011ESCEscape
280341C00011100FSFile Separator
290351D00011101GSGroup Separator
300361E00011110RSRecord Separator
310371F00011111USUnit Separator


Kode ASCII untuk simbol yang bisa dicetak seperti a,b, c, d, 1, 2, 3, dst

DEC OCT HEX BIN Symbol HTML Number HTML Name Description
320402000100000 Space
330412100100001!!Exclamation mark
340422200100010"""Double quotes (or speech marks)
350432300100011##Number
360442400100100$$Dollar
370452500100101%%Procenttecken
380462600100110&&&Ampersand
390472700100111''Single quote
400502800101000((Open parenthesis (or open bracket)
410512900101001))Close parenthesis (or close bracket)
420522A00101010**Asterisk
430532B00101011++Plus
440542C00101100,,Comma
450552D00101101--Hyphen
460562E00101110..Period, dot or full stop
470572F00101111//Slash or divide
48060300011000000Zero
49061310011000111One
50062320011001022Two
51063330011001133Three
52064340011010044Four
53065350011010155Five
54066360011011066Six
55067370011011177Seven
56070380011100088Eight
57071390011100199Nine
580723A00111010::Colon
590733B00111011;&#59;Semicolon
600743C00111100<&#60;&lt;Less than (or open angled bracket)
610753D00111101=&#61;Equals
620763E00111110>&#62;&gt;Greater than (or close angled bracket)
630773F00111111?&#63;Question mark
641004001000000@&#64;At symbol
651014101000001A&#65;Uppercase A
661024201000010B&#66;Uppercase B
671034301000011C&#67;Uppercase C
681044401000100D&#68;Uppercase D
691054501000101E&#69;Uppercase E
701064601000110F&#70;Uppercase F
711074701000111G&#71;Uppercase G
721104801001000H&#72;Uppercase H
731114901001001I&#73;Uppercase I
741124A01001010J&#74;Uppercase J
751134B01001011K&#75;Uppercase K
761144C01001100L&#76;Uppercase L
771154D01001101M&#77;Uppercase M
781164E01001110N&#78;Uppercase N
791174F01001111O&#79;Uppercase O
801205001010000P&#80;Uppercase P
811215101010001Q&#81;Uppercase Q
821225201010010R&#82;Uppercase R
831235301010011S&#83;Uppercase S
841245401010100T&#84;Uppercase T
851255501010101U&#85;Uppercase U
861265601010110V&#86;Uppercase V
871275701010111W&#87;Uppercase W
881305801011000X&#88;Uppercase X
891315901011001Y&#89;Uppercase Y
901325A01011010Z&#90;Uppercase Z
911335B01011011[&#91;Opening bracket
921345C01011100\&#92;Backslash
931355D01011101]&#93;Closing bracket
941365E01011110^&#94;Caret - circumflex
951375F01011111_&#95;Underscore
961406001100000`&#96;Grave accent
971416101100001a&#97;Lowercase a
981426201100010b&#98;Lowercase b
991436301100011c&#99;Lowercase c
1001446401100100d&#100;Lowercase d
1011456501100101e&#101;Lowercase e
1021466601100110f&#102;Lowercase f
1031476701100111g&#103;Lowercase g
1041506801101000h&#104;Lowercase h
1051516901101001i&#105;Lowercase i
1061526A01101010j&#106;Lowercase j
1071536B01101011k&#107;Lowercase k
1081546C01101100l&#108;Lowercase l
1091556D01101101m&#109;Lowercase m
1101566E01101110n&#110;Lowercase n
1111576F01101111o&#111;Lowercase o
1121607001110000p&#112;Lowercase p
1131617101110001q&#113;Lowercase q
1141627201110010r&#114;Lowercase r
1151637301110011s&#115;Lowercase s
1161647401110100t&#116;Lowercase t
1171657501110101u&#117;Lowercase u
1181667601110110v&#118;Lowercase v
1191677701110111w&#119;Lowercase w
1201707801111000x&#120;Lowercase x
1211717901111001y&#121;Lowercase y
1221727A01111010z&#122;Lowercase z
1231737B01111011{&#123;Opening brace
1241747C01111100|&#124;Vertical bar
1251757D01111101}&#125;Closing brace
1261767E01111110~&#126;Equivalency sign - tilde
1271777F01111111&#127;Delete


Kode ASCII tambahan mengenai simbol-simbol

DEC OCT HEX BIN Symbol HTML Number HTML Name Description
1282008010000000&#128;&euro;Euro sign
1292018110000001
1302028210000010&#130;&sbquo;Single low-9 quotation mark
1312038310000011ƒ&#131;&fnof;Latin small letter f with hook
1322048410000100&#132;&bdquo;Double low-9 quotation mark
1332058510000101&#133;&hellip;Horizontal ellipsis
1342068610000110&#134;&dagger;Dagger
1352078710000111&#135;&Dagger;Double dagger
1362108810001000ˆ&#136;&circ;Modifier letter circumflex accent
1372118910001001&#137;&permil;Per mille sign
1382128A10001010Š&#138;&Scaron;Latin capital letter S with caron
1392138B10001011&#139;&lsaquo;Single left-pointing angle quotation
1402148C10001100Œ&#140;&OElig;Latin capital ligature OE
1412158D10001101
1422168E10001110Ž&#142;Latin captial letter Z with caron
1432178F10001111
1442209010010000
1452219110010001&#145;&lsquo;Left single quotation mark
1462229210010010&#146;&rsquo;Right single quotation mark
1472239310010011&#147;&ldquo;Left double quotation mark
1482249410010100&#148;&rdquo;Right double quotation mark
1492259510010101&#149;&bull;Bullet
1502269610010110&#150;&ndash;En dash
1512279710010111&#151;&mdash;Em dash
1522309810011000˜&#152;&tilde;Small tilde
1532319910011001&#153;&trade;Trade mark sign
1542329A10011010š&#154;&scaron;Latin small letter S with caron
1552339B10011011&#155;&rsaquo; Single right-pointing angle quotation mark
1562349C10011100œ&#156;&oelig;Latin small ligature oe
1572359D10011101
1582369E10011110ž&#158;Latin small letter z with caron
1592379F10011111Ÿ&#159;&yuml;Latin capital letter Y with diaeresis
160240A010100000&#160;&nbsp;Non-breaking space
161241A110100001¡&#161;&iexcl;Inverted exclamation mark
162242A210100010¢&#162;&cent;Cent sign
163243A310100011£&#163;&pound;Pound sign
164244A410100100¤&#164;&curren;Currency sign
165245A510100101¥&#165;&yen;Yen sign
166246A610100110¦&#166;&brvbar;Pipe, Broken vertical bar
167247A710100111§&#167;&sect;Section sign
168250A810101000¨&#168;&uml;Spacing diaeresis - umlaut
169251A910101001©&#169;&copy;Copyright sign
170252AA10101010ª&#170;&ordf;Feminine ordinal indicator
171253AB10101011«&#171;&laquo;Left double angle quotes
172254AC10101100¬&#172;&not;Not sign
173255AD10101101­&#173;&shy;Soft hyphen
174256AE10101110®&#174;&reg;Registered trade mark sign
175257AF10101111¯&#175;&macr;Spacing macron - overline
176260B010110000°&#176;&deg;Degree sign
177261B110110001±&#177;&plusmn;Plus-or-minus sign
178262B210110010²&#178;&sup2;Superscript two - squared
179263B310110011³&#179;&sup3;Superscript three - cubed
180264B410110100´&#180;&acute;Acute accent - spacing acute
181265B510110101µ&#181;&micro;Micro sign
182266B610110110&#182;&para;Pilcrow sign - paragraph sign
183267B710110111·&#183;&middot;Middle dot - Georgian comma
184270B810111000¸&#184;&cedil;Spacing cedilla
185271B910111001¹&#185;&sup1;Superscript one
186272BA10111010º&#186;&ordm;Masculine ordinal indicator
187273BB10111011»&#187;&raquo;Right double angle quotes
188274BC10111100¼&#188;&frac14;Fraction one quarter
189275BD10111101½&#189;&frac12;Fraction one half
190276BE10111110¾&#190;&frac34;Fraction three quarters
191277BF10111111¿&#191;&iquest;Inverted question mark
192300C011000000À&#192;&Agrave;Latin capital letter A with grave
193301C111000001Á&#193;&Aacute;Latin capital letter A with acute
194302C211000010Â&#194;&Acirc;Latin capital letter A with circumflex
195303C311000011Ã&#195;&Atilde;Latin capital letter A with tilde
196304C411000100Ä&#196;&Auml;Latin capital letter A with diaeresis
197305C511000101Å&#197;&Aring;Latin capital letter A with ring above
198306C611000110Æ&#198;&AElig;Latin capital letter AE
199307C711000111Ç&#199;&Ccedil;Latin capital letter C with cedilla
200310C811001000È&#200;&Egrave;Latin capital letter E with grave
201311C911001001É&#201;&Eacute;Latin capital letter E with acute
202312CA11001010Ê&#202;&Ecirc;Latin capital letter E with circumflex
203313CB11001011Ë&#203;&Euml;Latin capital letter E with diaeresis
204314CC11001100Ì&#204;&Igrave;Latin capital letter I with grave
205315CD11001101Í&#205;&Iacute;Latin capital letter I with acute
206316CE11001110Î&#206;&Icirc;Latin capital letter I with circumflex
207317CF11001111Ï&#207;&Iuml;Latin capital letter I with diaeresis
208320D011010000Ð&#208;&ETH;Latin capital letter ETH
209321D111010001Ñ&#209;&Ntilde;Latin capital letter N with tilde
210322D211010010Ò&#210;&Ograve;Latin capital letter O with grave
211323D311010011Ó&#211;&Oacute;Latin capital letter O with acute
212324D411010100Ô&#212;&Ocirc;Latin capital letter O with circumflex
213325D511010101Õ&#213;&Otilde;Latin capital letter O with tilde
214326D611010110Ö&#214;&Ouml;Latin capital letter O with diaeresis
215327D711010111×&#215;&times;Multiplication sign
216330D811011000Ø&#216;&Oslash;Latin capital letter O with slash
217331D911011001Ù&#217;&Ugrave;Latin capital letter U with grave
218332DA11011010Ú&#218;&Uacute;Latin capital letter U with acute
219333DB11011011Û&#219;&Ucirc;Latin capital letter U with circumflex
220334DC11011100Ü&#220;&Uuml;Latin capital letter U with diaeresis
221335DD11011101Ý&#221;&Yacute;Latin capital letter Y with acute
222336DE11011110Þ&#222;&THORN;Latin capital letter THORN
223337DF11011111ß&#223;&szlig;Latin small letter sharp s - ess-zed
224340E011100000à&#224;&agrave;Latin small letter a with grave
225341E111100001á&#225;&aacute;Latin small letter a with acute
226342E211100010â&#226;&acirc;Latin small letter a with circumflex
227343E311100011ã&#227;&atilde;Latin small letter a with tilde
228344E411100100ä&#228;&auml;Latin small letter a with diaeresis
229345E511100101å&#229;&aring;Latin small letter a with ring above
230346E611100110æ&#230;&aelig;Latin small letter ae
231347E711100111ç&#231;&ccedil;Latin small letter c with cedilla
232350E811101000è&#232;&egrave;Latin small letter e with grave
233351E911101001é&#233;&eacute;Latin small letter e with acute
234352EA11101010ê&#234;&ecirc;Latin small letter e with circumflex
235353EB11101011ë&#235;&euml;Latin small letter e with diaeresis
236354EC11101100ì&#236;&igrave;Latin small letter i with grave
237355ED11101101í&#237;&iacute;Latin small letter i with acute
238356EE11101110î&#238;&icirc;Latin small letter i with circumflex
239357EF11101111ï&#239;&iuml;Latin small letter i with diaeresis
240360F011110000ð&#240;&eth;Latin small letter eth
241361F111110001ñ&#241;&ntilde;Latin small letter n with tilde
242362F211110010ò&#242;&ograve;Latin small letter o with grave
243363F311110011ó&#243;&oacute;Latin small letter o with acute
244364F411110100ô&#244;&ocirc;Latin small letter o with circumflex
245365F511110101õ&#245;&otilde;Latin small letter o with tilde
246366F611110110ö&#246;&ouml;Latin small letter o with diaeresis
247367F711110111÷&#247;&divide;Division sign
248370F811111000ø&#248;&oslash;Latin small letter o with slash
249371F911111001ù&#249;&ugrave;Latin small letter u with grave
250372FA11111010ú&#250;&uacute;Latin small letter u with acute
251373FB11111011û&#251;&ucirc;Latin small letter u with circumflex
252374FC11111100ü&#252;&uuml;Latin small letter u with diaeresis
253375FD11111101ý&#253;&yacute;Latin small letter y with acute
254376FE11111110þ&#254;&thorn;Latin small letter thorn
255377FF11111111ÿ&#255;&yuml;Latin small letter y with diaeresis 

Kata-Kata Terlarang Pada MS Access

Pada saya mau membuat program dengan menggunakan MS Access 2007, saya menemukan sebuah kendala ketika akan memasukan sebuah data ke database.

Seluruh syntax sudah saya selidiki dengan benar, tapi tetap saja program tersebut mengeluarkan syntax error. Ini adalah salah satu hal yang paling menyebalkan dan menggembirakan.

Kenapa?

Dimulai dari alasan mengapa menyebalkan: Itu karena sudah diutak atik sedemikian rupa tapi tetap saja pesan errornya itu masih ada. Lalu setelah beberapa waktu mencarinya melalui Google, hasilnya tetap saja nihil.

Kenapa menggembirakan? Itu karena permasalahan yang baru saja dialami di atas telah mendapatkan solusinya.

Nah bagi kamu yang mendapatkan error yang aneh padahal penulisan dan field pada databasenya sudah benar maka coba untuk melihat sebuah susunan keyword yang memang dilarang digunakan untuk dijadikan sebuah nama field database pada MS Access.

Jangan sampai permasalahan ini berlarut-larut menghantui! Ini list keywordnya

-A
    ADD
    ALL
    Alphanumeric
    ALTER
    AND
    ANY
    Application
    AS
    ASC
    Assistant
    AUTOINCREMENT
    Avg
-B
    BETWEEN
    BINARY
    BIT
    BOOLEAN
    BY
    BYTE
-C
    CHAR, CHARACTER
    COLUMN
    CompactDatabase
    CONSTRAINT
    Container
    Count
    COUNTER
    CREATE
    CreateDatabase
    CreateField
    CreateGroup
    CreateIndex
    CreateObject
    CreateProperty
    CreateRelation
    CreateTableDef
    CreateUser
    CreateWorkspace
    CURRENCY
    CurrentUser
-D
    DATABASE
    DATE
    DATETIME
    DELETE
    DESC
    Description
    DISALLOW
    DISTINCT
    DISTINCTROW
    Document
    DOUBLE
    DROP
-E
    Echo
    Else
    End
    Eqv
    Error
    EXISTS
    Exit
-F
    FALSE
    Field, Fields
    FillCache
    FLOAT, FLOAT4, FLOAT8
    FOREIGN
    Form, Forms
    FROM
    Full
    FUNCTION
-G
    GENERAL
    GetObject
    GetOption
    GotoPage
    GROUP
    GROUP BY
    GUID
-H
    HAVING
-I
    Idle
    IEEEDOUBLE, IEEESINGLE
    If
    IGNORE
    Imp
    IN
    INDEX
    Index, Indexes
    INNER
    INSERT
    InsertText
    INT, INTEGER, INTEGER1, INTEGER2, INTEGER4
    INTO
    IS
-J
    JOIN
-K
    KEY
-L
    LastModified
    LEFT
    Level
    Like
    LOGICAL, LOGICAL1
    LONG, LONGBINARY, LONGTEXT
-M
    Macro
    Match
    Max, Min, Mod
    MEMO
    Module
    MONEY
    Move
-N
    NAME
    NewPassword
    NO
    Not
    Note
    NULL
    NUMBER, NUMERIC
-O
    Object
    OLEOBJECT
    OFF
    ON
    OpenRecordset
    OPTION
    OR
    ORDER
    Orientation
    Outer
    OWNERACCESS
-P
    Parameter
    PARAMETERS
    Partial
    PERCENT
    PIVOT
    PRIMARY
    PROCEDURE
    Property
-Q
    Queries
    Query
    Quit
-R
    REAL
    Recalc
    Recordset
    REFERENCES
    Refresh
    RefreshLink
    RegisterDatabase
    Relation
    Repaint
    RepairDatabase
    Report
    Reports
    Requery
    RIGHT
-S
    SCREEN
    SECTION
    SELECT
    SET
    SetFocus
    SetOption
    SHORT
    SINGLE
    SMALLINT
    SOME
    SQL
    StDev, StDevP
    STRING
    Sum
-T
    TABLE
    TableDef, TableDefs
    TableID
    TEXT
    TIME, TIMESTAMP
    TOP
    TRANSFORM
    TRUE
    Type
-U
    UNION
    UNIQUE
    UPDATE
    USER
-V
    VALUE
    VALUES
    Var, VarP
    VARBINARY, VARCHAR
    VERSION
-W
    WHERE
    WITH
    Workspace
-X
    Xor
-Y
    Year
    YES
    YESNO

Sampai saat artikel ini ditulis, hal ini hanya berlaku untuk beberapa versi MS Access seperti di bawah ini:
» Microsoft Access 2002 Standard Edition
» Microsoft Office Access 2003
» Microsoft Office Access 2007


- Copyright © Yuk Belajar VB.NET Bersama-Sama ^^ - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -