Friend!
 
pada saat tgl masehi =29/02/2006
var  HijriDate =29/02/1427
29/02/1427 bukan merupakan tanggal krn tdk ada tanggal tsb yg ada 28/02/1427
jadi fungsi Day(HijriDate)  menjadi error.
untuk mengecek sebuah tanggal atau bukan gunakan isdate(Tanggal).
 
Jadi solusi untuk kasus diatas cara  mengambil tanggal,bulan,dan tahun gunakan fungsi string aja. misal  tanggal1.Text = left((HijriDate),2)
 
mungkin bisa membantu, 
 
 
 
----- Original Message -----
Sent: Wednesday, March 29, 2006 8:30 AM
Subject: [Programmer-VB] Confert Masehi ke Hijriah error pada tanggal 29-03-06 ?

Teman2 semua,

Aku bikin code untuk rubah tanggal Masehi ke Hijriah.
Selama ini OK2 aja.

Tapi pas tanggal 29-03-06, terjadi kesalahan.
Kode ini aku ambil dari MSDN nya microsoft.

detail code :

Private Sub Command1_Click()
    Unload Me
End Sub

Function ConvertDateString( _
    ByRef StringIn As String, _
    ByRef OldCalendar As Integer, _
    ByVal NewCalendar As Integer, _
    ByRef NewFormat As String) As String
   
    Dim SavedCal As Integer
    Dim d As Date
    Dim s As String
   
    '// Save VBA Calendar setting to restore when
finished
    SavedCal = Calendar
   
    '// Convert date to new calendar and format
    Calendar = OldCalendar      ' Change to StringIn
calendar
    d = CDate(StringIn)       ' Convert from String to
Date
    Calendar = NewCalendar      ' Change to calendar
of new string
    s = CStr(d)          ' Convert to short format
String
    'ConvertDateString = Format       ' Reformat  
(s, NewFormat)
    ConvertDateString = Format(s, NewFormat)
   
    '// Restore VBA Calendar setting
    Calendar = SavedCal
End Function


Private Sub Form_Load()
    't_tanggal = dtpicker
    t_tanggal.Value = Date + 1
   
    'tanggal1 = combo box
    x = 1
    For x = 1 To 30
        If Len(Trim(Str(x))) = 1 Then
           xtanggal = "0" + Trim(Str(x))
        Else
           xtanggal = Trim(Str(x))
        End If
        tanggal1.AddItem (xtanggal)
    Next
   
    BulanIslam = Array("01 Muharram", "02 Safar", "03
Rabiul Awal", "04 Rabiul Akhir", "05 Jumadil Awal",
"06 Jumadil Akhir", "07 Rejab", "08 Syakban", "09
Ramadan", "10 Syawal", "11 Zulkaedah", "12 Zulhijjah")

    'bulan1=combo box
    i = 0
    For i = 0 To 11
        xtanggal = Trim(BulanIslam(i))
        bulan1.AddItem (xtanggal)
    Next
   
    Dim GregorianDate As String
    Dim HijriDate As String
    Dim HijriFormat As String
   

    GregorianDate = Format(t_tanggal.Value,
"dd/mm/yyyy")  ' Gregorian string to convert
    HijriFormat = "dd/mm/yyyy"   ' Format for Hijri
date

    ' tahun1 = text box
    '// Convert to Hijri date 7/8/1414 and return in
Long Date format
    HijriDate = ConvertDateString( _
        GregorianDate, _
        vbCalGreg, _
        vbCalHijri, _
        HijriFormat)
       
    tanggal1.Text = Day(HijriDate)
    bulan1.Text = BulanIslam(Month(HijriDate) - 1)
    tahun1.Text = Year(HijriDate)
     '.Value = Day(HijriDate)

End Sub


Private Sub t_tanggal_Change()
   '******************************
   On Error Resume Next
   '******************************

   Dim GregorianDate As String
   Dim HijriDate As String
   Dim HijriFormat As String
   BulanIslam = Array("01 Muharram", "02 Safar", "03
Rabiul Awal", "04 Rabiul Akhir", "05 Jumadil Awal",
"06 Jumadil Akhir", "07 Rejab", "08 Syakban", "09
Ramadan", "10 Syawal", "11 Zulkaedah", "12 Zulhijjah")

   GregorianDate = Format(t_tanggal.Value,
"dd/mm/yyyy") ' Gregorian string to convert
   HijriFormat = "dd/mm/yyyy"   ' Format for Hijri
date

    '// Convert to Hijri date 7/8/1414 and return in
Long Date format
   HijriDate = ConvertDateString( _
        GregorianDate, _
        vbCalGreg, _
        vbCalHijri, _
        HijriFormat)
   tanggal1.Text = Day(HijriDate)
   bulan1.Text = BulanIslam(Month(HijriDate) - 1)
   tahun1.Text = Year(HijriDate)
End Sub

Private Sub tahun1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
    On Error Resume Next
    Dim GregorianDate As String
    Dim HijriDate As String
    Dim HijriFormat As String

    'GregorianDate = "12/31/93"   ' Gregorian string
to convert
    'HijriFormat = "Long Date"   ' Format for Hijri
date
    HijriFormat = Trim(tanggal1.Text) + "/" +
Left(bulan1.Text, 2) + "/" + Trim(tahun1)
    'MsgBox (HijriFormat)
    GregorianDate = "dd/mm/yyyy"

    '// Convert to Hijri date 7/8/1414 and return in
Long Date format
    'HijriDate = ConvertDateString(GregorianDate,
vbCalGreg, vbCalHijri, HijriFormat)
    GregorianDate = ConvertDateString(HijriFormat,
vbCalHijri, vbCalGreg, GregorianDate)
    'MsgBox HijriDate
    'MsgBox GregorianDate
    t_tanggal.Value = Format(GregorianDate,
"dd/mm/yyyy")
    tanggal.Value = Format(GregorianDate,
"dd/mm/yyyy")
    'Text1.Text = GregorianDate
End If
End Sub

Private Sub bulan1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
    On Error Resume Next
    Dim GregorianDate As String
    Dim HijriDate As String
    Dim HijriFormat As String

    'GregorianDate = "12/31/93"   ' Gregorian string
to convert
    'HijriFormat = "Long Date"   ' Format for Hijri
date
    HijriFormat = Trim(tanggal1.Text) + "/" +
Left(bulan1.Text, 2) + "/" + Trim(tahun1)
    'MsgBox (HijriFormat)
    GregorianDate = "dd/mm/yyyy"

    '// Convert to Hijri date 7/8/1414 and return in
Long Date format
    'HijriDate = ConvertDateString(GregorianDate,
vbCalGreg, vbCalHijri, HijriFormat)
    GregorianDate = ConvertDateString(HijriFormat,
vbCalHijri, vbCalGreg, GregorianDate)
    'MsgBox HijriDate
    'MsgBox GregorianDate
    t_tanggal.Value = Format(GregorianDate,
"dd/mm/yyyy")
    tanggal.Value = Format(GregorianDate,
"dd/mm/yyyy")
    'Text1.Text = GregorianDate
