“Setup did not find any hard disk drives installed in your computer”

Posted by Aiska Hendra

Pernahkah anda melakukan installasi window, namun pada saat installasi tersebut muncul pesan error “Setup did not find any hard disk drives”.

Kepanikan pun mulai melanda diri anda padahal kompter mampu berjalan diatas system operasi Microsoft Vista.

Lalu bagaimana melakukan installasi Windows XP diatas Komputer untuk Window Vista. Seringkali kita melakukan hal tersebut mungkin karena alasan kompartibilatas terhadap beberapa aplikasi atau anda memang benar-benar tidak menyukai Window Vista (seperti saya hehe).

Masalah yang sering dihadapi ketika kita melakukan Downgrade ke Window XP adalah pada saat installasi muncul pesan Error “Setup did not find any hard disk drives installed in your computer”. Pesan tersebut mungkin terasa aneh bagi anda padahal computer anda mampu berjalan diatas Window Vista, lalu kenapa harus memastikan kalau Hardisk tersebut terpasang dengan benar atau tidak.


Inti dari permasalahan ini sebenarnya dikarenakan Komputer baru anda memiliki Storage Controller yang tidak di support oleh Window XP, biasanya terjadi jika Hardisk anda menggunakan SATA (Serial ATA). Hal ini mungkin bisa diatasi dengan cara merubah tipe Controller pada bios dengan menggunakan IDE atau ATA. Namun dalam beberapa kasus terkadang hal tersebut tidak dapat dilakukan salah satunya adalah pada Laptop Sony Vaio VGN-NR180E dan HP Pavilion. dimana kita tidak dapat merubah tipe dari Storage Controller.

Jika komputer memiliki Floppy Disk mungkin masalah tersebut dapat diatasi dengan cara melakukan installasi Driver Storage Controller SATA melalui Floppy, tapi saat ini sangat jarang sekali komputer terbaru yang memiliki Floppy Disk.

Lalu apa yang harus dilakukan jika terjadi masalah tersebut.

Jika hal tersebut terjadi maka perlu melakukan cara yang sedikit rumit, yaitu melakukan kostomisasi terhadap CD Installasi Window XP. Dimana kita harus menambahkan Driver SATA kedalam CD Installasi Window XP.

Untuk dapat melakukan kostomisasi tersebut kita memerlukan software untuk melakukannya. Salah satunya adalah nLite. Dengan menggunakan software tersebut kita dapat melakukan kostomisasi pada CD Installasi Window XP, jadi tunggu apalagi download dan install nLite sekarang.

Setelah anda selesai melakukan download dan installasi nLite. Jalankan program tersebut dan Klik browse untuk mengambil file Installasi Window XP dari CD.


Kemudian akan muncul kotak dialog, dan pilih drive dimana CD Installasi Window XP anda berada dan pilih Next untuk melanjutkan ke langkah berikutnya.


Berikutnya anda akan diarahkan untuk menyimpan temporary files (File sementara) yang digunakan untuk proses Streaming. Sebaiknya buat folder baru dan beri nama yang mudah untuk diingat seperti XPISO.


Kemdian nLite akan menyalin semua file yang diperlukan dari CD Installasi Window XP kedalam folder sementara tersebut. Ketika proses tersebut selesai maka anda akan melihat Informasi dari versi CD Installasi Window XP anda.

Pilih Next lagi untuk melanjutkan ke kotak dialog berikutnya. Berikutnya adalah melakukan kostomisasi terhadap Installasi Window XP, pilih “Driver” dan "Bootable ISO" pada kotak dialog tersebut.

Catatan : Anda juga dapat memilh pilihan yang lain, seperti menambahkan Service Pack 3 atau melakukan Unattanded sehingga anda dapat langsung dapat melakukan installasi tanpa perlu melakukan setting pada saat installasi berjalan. Namun hal tersebut tidak dibahas disini.
Kemudian pilih Next hingga muncul kotak dialog untuk memilih driver. Cara terbaik untuk menambahkan Driver adalah dengan cara mengambil dari CD yang diberikan dari manufaktur komputer atau dengan mengunduhnya dari situs manfaktur komputer anda.

Kemudian browse direktori dimana anda file driver anda di extract dan pilih Open. Sebenarnya tidak masalah file *.inf mana yang anda pilih, karena program akan mengambil semua file dalam folder.

Kemudian nLite akan menampilkan kotak dialog untuk memilih driver mana yang akan dimasukkan, Jika anda tidak tahu driver mana yang ingin dimasukkan anda dapat membuka Device Manager pada Window Vista untuk menentukan model apa yang cocok dengan computer anda, perlu diperhatikan juga jangan memilih 64-bit jika anda menggunakan 32-bit atau memilih versi yang salah.

