Rabu, 11 Maret 2020

Menyimpan File Gambar Ke Database MySql Tipe Data Blob dan Menampilkannya Kembali ~Tutorial Gambas


Menyimpan file disini sebenarnya bisa berupa berbagai macam file seperti gambar (jpg/jpeg, bmp, gif, dll), pdf, doc, dll. Ada 3 cara yang umum dilakukan oleh pemrogam untuk menyimpan data file ke dalam database, yakni:

Cara 1 : Hanya menyimpan data lokasi/path file.
Cara ini sangat mudah dan hemat memori pada database. Kelemahannya adalah proses banckup memerlukan usaha yang tidak sederhana dalam mengatur/memrogammnya.

Cara 2 : Mengenkrip/encode data file (berdasarkan data biner).
Cara ini biasanya dilakukan oleh pemrogam yang belum tahu cara menyimpan data file (biner) sehingga mengakali dengan cara merubah data biner ke format yang mudah dimasukkan kedalam database (metode encrypt). Biasanya menggunakan enkrip Base64. Cara ini adalah yang paling lambat daripada dua cara disini dalam proses penyimpanan dan menampilkannya kembali.

Cara 3 : Menyimpan file berdasarkan data binarinya.
Cara ini yang biasanya banyak dicari oleh pemrogram pada bahasa program yang dikuasainya. Metode akan lebih lambat dari cara 1 dan lebih cepat dari cara 2. Cara ke 3 inilah akan dibahas pada tutorial ini.

Misal telah dibuat database.
Nama database = tesmasukkanfile
Nama Table = tesblob (hanya punya 1 kolom)
Nama Kolom = gambar (tipe data MEDIUMBLOB)

Contoh modul untuk koneksi ke database dengan nana “Dataku”.

' Gambas module file

Public db As New Connection


Public Function Koneksi() As Boolean

   With db
     .Close
     .Type = "mysql"
     .Host = "localhost"
     .Login = "root"
     .Password = "passwordku"
     .Name = "tesmasukkanfile"
     .Open
   End With
   Return True
   Catch
     Message.Warning("tidak terhubung kedatabase", "Ok")
   Return False

End


Memasukkan file gambar (jpg) ke database MySql

' Gambas module file

Public Sub Main()

   Dim DataGambar As String
   Dataku.Koneksi
   DataGambar = File.Load(System.User.Home &/ "Coba.png")
   ‘Sama dengan /home/pengguna/Coba.png. Boleh juga ambil dari direktori lain
   Dataku.db.Exec("INSERT INTO tesblob VALUES(&1)", DataGambar)

End


Mengembalikan/menampilkan gambar dari database Mysql

' Gambas module file

Public Sub Main()

   Dim Rs As Result
   Dataku.Koneksi
   Rs = Dataku.db.Exec("SELECT gambar FROM tesblob LIMIT 1")
   ‘Data yang diambil diletakkan di /tmp. Boleh juga diletakkan di direktori/folder lain
   File.Save("/tmp/datayangdiambil.png", Rs!gambar)
   ‘Setelah diletakkan di /tmp, kemudian ditampilkan
   Desktop.Open("/tmp/datayangdiambil.png", True)
   ‘Menghapus file data gambar tersebut
   Kill "/tmp/datayangdiambil.png"

End


Mudah-mudahan dapat dipahami.

Senin, 09 Maret 2020

Mengenal Perintah Desktop.Open untuk Membuka / Mengeksekusi File Pada Pemrogaman Gambas


Membuka file disini tidak sama dengan perintah seperti “Stream = Open [Path As String] For [Read/Write/Watch]” yang umumnya ditujukkan untuk memanipulasi file maupun mengambil isi (data) dari file. Desktop.Open berfungsi untuk membuka/menampilkan/mengeksekusi file melalui aplikasi yang sudah dijadikan sebagai standar/default pembukanya, seperti file jpg/jpeg/bitmap yang mungkin aplikasi default pembukanya “Eye of MATE”/Shotwell/dll; file odt/doc/dll aplikasi default pembukanya LibreOffice Writer/wps/dll.
Membuka dengan cara ini sama halnya membukan file dengan perintah “xdg-open <path>” pada terminal

Rumus perintah: Desktop.Open(Path/Url As String, Wait As Boolean)

Contoh membuka file dari penyimpanan lokal:

' Gambas module file

Public Sub main()

   Desktop.Open("/home/username/Pictures/gambarku.jpg", True)

End

Nb:
Nilai True untuk menahan tampilan sampai pengguna menutup aplikasi pembukanya. Jika seandainya diberi nilai False maka anda tidak akan sempat melihat file yang dibuka dari aplikasi pembukanya karena file akan dibuka kemudian ditutup secara cepat. Adapaun nilai Boolean untuk menahan aplikasi pembukanya, secara default adalah False.

Selasa, 03 Maret 2020

Mengenal Penggunakan WeekDay Untuk Mengenali Nama Hari Tiap Tanggal (Date) ~Tutorial Gambas


Perintah WeekDay digunakan untuk mengenali hari tiap tanggal saat menggunakan Date/Now.
Pada dasarnya WeekDay merupakan nilai kembalian yang berupa angka (integer) yang jumlahnya sama dengan jumlah hari (7 hari / Senin – Minggu) yang mana angka tersebut dimulai dari 0 sampai dengan 6 yang bisa digunakan untuk mewakili hari suatu tanggal.
Secara umum pengenalan hari menggunakan (nilai) WeekDay sebagai berikut:
WeekDay(Now) = 0 = Ahad
WeekDay(Now) = 1 = Senin
WeekDay(Now) = 2 = Selasa
WeekDay(Now) = 3 = Rabu
WeekDay(Now) = 4 = Kamis
WeekDay(Now) = 5 = Jum’at
WeekDay(Now) = 6 = Sambtu

Rumus WeekDay: WeekDay(Date as Date) As Integer
Contoh dasar:

‘Gambas modul file

Public Sub Main()

   Print WeekDay(Now)
   ‘Jika “Now” adalah tanggal “03/03/2020” maka hasilnya = 2 (selasa)
  Print WeekDay(“03/04/2020”)
   ‘Hasilnya = 3 (rabu). Ingat format dasar Date adalah mm/dd/yyyy (bulan/hari/tahun)
   ‘03 (bulan), 04 (hari), 2020 (tahun)
   Print WeekDay(“03/05/2020”)
   ‘hasilnya = 4 (kamis)

End

Contoh penerapan pada program

‘Gambas modul file

Public Sub Main()

   Dim NamaHari As String[]
   Dim Tanggal As Date
   NamaHari = [“Minggu”, “Senin”, “Selasa”, “Rabu”, “Kamis”, “Jumat”, “Sabtu”]
   Tanggal = “03/05/2020”
   ‘Kalau di Indonesia fomatnya 05/03/2020 (hh/bb/tttt)

   Print "Ini adalah Hari " & NamaHari[WeekDay(Tanggal)] & " Tanggal " & Format(Tanggal, "dd/mm/yyyy")

End

Hasil: Ini adalah Hari Kamis Tanggal 05/03/2020

Format tanggal:
d = day = hari
m = mounth = bulan
t = year = tahun