Berikut ini ada sebuah function sederhana untuk membuat nomor Surat Jalan secara otomatis.
Asumsi:
Table bernama: tbl_SuratJalan
Field nomor bernama: NoSuratJalan, type: Text, Size: 10 chars.
Nomor Surat Jalan terdiri dari 4 character pertama berisi prefiks, mungkin untuk kode lokasi, kode
department, atau semacamnya. Nomor urut (sekuensial) panjangnya 6 chars.
Function NoBaru()
'Originally created by Haer Talib for RumahAccess.com
Prefiks = "AAbb"
NoBaru = Prefiks & "000000"
tSQL = "SELECT Max(NoSuratJalan) AS LastNo FROM [tbl_SuratJalan] " & _
"WHERE NoSuratJalan > '" & Prefiks & "000000' And NoSuratJalan <= '" & Prefiks
& "999999'"
Dim rs1 As Object
Set rs1 = CurrentDb.OpenRecordset(tSQL, dbOpenDynaset, dbSeeChanges)
If Not rs1.EOF Then
LastNo = Val(Right(Nz(rs1!LastNo, "0"), 6))
Else
LastNo = 0
End If
rs1.Close
Set rs1 = Nothing
NoBaru = Prefiks & Format(LastNo + 1, "000000")
End Function
Semoga bermanfaat.
Seringkali kita mendapat pertanyaan dari bos ataupun client, mengenai hal2 tentang manipulasi tanggal.
Berikut dibawah ini saya mencoba membuat fungsi2 tanggal melalu sql :
a. kita wajib mendefinisikan table holiday (tblDateHoliday ), yang berisi field2 sbb
Set @vDayWork = 0
Set @vDayCount= 0
Set @hitung= 0
Set @NewDateDay = @pDate
-- 6=hari sabtu
if DATEPART(dw, @NewDateDay)-1 = 6
Begin
Goto CSDLoop
End
-- 0=hari Minggu
If DATEPART(dw, @NewDateDay)-1 = 0
Begin
Goto CSDLoop
End
Select @hitung=Count(Holiday)
From NamaDatabase.dbo.tblDateHoliday
where (holiday=@NewDateDay and CountryCode=@Country )
If @hitung <> 0
Goto CSDLoop
else
Select @vDayCount = @vDayCount+1
CSDLoop:
continue
End
return (@NewDateDay)
End
kenapa muncul tanggal 14 ? karena dalam tabel holiday sudah saya definisikan bawah tanggal 10 dan 11
Jan 2008 adalah hari libur serta tanggal 12 dan 13 jan 2008 adalah hari sabtu dan minggu yang oleh
function fnDateHoliday telah di definisikan kalo hari sabtu minggu tidak di hitung.
@pdate datetime,
@DateAddDays integer,
@Country varchar(3),
@SignPlusMinus char(1)
-- WITH ENCRYPTION
AS
Select NamaDatabase.dbo.fnDateHoliday
(@pdate,@DateAddDays,@Country,@SignPlusMinus ) as GetCurDate
return
Function FnHoliday()
Dim rst As New ADODB.Recordset
Set rst = Nothing
rst.CursorLocation = adUseServer
rst.Open "dbo.spGetHoliday '9-Jan-2008','" & 3 & "','IDR','-' ", CurrentProject.Connection,
adOpenKeyset, adLockOptimistic
FnHoliday = rst!newDate
Set rst = Nothing
End Sub
terakhir buat sebuah form, yang berisi textbox dan command button, dalam event on click command
button di kasih perintah sebagai berikut :
txtDate=fnHoliday
silahkan bila anda ingin melakukan perubahan agar semakin baik dan sesuai dgn kebutuhan anda
Sebuah function dibuat oleh Kerry Westphal, seorang program manager yang bekerja pada team Access,
berfungsi untuk menghasilkan penyebutan tanggal dan waktu yang lebih manusiawi ketimbang hanya
angka-angka tanggal dan jam. Function tersebut bernama ElapsedDays().
Aslinya terdapat di sini.
Dengan menggunakan function ini, anda bisa "menyebut keterangan" sebuah tanggal atau waktu
"dibandingkan" dengan tanggal dan waktu yang ditentukan. Misalnya terhadap waktu pertemuan, anda
bisa menyebut bahwa saat ini (terhadap waktu pertemuan itu) "Tinggal 15 menit lagi" atau "Sudah 1 jam
yang lalu".
Cukup mengasyikan, sehingga saya merasa perlu mengadaptasikannya ke dalam bahasa Indonesia, dan
mengubah sedikit prosedur sehingga menjadi lebih fleksibel.
Anda bisa langsung copy paste function berikut ini. Copy semua saja ke dalam sebuah module standard.
Semoga bermanfaat.
Function ElapsedDays( _
Optional DateTimeStart As Date, _
Optional DateTimeEnd As Date _
) As String
'*************************************************************
' Function ElapsedDays(dateTimeStart As Date) As String
' Returns the time elapsed from today in a friendly string like,
' "A day ago"
'
' Originally created by: Kerry Westphal, a program manager who works on the Access team
' Adapted and refine by: Haer Talib, Office Access MVP from Indonesia
'*************************************************************
Dim leapYearNow
Dim leapYearBefore
If WhenLeapYear() = 1 Then
leapYearNow = 366
leapYearBefore = 365
Else:
If WhenLeapYear() = 2 Then
leapYearNow = 365
leapYearBefore = 366
Else
leapYearNow = 365
leapYearBefore = 365
End If
End If
Function IsLeapYear()
Dim leap As Variant
leap = DatePart("yyyy", DateTimeDue)
If (leap Mod 4 = 0) And ((leap Mod 100 <> 0) Or (leap Mod 400 = 0)) Then IsLeapYear = 29 Else
IsLeapYear = 28
End Function
Function MonthTime() _
As Variant
Function ElapsedTimeString( _
Optional DateTimeStart As Date _
) As String
'*************************************************************
' Returns the time elapsed between a starting Date/Time and
' an ending Date/Time formatted as a string that looks like
' this:
' "20 hours, 30 minutes".
'*************************************************************
End Function