Wednesday, February 29, 2012

Mengurutkan data berdasarkan Angka

Sempat mengalami kendala waktu mengambil data dari suatu tabel dan diurutkan berdasarkan Nomor id, tapi diurutkan dari yang terkecil terlebih dahulu. Akan tetapi hasil yang ditampilkan tidak sesuai dengan harapan alias urutnya secara acak.

contoh:
1,2,3,4,5,10,12,34


select id from tabelku order by id asc

yang muncul tidak seperti diatas tapi acak.

Pada contoh ini saya mengunakan database SQL Server, tapi saya rasa tidak terlalu berbeda dengan database lainnya.

Jadi, cara yang saya pakai adalah menkonversi id itu ke nilai number, karena bisa jadi nilai idnya tidak berupa number.

select id from tabelku order by convert(int,id) asc

dan hasil yang ditampilkan, berurut:
1,2,3,4,5,10,12,34

Wednesday, February 22, 2012

Pengulangan di store procedure (SQL Server)

Beberapa waktu lalu sampat ada beberapa pekerjaan yang memerlukan pemrosesan data secara berulang di suatu procedure (SQL server). Cara seperti ini sudah bisa kita lakukan di dalam sebuah pemrogramman VB / PHP.
Kita bisa pakai perintah seperti ini :

Do
'code yang akan diproses

rs.movenext
Loop Until Rs.EOF


Konsepnya sama dengan pengulangan data di pemrogramman VB/PHP, tapi proses ini dilakukan sekaligus di dalam sebuah storeprocedure:

DECLARE @ID int



-- ambil id dari marker detail
DECLARE c1 CURSOR READ_ONLY
FOR
select id
From Order_DETAIL
where OrderNo=@orderNo
OPEN c1

FETCH NEXT FROM c1
INTO @ID

WHILE @@FETCH_STATUS = 0
BEGIN

---- lakukan proses eksekusi di sini, dengan memanfaatkan nilai dari variable @id
delete from order_detail where id=@id



FETCH NEXT FROM c1
INTO @ID

END

CLOSE c1
DEALLOCATE c1

Monday, January 9, 2012

Membuat Limit di SQL SERVER

Sewaktu mengunakan database MySQL kita sudah terbiasa dengan yang namanya LIMIT terutama jika kita ingin mengabungkan atara MySQL dan PHP. Kita sering mengunakannya untuk pengunaan PAGING di halaman web.

- Cara kerja LIMIT
Misalkan kita mempunya 10 rekord (tuple) dalam sebuah tabel (relation) maka jika kita ingin mengambil dari baris 2 sebanyak 3 record bisa mengunakan perintah seperti ini:

select * from tabelku order by field1 limit 2,3

sintax diatas akan mengambil data mulai dari (baris)tuple ke 2 sampai baris ke 5.

Perintah LIMIT tidak ada di database SQLSERVER. Karena perintah ini merupakan bukan standard dari Sintax SQL. Lalu bagaimana cara membuat LIMIT di SQL SERVER, tentu bisa kita bisa mengunakan perintah ROW_NUMBER (memang terlihat tidak efisian seperti jika kita mengunakan LIMIT di MYSQL.

Begini perintahnya.

SELECT * FROM (
SELECT *, ROW_NUMBER() OVER (ORDER BY field1) as row FROM tabelku
) as a WHERE row >2 and row <= 3


sintax diatas jika di jalankan maka hasilnya sama dengan sintax LIMIT di MySQL.

Penjelasan dari sintax diatas:
- kita memberikan nomor identitas ke baris tabelku dengan perintah
SELECT *, ROW_NUMBER() OVER (ORDER BY field1) as row FROM tabelku
maka akan ditambahkan 1 kolom, dengan nama row yang beriisi posisi dari baris(tuple).
misal ada 10 record, maka akan diberi baris 1,2,3..10 diurutkan berdasarkan field1
- kemudan setelah itu di buat subQuery dari sintax yang dibuat sebelumnya dengan perintah
select * from(
..........
) as a WHERE row >2 and row <= 3


dan akhirnya kita bisa menampilkan data sesuai dengan yang kita perlukan :)