Saya merekomendasikan anda menambahkan juga Storage dan Network Driver, yang mungkin tidak ada pada CD Installasi Window XP anda.

Ok Kostomisasi terhadap Installasi Window XP selesai dan langkah berikutnya adalah menyimpan hasil dari kostomisasi tersebut. Untuk menyimpannya anda dapat memilih Create Image untuk membuat file ISO yang dapat anda burning nanti dengan menggunakan software burning yang anda miliki atau anda dapat langsung melakukan burning ke CD.
Catatan : Jika anda memilih membuat Image ISO pastikan anda memilih “Make ISO” sebelum anda menekan tombol Next.

Demikian sedikit tulisan dari saya dan semoga tulisan ini bermanfaat bagi anda.

Selamat mencoba dan semoga berhasil dengan Installasi Window XP anda yang baru

Terima Kasih.

Salam,


Aiska Hendra

syntax untuk tgl

Posted by Aiska Hendra

--- sherinalavenda wrote:
sebuah database berisi

Tgl Nama Barang StockAwal Masuk Keluar Akhir
1/1/08 barang A 10 2 0 12
5/1/08 barang A 12 0 1 11
10/1/08 barang A 11 5 0 16

ada yg bisa bantu syntax untuk mengetahui stock awal & stock akhir
tanggal 7/1/08(dtpicker)?
thank u.

-------------------------------------------------
Dear sherina,

Mungkin ada sedikit tambahan dan kritik dari saya.
Kalau saya bilang anda telah melakukan pemborosan terhadap data.
karena anda melakukan pembuatan field yang tidak perlu. sebaiknya anda
buang saja field. StockAwal, Masuk, Keluar, dan akhir. Dan diganti
dengan field qty (kuantitas). sehingga isi dari tabel menjadi seperi ini

tblBarang:
1. idBarang (LongInteger) auto increment, Primary Key
2. NamaBarang (nVarChar)

tblStock:
1. idStock (LongInteger) auto increment, Primary Key
2. idBarang (LongInteger)
3. Tanggal (date/time)
4. Qty (Long Integer)

Note:
Untuk barang masuk field qty adalah positif(+) dan untuk barang keluar
negatif(-).

Untuk mendapatkan stock awal, Transaksi Pada Hari tertentu atau Stock
Akhir anda dapat mengambilnya dengan menggunakan SUM.

contoh:

Melihat Stock Awal tanggal 1 Januari 2008:
"SELECT tblBarang.NamaBarang, Sum(tblStock.qty) AS StockAwal
FROM tblBarang INNER JOIN tblStock ON tblBarang.idBarang =
tblStock.idBarang
WHERE tblStock.Tanggal<#1/1/2008#
GROUP BY tblBarang.NamaBarang"

Melihat Stock Akhir tanggal 31 Januari 2008:
"SELECT tblBarang.NamaBarang, Sum(tblStock.qty) AS StockAkhir
FROM tblBarang INNER JOIN tblStock ON tblBarang.idBarang =
tblStock.idBarang
WHERE tblStock.Tanggal<#1/31/2008#
GROUP BY tblBarang.NamaBarang"

Melihat Barang Masuk Selama Bulan Januari 2008:
SELECT tblBarang.NamaBarang, Sum(tblStock.qty) AS BarangMasuk
FROM tblBarang INNER JOIN tblStock ON tblBarang.idBarang =
tblStock.idBarang
WHERE Month([Tanggal])=1
AND Year([Tanggal])=2008
AND tblStock.qty>0
GROUP BY tblBarang.NamaBarang

Melihat Barang Keluar Selama Bulan Januari 2008:
SELECT tblBarang.NamaBarang, Sum(tblStock.qty) AS BarangKeluar
FROM tblBarang INNER JOIN tblStock ON tblBarang.idBarang =
tblStock.idBarang
WHERE Month([Tanggal])=1
AND Year([Tanggal])=2008
AND tblStock.qty<0
GROUP BY tblBarang.NamaBarang

Ok, sekian tambahan dari saya. saya mohon maaf apabila anda
tersinggung dan mohon maaf apabila cara ini cukup membingungkan buat
anda tapi setidaknya anda dapat belajar untuk dapat mengoptimalkan
database dengan menggunakan Join Tabel.

Terima Kasih dan Selamat Mencoba.

Salam,

Aiska Hendra

Re: help VB

Posted by Aiska Hendra

