Official StoreTekan tombol di atas untuk membeli semua alat dan bahan eksperimen di web ini

Menyimpan SMS ke Database MySQL dengan Delphi (bagian 2)

Untuk dapat menyimpan SMS ke dalam database MySQL -seperti halnya gammu- ada beberapa persiapan yang harus dilakukan, yakni menginstal komponen ZEOS dan database MySQL itu sendiri. Untuk lebih jelasnya bisa Anda baca di artikel saya sebelumnya.

Berikut ini adalah program sederhana yang berfungsi untuk menyimpan data SMS begitu ada SMS masuk. Data yang disimpan meliputi status SMS (dibaca/belum), nomor pengirim, tanggal dan waktu diterimanya SMS, dan isi SMS. Semuanya akan disimpan dalam tabel ‘inbox’ di database MySQL dengan nama ‘contohsms’.

Sebelum memulai programming dengan Delphi, Anda harus meng-create sebuah database dan tabel terlebih dahulu. Caranya : buka XAMPP Control Panel, dan aktifkan Apache dan MySql-nya. Setelah itu, buka web browser dan ketikkan alamat localhost/phpmyadmin. Setelah itu akan muncul web admin pengelolaan database MySQL.  Kemudian create sebuah database baru dengan nama ‘contohsms’ dan tekan tombol ‘Create’

create database mysql

Dalam database ‘contohsms’ inilah kita akan meletakkan sebuah tabel yang berisi data-data SMS yang masuk. Untuk itu, buatlah sebuah tabel dengan nama ‘inbox’ dengan cara seperti gambar di bawah

create tabel

Isikan  ‘Number of fields’ dengan angka ‘5’. Angka ini menunjukkan kolom (field) dari tabel ‘inbox’. Kemudian tekan tombol ‘Save’ yang ada di bawah, untuk menciptakan sebuah tabel baru. Langkah berikutnya adalah men-define masing-masing field dengan settingan sebgai berikut :

define field

Jadi inti dari settingan di atas adalah akan tercipta sebuah tabel ‘inbox’ yang memiliki 5 kolom/field yang nantinya akan berisi data status SMS, nomor pengirim SMS, tanggal dan waktu diterimanya SMS dan isi SMS itu sendiri.

Setelah selesai menciptakan database dan tabel untuk menyimpan data SMS, barulah dilanjutkan dengan programming Delphi. Untuk itu buatlah sebuah form baru dan atur komponen-komponen yang diperlukan sebagai berikut:

design form

Komponen-komponen yang dibutuhkan adalah memo, button (3 buah), dbnavigator, dbgrid (ada di tab Data Controls), ComPort, ZConnection, ZQuery (tab Zeos Access) dan DataSource (tab Data Access). Berikut adalah property masing-masing komponen yang harus diset di awal agar program berjalan dengan baik

Komponen Tab Comp Pallete Properties Nilai
Button1 Standard caption Setting
Buton2 Standard caption Open COM
Button3 Standard caption Open db
ZConnection1 Zeos Access Database contohsms
HostName localhost
Protocol Mysql-5
User root
Connected true
ZQuery1 Zeos Access Connection ZConnection1
SQL Select * from inbox
DataSource1 Data Access Dataset ZQuery1
dbGrid1 Data Controls DataSource DataSource1
dbNavigator1 Data Controls DataSource DataSource1

Jadi untuk melakukan koneksi dengan database MySQL setidaknya dibutuhkan tiga komponen utama yakni ZConnection, ZQuery dan DataSource. ZConnection berfungsi untuk menghubungkan Delphi dengan database ‘luar’ yakni MySQL, ZQuery berfungsi untuk melakukan pengolah data tabel melalui perintah query SQL setelah database terhubung, dan DataSource merupakan penghubung interface database Delphi seperti dbGrid/dBNavigator.

Setelah Anda atur tata letak dan property komponen seperti pada gambar di atas, programming Delphi sudah dapat dilakukan. Seperti biasa, isikan baris program berikut untuk handling SMS yang masuk di event OnRxChar milik komponen ComPort1.

procedure TForm1.ComPort1RxChar(Sender: TObject; Count: Integer); 

var

Str: String;

begin

memo1.clear;

ComPort1.ReadStr(Str, Count);

Memo1.Text := Memo1.Text + Str;

end;