End If

End Sub

Private Sub tanggal1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
    On Error Resume Next
    Dim GregorianDate As String
    Dim HijriDate As String
    Dim HijriFormat As String

    'GregorianDate = "12/31/93"   ' Gregorian string
to convert
    'HijriFormat = "Long Date"   ' Format for Hijri
date
    HijriFormat = Trim(tanggal1.Text) + "/" +
Left(bulan1.Text, 2) + "/" + Trim(tahun1)
    'MsgBox (HijriFormat)
    GregorianDate = "dd/mm/yyyy"

    '// Convert to Hijri date 7/8/1414 and return in
Long Date format
    'HijriDate = ConvertDateString(GregorianDate,
vbCalGreg, vbCalHijri, HijriFormat)
    GregorianDate = ConvertDateString(HijriFormat,
vbCalHijri, vbCalGreg, GregorianDate)
    'MsgBox HijriDate
    'MsgBox GregorianDate
    t_tanggal.Value = Format(GregorianDate,
"dd/mm/yyyy")
    tanggal.Value = Format(GregorianDate,
"dd/mm/yyyy")
End If
End Sub


Kesalahan terjadi pada code :

tanggal1.Text = Day(HijriDate)

pada ivent :

Private Sub t_tanggal_Change()
  
   '******************************
   On Error Resume Next
   '******************************

   Dim GregorianDate As String
   Dim HijriDate As String
   Dim HijriFormat As String
   BulanIslam = Array("01 Muharram", "02 Safar", "03
Rabiul Awal", "04 Rabiul Akhir", "05 Jumadil Awal",
"06 Jumadil Akhir", "07 Rejab", "08 Syakban", "09
Ramadan", "10 Syawal", "11 Zulkaedah", "12 Zulhijjah")

   GregorianDate = Format(t_tanggal.Value,
"dd/mm/yyyy") ' Gregorian string to convert
   HijriFormat = "dd/mm/yyyy"   ' Format for Hijri
date

    '// Convert to Hijri date 7/8/1414 and return in
Long Date format
   HijriDate = ConvertDateString( _
        GregorianDate, _
        vbCalGreg, _
        vbCalHijri, _
        HijriFormat)
   tanggal1.Text = Day(HijriDate)
   bulan1.Text = BulanIslam(Month(HijriDate) - 1)
   tahun1.Text = Year(HijriDate)
End Sub

Mohon petunjuk temen2 semua, penting banget nih...

Project contoh saya sertakan.


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com


Wahana Programmer Groups Links

<*> Untuk mengunjungi sponsor milis ini, klik link berikut:
    http://wahanaprogrammer.net

<*> Untuk menghubungi owner milis ini, kirim email ke:
    [EMAIL PROTECTED]

<*> Konsultasi pemrogramman bisa chat disini:
    Yahoo! Messenger: wahanaprogrammer




YAHOO! GROUPS LINKS




Kirim email ke