--- In indoprog-vb@yahoogroups.com, SELVI OYE wrote:
para pakar VB, minta tolong dong dgn scrip berikut :
Database acces.
Table Film :
-Â Â Â Â Â Â Â kode_film
-Â Â Â Â Â Â Â judul
-Â Â Â Â Â Â Â qty
-       status ( “ada” & “keluar”)
Â
kronologisnya :
jika judul film dgn qty 3 dan dipinjam 1 berarti tinggal 2 dgn status
“keluar”.
Nah jika film akan dihapus dari database, maka akan diselecsi dgn status
“ada” jadi jika status ada maka bisa dihapus.
Â
Ok, selanjutnya aku udah bikin scrip di Vb seperti ini :
Â
Private Sub listView1_DblClick()
On Error GoTo ErrPesan
Dim i As Integer
Dim TempIndex As Integer
Dim strSQL As String
Dim tempKode, tempstatus As String
Â
Â
   If listView1.ListItems.Count = 0 Then
        Exit Sub
   End If
Â
 TempIndex = listView1.SelectedItem.Index
 tempKode = listView1.ListItems.Item(TempIndex)
Â
  'Konfirmasi penghapusan record
 Â
 jawab = MsgBox("Apakah Anda yakin Data " & kode_film & _
 vbCrLf & " Akan dihapus ? ", vbInformation + vbYesNo)
 If jawab = vbNo Then Exit Sub
 con.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path &
"\rental1.mdb"
 If rsfilm.Fields("status") = "ADA" Then
       strSQL = "DELETE FROM film where kode_film = '" & tempKode & "'"
      Â
       con.Execute strSQL
       MsgBox "DATA FILM TELAH DIHAPUS"
Â
 label6.Caption = "Total Record : " & rsfilm.RecordCount
 i = listView1.SelectedItem.Index
 listView1.ListItems.Remove i
 End If
 Exit Sub
ErrPesan:
  MsgBox "Data belum bisa dihapus " & vbCrLf & " Film Masih diPinjam ",
vbInformation
 End Sub
Â
Tapi yg ada adalah masuk ke errpesan, sehingga data tidak bisa dihapus.
Mohon petunjuknya.



Dear Selvi,

Coba anda ganti kode anda menjadi seperti ini:

Private Sub listView1_DblClick()

On Error GoTo ErrPesan
Dim i As Integer
Dim TempIndex As Integer
Dim strSQL As String
Dim tempKode, tempstatus As String

If listView1.ListItems.Count = 0 Then Exit Sub
If listView1.SelectedItem Is Nothing Then Exit Sub
set con = New ADODB.Connection

TempIndex = listView1.SelectedItem.Index
tempKode = listView1.SelectedItem

' Sory disini object rsfilm masih belom jelas dimana posisi kursornya
jadi anda harus memastikan bahwa rsfilm berada pada posisi yang benar
sehingga anda tidak dapat membuat statement apakah status ada.
Sebaiknya anda coba ambil data status dari
listview1.selecteditem.subitem(?) dimana sub item status tersebut ada.

'asumsi bahwa kolom status berada pada subitem 3
if listview1.SelectedItem.SubItem(3) = "ADA" Then
jawab = MsgBox("Apakah Anda yakin Data " & kode_film & _
vbCrLf & " Akan dihapus ? ", vbInformation + vbYesNo)
If jawab = vbYes Then
con.CursorLocation = adUseServer
con.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" & _
App.Path & "\rental1.mdb"
strSQL = "DELETE * FROM film where kode_film = '" & tempKode & "'"
con.BeginTrans
con.Execute strSQL
con.CommitTrans
listView1.ListItems.Remove TempIndex
MsgBox "DATA FILM TELAH DIHAPUS"
set con = Nothing
End If
Else
MsgBox "Data belum bisa dihapus " & vbCrLf & " Film Masih diPinjam", vbInformation
End If

Exit Sub
ErrPesan:
If con.State = adStateOpen Then
con.RollBackTrans
set con = nothing
End If

MsgBox "Error !!! " & vbCrLf & Err.Description, vbExclamation

End Sub

Note:

BeginTrans
The BeginTrans method starts a new transaction.
This method can also be used to return a long value that is the level
of nested transactions. A top level transaction has a return value of
1. Each additional level increments by one.

CommitTrans
The CommitTrans method saves all changes made since the last
BeginTrans method call, and ends the current transaction.
Since transactions can be nested, all lower-level transactions must be
resolved before you can resolve higher-level transactions.

RollbackTrans
The RollbackTrans method cancels all changes made since the last
BeginTrans method call, and ends the transaction.
Since transactions can be nested, all lower-level transactions must be
resolved before you can resolve higher-level transactions.


Ok semoga dengan sedikit Script diatas dapat membatu anda
Terima Kasih dan Selamat Mencoba

Salam,


Aiska Hendra

Alokasi Memory

Posted by Aiska Hendra

Salah Satu alasan para programmer untuk menggunakan Windows API dapat melakukan memanipulasi memory,
untuk dapat memanipulasi memory kita dapat menggunakan Fungsi API