Dan isikan baris program berikut di tombol dengan tulisan ‘Setting’ dan ‘Open COM’

procedure TForm1.Button1Click(Sender: TObject); 

begin

comport1.ShowSetupDialog;

end;

 

procedure TForm1.Button2Click(Sender: TObject); 

begin

if ComPort1.Connected then

begin

ComPort1.Close;

button2.Caption:=’Open’;

end

else

begin

ComPort1.Open;

button2.Caption:=’Close’;

ComPort1.WriteStr(‘at+cmgf=1’+#13#10);

ComPort1.WriteStr(‘at+cpms=”SM”‘+#13#10);

ComPort1.WriteStr(‘at+cscs=”GSM”‘+#13#10);

end;

end;

Untuk membuka koneksi dengan database Anda harus menuliskan baris program berikut di tombol ‘Open db’

procedure TForm1.Button3Click(Sender: TObject); 

begin

zquery1.Open;

end;

Sampai dengan langkah di atas Anda sudah berhasil membuat program yang mampu melakukan handling SMS masuk dan melakukan koneksi dengan database MySQL. Agar SMS masuk langsung mengisi tabel ‘inbox’ sesuai kolom masing-masing, maka Anda perlu mengisikan baris program berikut di event OnChange milik komponen Memo1.

procedure TForm1.Memo1Change(Sender: TObject); 

var a,b,c,d:integer;

kar_awal,kar_akhir:integer;

s:string;

begin

a:=pos (‘+CMTI’,memo1.Text);

if  a <> 0 then

begin

b:=posex (‘,’,memo1.Text,a+1);

c:=posex (#13#10,memo1.Text,b+1);

s:=copy (memo1.Text,b+1,c-b-1);

ComPort1.WriteStr(‘at+cmgr=’+s+#13#10);

end;

 

d:=pos (‘+CMGR’,memo1.Text);

if  d <> 0 then

begin

zquery1.insert;

kar_awal:=pos (‘”‘,memo1.Text);

kar_akhir:=posex (‘”‘,memo1.Text,kar_awal+1);

zquery1.FieldValues[‘status’]:=copy(memo1.Text,kar_awal+1,kar_akhir-kar_awal-1);

 

kar_awal:=posex (‘”‘,memo1.Text,kar_akhir+1);

kar_akhir:=posex (‘”‘,memo1.Text,kar_awal+1);

zquery1.FieldValues[‘sender’]:=copy(memo1.Text,kar_awal+1,kar_akhir-kar_awal-1);

 

kar_awal:=posex (‘”‘,memo1.Text,kar_akhir+1);

kar_akhir:=posex (‘,’,memo1.Text,kar_awal+1);

zquery1.FieldValues[‘tanggal’]:=copy(memo1.Text,kar_awal+1,kar_akhir-kar_awal-1);

 

kar_awal:=kar_akhir;

kar_akhir:=posex (‘”‘,memo1.Text,kar_awal+1);

zquery1.FieldValues[‘waktu’]:=copy(memo1.Text,kar_awal+1,kar_akhir-kar_awal-1);

 

kar_awal:=posex (#13#10,memo1.Text,kar_akhir+1);

kar_akhir:=posex (#13#10,memo1.Text,kar_awal+1);

zquery1.FieldValues[‘isi’]:=copy(memo1.Text,kar_awal+1,kar_akhir-kar_awal-1);

 

zquery1.Post;

end;

end;

 

Baris program dalam event OnChange Memo inilah sebenarnya program utama dari program menyimpan SMS ke MySQL ini. Jadi inti dari baris program di atas adalah melakukan pembacaan SMS begitu ada indikasi SMS masuk (mendeteksi karakter +CMTI sebagai indikator SMS masuk) dan memasukkan data-data SMS (status SMS, nomor pengirim, tanggal, waktu dan isi SMS) ke dalam database MySQL. Oh ya, Anda harus menambahkan unit StrUtils, karena function ‘posex’ berada di unit ini. Selamat mencoba ya, semoga bermanfaat bagi Anda. Jika ada pertanyaan bisa ditujukan email atau YM saya. Happy programming…..

Hasil program

bersambung

Incoming search terms:

cara menyimpan sms ke dalam memo di hp, menyimpan sms ke database, menyimpan sms ke database access, Cara menyimpan data di database melalui sms delphi 7, cara sumpan sms ke memo, cara menyimpan sms ke database, cara menyimpan sms dari handphone ke database MysQl, cara menyimpan gambar di unit 2 delphi unigui, sms masuk ke database delphi, cara mengirim data sms ke database

Leave a Reply

74 Comments on "Menyimpan SMS ke Database MySQL dengan Delphi (bagian 2)"

avatar
  Subscribe  
newest oldest most voted
Notify of
grome
Guest

mas kan kemaren ada buat tutor ttg mengirim sms dengan AT command, kalo misalnya saya kirim ke banyak itu prosedurnya gimana mas??? apa tinggal tambah aja tanda koma di samping nomornya terus tambahin nomornya gitu ya???

amat
Guest

mantap tutorialnya

sahrul
Guest

matur suwun mas. great job.

ari
Guest

sangat detil dan berurutan. terima kasih tutorialnya mas. sukses selalu, terimakasih telah berbagi ilmu.

eeng
Guest

Hehe,. Terimakasih banyak gan,…

Luthfi
Guest

mas maaf mau tanya, sy pake kabel data buetech dan hp siemens c55, setelah sy jalankan program diatas, saat blom ada sms di memo keluar ‘ok’, tpi klo ada sms kok gak bisa baca ya? mohon bantuannya
Terimakasi sebelumnya.

yawan
Guest

–cut–
zquery1.insert;
kar_awal:=pos(‘”‘,memo1.text);
kar_akhir:=posex(‘”‘,memo1.text,kar_awal+1);
zquery1.FieldValues[‘status’]:=copy(memo1.text,kar_awal+1,kar_akhir-kar_awal-1);
——-

tolong dijelaskan maksud dari pos, posex, copy dan kar_awal, Kar_akhir yang ditambah 1 dan kikurangi 1 itu ?

trimakasih…

FIRDAUS
Guest

om.. boleh minta tolong kirim ke email saya ga om artikel dalm bentuk PDF atau document tentang proses pembuatan program sms gateway dari A-Z..

t4nu
Guest

Trims untuk artikelnya mas.
Ada pertanyaan nih, kalau dapat sms yang panjang (lebih dari 160) handlingnya gimana supaya messagenya dapat lengkap?
Trims.

kojo
Guest

Trimakasih untuk artikelnya sangat membantu mas.
aku juga ada pertanyaan, kalau terima/kirim SMS lebih dari 160 karakter gmana ya mas. mohon pencerahanya lg.
Terimakasih.

djoko balikpapan
Guest

Mas aq pakai HP motorola L6 tapi kok pas aq running aplikasix kalo ada sms kok gak masuk di memo ama databasex ya.mohon pencerahan NEWBei delphi ni mas

jho
Guest

tutorialnya sangat berurutan,,,,mudah di mengerti…trimakasih banyak ya mas…..

Yunus
Guest

mas kenapa ouput yang tampil di field [isi] pada project saya terbaca karakter (|).misalkan pada contoh diatas, kalo pada project saya keluar
kaya gini |Tes simpan sms di mysql
seharusnya kan gini “Tes simpan sms di mysql”
saya coba hapus #13#10 pada coding program di bagian [isi] tapi error mas gimana tuh..?

Nico Pachelbel
Guest

omm
saya eror di sini …

Dialogs, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, CPort,

kenapa ya…???

septi maulana
Guest

mas aji mau tanya nih ,,
di CD buku mas aji yang tentang sms gateway kan ada source contoh program2nya ,,,
nah, saya coba jalankan program yang “menyimpan sms ke mysql” ko ga jalan ya ,,
waktu di klik tombol “open Com” memang muncul tulisan ‘OK’,, tapi ketika saya coba( ‘testing terima sms’ ),ko seperti engga ada di respon apa2 ya ,,, ?kenapa ya ?
modem saya pake huawei e173 (GSM),,,
terima kasih

tens
Guest

mas saya mencoba dan srip sama persis tp data yg masuk ke database cuma statusnya saja,yg lain tidak masuk ke database,gmn mas solusinya?

wayan ardika
Guest

om muncul error +CMS ERROR: 321, dimana y salahnya om, darurat ni om

rifki dwi
Guest

Mas Aji saya mau tanya..

Saya coba listing mas aji untuk mengirim dan menerima sms menggunakan perangkat modem huawei..
Pada waktu mengirim SMS bisa mas tapi pada waktu menerima SMS, isi SMS tidak muncul di memo (program tidak bisa mendeteksi SMS yang masuk)..
Itu gimana mas..?? Padahal Listing untuk AT+CMGR nya udah saya masukkan..
mohon pencerahan..Terimakasih

Noval
Guest

Mas Aji saya mau tanya..

Saya coba listing mas aji untuk mengirim dan menerima sms menggunakan perangkat modem smartfren. pada saat openport hasil di memo

+CPMS: 0,30,8,99,8,99
OK
tetapi pada saat terima sms hasil dari memo

COMMAND NOT SUPPORT

mohon pencerahan mas ..Terimakasih..

Rizal
Guest

Mas Aji,klo mau nyimpan pesan keluarnya bagaiamana ya?
mohon bantuannya. .
terima kasih

Rizal
Guest

Mas ajie sya mhon bimbingannya.
terima kasih sebelumnya

Wayan ardika
Guest

Om lok nyimpan sms yg formatny #nama#alamat#nope# gimana cranya om jd yg kita simpan nama,almat,nope ny aja. Mohon bantuany om

indra
Guest

mas ajie, kalau modem dalam kondisi connect sms bisa langsung masuk ke database mySql, akan tetapi ketika modem dalam kondisi disconnect atau offline ada sms masuk lebih dari 1 (katakan ada 3 sms). saat modem di connect-kan SMS yang ketarik cuma 1 SMS aja, ada solusi ga mas? agar ketika modem offline sms tetap bisa masuk kedatabase, trimakasih

oh ya terimakasih kiriman emailnya kemarin mas 🙂

anto
Guest

mas ajie, bagaimana coding delphi “pesan diterima” saat sms berhasil sampe no. tujuan

heru
Guest

mas kalau saya buat variable baru type string misal : Vinbox

nah di ComPort1RxChar saya tambahin Vinbox :=str;

tapi ada masalah kalau sms banyak karakter selalu kepotong.
atasinnya gmn ya ?

heru
Guest

oh ya ini kepotongnya kalau saya jadin variabel.
kalau di memo gak kepotong sampai 160 karakter

tanya
Guest

mas kalau metode polling gak bisa ambil jam + tgl ya ?
kan hasil CMGL gak ada jam nya.

Budi
Guest

Mas, kok di Zeos saya ga ada ComPort y?
jadi ga bisa buat.
saya pakai windows xp

supriono
Guest

mas saya memakai modem movi max, untuk ngirim sms bisa tetapi untuk menerima tidak bisa, gmana solusinya mas

Ariansyah
Guest

mana lanjutannya ni mas tutornya….

jangan lupa di sambung y trimakasih

aziz
Guest

kang…. mohon bantuan… gmna cara nampilin form 5 duluan waktu program dieksekusi… make Delphi 7…. mohon banruannya kang….

zundadi
Guest

makasih bos atas listingnya. oh ya bos bantu dong tampilkan contoh sederhana untuk multi user atau server dan clien.

UDE
Guest

Assalamu’alaikum, Wr, Wb, Mas 3G saya sudah mencoba mengirim Long SMS dan berhasil karena pakai fungsi GetPDU, tetapi saya mempunyai masalah bagaimana cara mengubah dari PDU ke text soalnya begitu long sms masuk, sms pertama berupa file PDU sedangkan sms ke dua normal karena di bawah 153 karakter mohon pencerahan nya bagaimana membuat fungsi GetSMS nya (merubah mode PDU ke Mode SMS). Terima kasih. Wassalam

Yoez
Guest

Terima kasih, tutorialnya sangat bermanfaat. Mas ajie punya list AT Command buat CDMA ? jika berkenan mohon kirim ke email saya. Terima kasih, salam.

holis
Guest

mas,saya tes pake delphi xe4 kok error di bagian comport.readstr(Str,Count);
knapa yah..padahal variabel Str sudah di deklarasikan tapi error

sembiring kembaren
Guest

klo mau nanya mas
klo mau simpan ke access dengan dehpi melalui comport bagaimana skripnya ya mas

tias syawala putra
Guest

gan izin tanya udah ngikutin tahapan diatas, hasil nya ada 2 error yang pertama 1) undeclared identifier: ‘posex’ dan yang ke 2) could not compile used unit menu.pas.. mohon bantuannya gan.. ane pake delphi 7

error: Content is protected !!