Wednesday, December 28, 2011

file_get_contents file access is disabled

pada waktu membuka url, dengan kode :
file_get_contents($url)

saya mendapat error seperti ini:

Warning: file_get_contents() [function.file-get-contents]: URL file-access is disabled in the server configuration in XXXX.php on line XX

setelah saya cek ternyata server (hosting) saya tidak mendukung untuk file_get_contents() / disable olah pelimik hosting.

sedangkan aplikasinya tidak bisa berjalan kalau file_get_contents() tersebut tidak aktif.

solusinya bisa mengunakan curl.

function curl_get_contents ($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CaURLOPT_URL, $url);
$html = curl_exec($curl);
curl_close($curl);
return $html;
}


kemudian saya ubah kode menjadi seperti ini:
ubah :
file_get_contents($url)

menjadi:
curl_get_contents($url)

dan bisa berjalan dengan baik.

Menyimpan & Menampilkan data ke/dari database dengan ADODB.

Bagaimana cara menyimpan gambar ke dalam sebuah database, dengan pemprogramman VB6 ?
Berikut, penggalan kode yang mungkin bisa menjadi insipirasi anda.

1. Buat Database sebagai berikut (gunakan MS ACCESS / SQL SERVER). saya sudah pernah mencoba dengan MySQL Tapi tidak bisa mengunakan fungsi ini jika gambar berukuran kurang dari 1 MB.

Buat table tbl_photo di database anda.

TBL_PHOTO
---------
IDPHOTO AUTO NUMBER
PHOTO IMAGE / BLOB


2. Buat Project Visual basic 6
3. Sebelumnya anda tambahkan terlebih dahulu library Microsoft Scripting Runtime pada menu Project > Referance.
library ini memiliki sejumlah fungsi yang berhubungan dengan pengolahan File & directory. anda bisa melakukan pengecekan apakah file ada didalam sebuah directory atau tidak anda.
4. Tambahkan Libary Microsoft ActiveX data Object 2.x library (anda bisa ambil versi yang terakhir 2.8)
5. berikut fungsi save & get image ke database

Function saveImage(rs As Object, FieldName, mPicture As Object, fileExt As String)
Dim strPath As String
Dim strIn As String
Dim fo As New FileSystemObject

Dim mystream As New ADODB.Stream
Set mystream = New ADODB.Stream
mystream.Type = adTypeBinary


If Not IsNull(mPicture) Then
strPath = App.Path & "\savePic.jpg"
If fo.FileExists(strPath) Then
Kill strPath
End If
If mPicture <> 0 Then
SavePicture mPicture, strPath

mystream.Open
mystream.LoadFromFile strPath
rs.Fields(FieldName) = mystream.Read

End If
End If
mystream.Close
End Function
Function LoadImageFromDB(rs As Object, FieldName, mPicture As Object)
Dim strOut As String
Dim strFileout As String
Dim mystream As New ADODB.Stream
mystream.Type = adTypeBinary


If Trim(rs.Fields(FieldName).Value & "") <> "" Then
strOut = Space(rs.Fields(FieldName).ActualSize)

' Save the image to file

strFileout = App.Path & "\LoadPic.jpg"
If strOut <> "" Then
If Dir(strFileout, vbArchive Or vbHidden Or vbNormal Or vbReadOnly Or vbSystem) <> "" Then Kill strFileout
mystream.Open
mystream.Write rs.Fields(FieldName)
mystream.SaveToFile strFileout, adSaveCreateOverWrite
Set mPicture.Picture = LoadPicture(strFileout)

Else
Set mPicture.Picture = Nothing
End If
mystream.Close
End If
End Function




anda bisa download sourcecodenya disini: http://bit.ly/sN60qI

Monday, November 7, 2011

Membuat account Paypal

Beberapa bulan yang lalu saya membuat account paypal, karena kebetulan lagi perlu untuk pembayaran secara online. ada beberapa hal yang akan saya share dengan anda semua.