Globalalloc (mengalokasikan memori),
Globallock (mengunci memori dan mendapatkan pointernya),
Globalunlock ( membuka kunci memori), dan
Globalfree ( Disalokasikan memori)

Sekarang kita lihat bagaimana cara mengcopy data kedalam memory.
untuk itu kita perlu satu fungsi API lagi untuk mengcopy memori yaitu
MoveMemory (memindah posisi memory)

Sebelum kita dapat menggunakan Fungsi API kita harus mendeklarasikan fungsi API tersebut, sekarang kita deklarasikan dulu fungsi API-nya.

Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal
dwBytes As Long) As Long

jika anda bingung menggunakan wFlags pada fungsi Globalalloc ini daftar constant value untuk wFlags Globalalloc:
• GMEM_FIXED—&H0
• GMEM_MOVEABLE—&H2
• GMEM_NOCOMPACT—&H10
• GMEM_NODISCARD—&H20
• GMEM_ZEROINIT—&H40
• GMEM_MODIFY—&H80
• GMEM_DISCARDABLE—&H100
• GMEM_NOT_BANKED—&H1000
• GMEM_SHARE—&H2000
• GMEM_DDESHARE—&H2000
• GMEM_NOTIFY—&H4000
• GMEM_LOWER—GMEM_NOT_BANKED
• GMEM_VALID_FLAGS—&H7F72
• GMEM_INVALID_HANDLE—&H8000

Selain wFlags anda juga anda juga harus menentukan dwBytes yang merupakan jumlah byte yang diminta dari memory.

Untuk mendapatkan pointer dari memory anda dapat menggunakan Globallock yang akan mengunci memory yang telah di alokasikan dari Globalalloc.

Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long

Selain GlobalAlloc dan GlobalLock anda juga dapat memindah data yang ada didalam memory dengan menggunakan Fungsi MoveMemory.

Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal dest As Any, ByVal src As Any, ByVal length As Long)

Ini argumen untuk MoveMemory:
• dest—Pointer pada buffer tujuan
• src—Pointer pada buffer sumber
• length—jumlah byte memory yang akan dipindah

Untuk mengalokasikan memory kota gunakan Globalalloc, untuk mengunci dan mengambil pointer dari memory kita gunakan Globallock dan untuk membukanya kembali kita gunakan fungsi API Globalunlock. Deklarasi untuk fungsi API ini adalah:

Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long

Dimana hMem adalah pointer dari memory yang telah terkunci.

Selain itu kita juga perlu melakukan pembersihan dan mendisalokasikan data memory dengan menggunakan fungsi API Globalfree

Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long

Dimana hMem adalah buffer dari memory yang dialokasikan.

OK sekarang kita coba buat sample programnya, bagaimana menimpan string yang yang dimasukkan oleh user kedalam textbox kedalam memory dan memindahkannya. Dengan sample ini diharapkan anda dapat memahami perpindahan data dalam memory.

Kita mulai dengan memasukkan 40 karakter long buffer untuk string yang anda didalam form.

Const DataLength = 40
Dim outbuffer As String * DataLength

Dim hMemory As Long
Dim hMemoryPointer As Long

Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal dwBytes As Long) As Long
rivate Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (ByVal dest As Any, ByVal src As Any, ByVal length As Long)

Const GMEM_MOVEABLE = &H2

Pada bagian Form design kita membutuhkan 2 object Textbox dan 2 CommandButton, tambahkan object tersebut pada form dan tambahkan kode berikut ini pada CommandButton:

Private Sub Command1_Click()
outbuffer = Text1.Text
‘ mengambil text dari Text1
hMemory = GlobalAlloc(GMEM_MOVEABLE, DataLength)
‘ mengalokasikan memori yang akan kita gunakan (outbuffer)
hMemoryPointer = GlobalLock(hMemory)
‘ Mengunci dan mendapatkan pointer dari memory.
Call MoveMemory(hMemoryPointer, outbuffer, DataLength)
‘ Memindahkan data outbuffer kedalam ke memory yang lain
End Sub

Kode diatas berfungsi untuk mengalokasikan isi dari dari Text1 dan memindahkannya buffer ke memory yang telah dialokasikan. Sekarang kita buat kode untuk melepaskan buffer dari dari memory dan memindahkannya kedalam text2.

Private Sub Command2_Click()
Call MoveMemory(inbuffer, hMemoryPointer, DataLength)
Text2.Text = inbuffer
GlobalUnlock (hMemoryPointer)
GlobalFree (hMemory)
End Sub

Ok cukup sekian tulisan dari Aiska semoga tulisan ini bisa bermanfaat bagi teman-teman yang membaca dan terutama bagi saya sendiri yang sering lupa :)

Terima Kasih

Salam,


^Aiska Hendra^