Keuntungan dari memiliki account ini adalah :
* Bisa menerima pembayaran dari Luar negeri, mata uang Dolar, Euro dll.
* Ada fasilitas konversi mata uang.
* Bisa digunakan sebagai pembayaran untuk pembelian barang di toko online (amazon.com, ebay.com).
* Bisa menarik dana dari paypal dan di pindahkan ke bank local indonesia.
* Bisa membuat Invoice di account ini.
* Bisa digunakan untuk account pembayaran kalau misalkan mempunyai toko online.

Kekurangannya yang saya alami :
* Penerimaan dana di kenakan biaya :(  tidak seperti kita menerima transferan dari orang di account bank lokal kita.
* Total penerikan (withdraw) < 1,500,000 di kenakan fee Rp. 16.000,- diatas itu Free.
* Nilai konversi ke Rupiah lebih rendah di banding dengan nilai kurs yang ada di bank lokal (klikbca.com), misal di BCA $1=9,050,- di Paypal cuman 8,700,-
* Penarikan dana (Withdraw) dibutuhkan waktu 2 hari kerja. jadi misalkan nariknya hari jumat maka dia akan diproses hari senin/selasa, bisanya sih hari senin sudah terkirim.

Berikut tahapan-tahapan yang saya lakukan waktu membuat account paypal :

1. Saya mendaftar di paypal (gratis) di situs www.paypal.com
2. Setelah itu saya diminta untuk verify account, karena jika belum verifed ada limit untuk withdraw(penarikan) / penerimaan dana terbatas.
3. Untuk verifikasi harus mengunakan kartu kredit. Kebetulan saya sendang tidak ada kartu kredit, akhirnya cari-cari info dapat cara mengunakan VCC (Virtual Credit Card) saya beli dengan harga Rp.80,000. kemudian saya aktivasi account saya sesuai dari panduan pihan VCC. dan setelah 2 hari saya buka account saya VERIFIED.
4. Tapi waktu itu account saya masih Personal, akhirnya saya upgrade menjadi Premier, kerena tidak ada biaya tambahan dan versi premier jauh lebih lengkap.


Segini dulu pengalaman dari saya, nanti kalau ada tambahan lagi akan saya update...

 Ayo... bikin account paypal sekarang juga :)

Monday, August 1, 2011

Membuat Function di SQL Server


Pada database server (SQL Server/MySQL) terdapat fasilitas untuk pembuatan function, function digunakan untuk membuat printah dan di jalankan ketika select / update data.

contoh:
select substring(fnama,1,2) from tabel1

pada contoh penggalan sintak sql diatas substring merupakan fungsi yang telah di definiskan (defult) oleh sql server. dan kita bisa membuat fungsi sendiri sesuai dengan kebutuhan.

contoh seperti ini:

select
(case when Harga is null then 0 else Harga end * 
case when JmlBeli is null then 0 else JmlBeli end) as totalBeli
from penjualan


kondisi diatas mengecek jika isi field harga/jmlbeli itu null maka di ganti dengan 0, karna nilai NULL jika di kali dengan nilai berapapun hasilnya NULL, untuk itu harus di ubah dulu menjadi 0.

Dari contoh diatas baru beberapa baris saja, bagaimana jika sql yang kita tulis itu banyak dan komplek, akan sangat memusingkan jika harus mengetik sepanjang itu. Untunglah ada function di sql server.

beginilah sintax untuk membuat function di sql server:


CREATE FUNCTION [dbo].[ceknull]
(
-- @AUTHOR YUSUF HERMANTO


@fnilai float
)
RETURNS float
AS
BEGIN
DECLARE @n float

if (@fnilai is NULL)
begin
set @n = 0 
end
else
begin
set @n = @fnilai
end


return convert(float,@n)


END

kemudian execute sintax diatas, dan selanjutnya kita bisa panggil sintax sql diatas seperti ini:

select
(ceknull(harga) * ceknull(JmlBeli)) as totalBeli
from penjualan

labih singkat kan... :)