Wednesday, March 21, 2012

Cara Membaca/Import File Text Hasil WinAudit ke Dalam Tabel Database Menggunakan ADO di Microsoft Visual Basic 6.0

 

Kalau anda bekerja menjadi tenaga IT di sebuah perusahaan yang mengutamakan penggunaan software yang legal, pasti anda akan kenal dengan software gratisan WinAudit. WinAudit adalah software sederhana yang digunakan untuk mendata informasi sebuah komputer termasuk software yang terinstall di komputer tersebut. Biasanya perusahaan yang beritikad baik terhadap HKI akan ikut Piagam HKI yang diselenggarakan oleh BSA bekerjasama dengan Kepolisian Republik Indonesia.


Informasi lengkap tentang cara pendaftaran Piagam HKI bisa diakses melalui situs resminya http://piagam-hki.org/. Sedangkan informasi tentang BSA serta merek software yang tergabung dalam BSA bisa dilihat di situs resminya http://www.bsa.org/country.aspx?sc_lang=id-ID (bahasa Indonesia).


BSA akan mengirimkan auditor untuk mengaudit semua komputer yang ada di perusahaan. Jika perusahaan tersebut bisa comply atau bisa membuktikan bahwa software yang digunakan legal dengan bukti-bukti lisensi, maka atas persetujuan piagam HKI, perusahaan tersebut akan diberikan reward berupa piagam HKI.


Hubungannya dengan hal tersebut, auditor yang dikirim untuk mengaudit komputer kadang-kadang menggunakan software WinAudit. Agar memudahkan kita dan auditor, sebaiknya kita harus melakukan internal audit dulu dan mempersiapkan dokumen lisensinya untuk diberikan kepada auditor nanti. Software gratisan yang bisa digunakan adalah winaudit.


Hasil pendataan winaudit bisa disimpan dengan berbagai macam tipe file termasuk file text (.txt). Satu komputer akan menghasilkan satu file hasil winaudit. Jika jumlah komputer yang diaudit cukup banyak, tentunya kita akan kesulitan membaca satu-satu file hasil winaudit tersebut dan menghitung jumlah softwarenya secara manual. Hal itu juga yang menjadi permasalahan saya waktu itu.


Untuk mempermudah penghitungan software hasil winaudit tersebut, akhirnya saya mencoba untuk membuat program kecil-kecilan di Microsoft Visual Basic 6.0 untuk membaca semua file hasil winaudit dan meng-importnya menjadi satu dalam file database agar lebih mudah untuk dioproses.


Berikut akan saya paparkan langkah-langkah yang saya pikirkan waktu membuat program tersebut.


Bismillahirrohmanirrohiim...!


Langkah Pertama: Mempersiapkan Database

Tentunya kita harus mempersiapkan databasenya terlebih dahulu sebagai tempat penyimpanan data hasil import dari file winaudit. Untuk menentukan field apa saja yang digunakan, bisa kita sesuaikan dengan kebutuhan dan mengacu pada file hasil winaudit. Untuk mempermudah, saya buat dan buka databasenya menggunakan script dalam sebuah module. Berikut adalah scriptnya:


'================

Option Explicit

'untuk buat database

Public XDBAuditReport As New ADOX.Catalog

Public XTblInstalledSoftware As New ADOX.Table

Public XTblInstalledPrograms As New ADOX.Table

Public XTblOperatingSystem As New ADOX.Table.


'untuk buka database

Public CnDBAuditReport As New ADODB.Connection

Public RsInstalledSoftware As New ADODB.Recordset

Public RsInstalledPrograms As New ADODB.Recordset

Public RsOperatingSystem As New ADODB.Recordset


Sub BuatDB(Alamatnya As String)

XDBAuditReport.Create "Provider=Microsoft.jet.oledb.4.0;data source=" & Alamatnya

XDBAuditReport.ActiveConnection = "Provider=Microsoft.jet.oledb.4.0;data source=" & Alamatnya

'=============================

'tabel tblInstalledSoftware

XTblInstalledSoftware.Name = "TblInstalledSoftware"

XTblInstalledSoftware.Columns.Append "No", adInteger 'buat auto number

XTblInstalledSoftware.Columns.Append "Komputer", adVarWChar, 30

XTblInstalledSoftware.Columns.Append "AuditDate", adVarWChar, 30

XTblInstalledSoftware.Columns.Append "SWName", adVarWChar, 100

XTblInstalledSoftware.Columns.Append "Version", adVarWChar, 16

XTblInstalledSoftware.Columns.Append "Installed", adVarWChar, 3

With XTblInstalledSoftware.Columns!No

Set .ParentCatalog = XDBAuditReport

.Properties("Autoincrement") = True 'AutoNumber.

End With


XDBAuditReport.Tables.Append XTblInstalledSoftware

'=============================

'=============================

'tabel tblInstalledPrograms

XTblInstalledPrograms.Name = "TblInstalledPrograms"

XTblInstalledPrograms.Columns.Append "No", adInteger 'buat auto number

XTblInstalledPrograms.Columns.Append "Komputer", adVarWChar, 30

XTblInstalledPrograms.Columns.Append "AuditDate", adVarWChar, 30

XTblInstalledPrograms.Columns.Append "SWName", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "Vendor", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "Version", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "ProductLanguage", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "InstallDate", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "InstallLocation", adVarWChar, 200

XTblInstalledPrograms.Columns.Append "InstallSource", adVarWChar, 200

XTblInstalledPrograms.Columns.Append "InstallState", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "AssignmentType", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "PackageCode", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "PackageName", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "LocalPackage", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "ProductID", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "RegisteredCompany", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "RegisteredOwner", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "TimesUsed", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "LastUsed", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "ExecutablePath", adVarWChar, 200

XTblInstalledPrograms.Columns.Append "ExecutableVersion", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "ExecutableDescription", adVarWChar, 100

XTblInstalledPrograms.Columns.Append "SoftwareID", adVarWChar, 100

With XTblInstalledPrograms.Columns!No

Set .ParentCatalog = XDBAuditReport

.Properties("Autoincrement") = True 'AutoNumber.

End With


XDBAuditReport.Tables.Append XTblInstalledPrograms

'=============================

'=============================

'tabel tblOperatingSystem

XTblOperatingSystem.Name = "tblOperatingSystem"

XTblOperatingSystem.Columns.Append "No", adInteger 'buat auto number

XTblOperatingSystem.Columns.Append "Komputer", adVarWChar, 30

XTblOperatingSystem.Columns.Append "AuditDate", adVarWChar, 30

XTblOperatingSystem.Columns.Append "OSName", adVarWChar, 100

XTblOperatingSystem.Columns.Append "Edition", adVarWChar, 100

XTblOperatingSystem.Columns.Append "InstallDate", adVarWChar, 100

XTblOperatingSystem.Columns.Append "RegisteredOwner", adVarWChar, 100

XTblOperatingSystem.Columns.Append "RegisteredOrganization", adVarWChar, 100

XTblOperatingSystem.Columns.Append "ProductID", adVarWChar, 100

XTblOperatingSystem.Columns.Append "MajorVersionNumber", adVarWChar, 100

XTblOperatingSystem.Columns.Append "MinorVersionNumber", adVarWChar, 100

XTblOperatingSystem.Columns.Append "BuildNumber", adVarWChar, 100

XTblOperatingSystem.Columns.Append "ServicePack", adVarWChar, 100

XTblOperatingSystem.Columns.Append "ServicePackVersion", adVarWChar, 100

XTblOperatingSystem.Columns.Append "PlusVersionNumber", adVarWChar, 100

XTblOperatingSystem.Columns.Append "DirectXVersion", adVarWChar, 100

XTblOperatingSystem.Columns.Append "WindowsDirectory", adVarWChar, 100

XTblOperatingSystem.Columns.Append "SystemDirectory", adVarWChar, 100

XTblOperatingSystem.Columns.Append "TemporaryDirectory", adVarWChar, 100

With XTblOperatingSystem.Columns!No

Set .ParentCatalog = XDBAuditReport

.Properties("Autoincrement") = True 'AutoNumber.

End With


XDBAuditReport.Tables.Append XTblOperatingSystem

'=============================

Set XDBAuditReport = Nothing

End Sub


Sub BukaDB(Alamatnya As String)

Dim strKonek As String

strKonek = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Alamatnya & ";Persist Security Info=False"

If CnDBAuditReport.State = 0 Then

CnDBAuditReport.CursorLocation = adUseClient

CnDBAuditReport.Open strKonek

End If

RsInstalledSoftware.Open "tblInstalledSoftware", CnDBAuditReport, adOpenKeyset, adLockOptimistic

RsInstalledPrograms.Open "tblInstalledPrograms", CnDBAuditReport, adOpenKeyset, adLockOptimistic

RsOperatingSystem.Open "tblOperatingSystem", CnDBAuditReport, adOpenKeyset, adLockOptimistic

End Sub

'===============================




Langkah Kedua: Mengenali Pola Penanda File

Kok mengenali pola? Yup....mengenali pola file text hasil winaudit tersebut. Coba perhatikan beberapa baris awal file hasil winaudit berikut ini:


-------------

| ________ |

-------------





Computer Audit :: 5/20/2010 10:42:41 AM



Installed Software




Active Setup


-----------------------------------------------------------------------------

| Name | Version | Installed |

-----------------------------------------------------------------------------

| .NET Framework | 2,0,50727,0 | |

| Active Directory Service Interface | 5,0,00,0 | Yes |

...dst


Kalau kita perhatikan pada baris pertama sampai baris ketiga, terdapat beberapa karakter garis (- | _ ). Kalau dilihat di semua file hasil text winaudit pasti terdapat karakter tersebut. Karakter inilah yang saya gunakan untuk mengenali apakah file text tersebut adalah file hasil Winaudit.


Sehingga saya merasa perlu membuat function untuk mengecek (memeriksa) apakah file yang akan diproses adalah file hasil Winaudit. Berikut script seadanya:


'===================

Function CekFileAudit(filenya As String) As Boolean

Dim Textnya As String

Dim Hasilnya As String

Dim JmlGrsMin As Integer

Dim I As Integer

I = 1

Open filenya For Input As I

While Not EOF(I)

Line Input #I, Textnya

If I = 1 Then

If Trim(Left(Textnya, 15)) <> "-------------" Then CekFileAudit = False: Close I: Exit Function

ElseIf I = 2 Then

If Trim(Left(Textnya, 15)) <> "| ________ |" Then CekFileAudit = False: Close I: Exit Function

ElseIf I = 3 Then

If Trim(Left(Textnya, 15)) <> "-------------" Then CekFileAudit = False: Close I: Exit Function

End If

CekFileAudit = True

Close I

Exit Function

Wend

Close I

End Function

'===========================================================


Script tersebut akan memeriksa pada baris pertama sampai baris ketiga, apakah ada karakter yang menjadi ciri khas file hasil winaudit. Jika ada, maka function tersebut akan bernilai TRUE tetapi jika tidak ada, maka akan bernilai FALSE.


Langkah Ketiga: Mengenali Pola Untuk Pembacaan Data


Dengan mendeteksi karakter-karakter yang digunakan dalam file hasil winaudit tersebut (seperti pengenalan pola pada penanda file), berikut adalah script yang saya gunakan untuk membaca datanya:


'======================

'untuk mengambil data Installed Software

Sub BacaInsSoft(filenya As String, NamaKomp As String)

Dim Textnya As String

Dim Hasilnya As String

Dim JmlGrsMin As Integer

Dim TglAudit As String

Dim Mulai As Boolean

JmlGrsMin = 0

Dim I As Integer

I = 1

Open filenya For Input As I

While Not EOF(I)

langsung:

Line Input #I, Textnya

If Trim(Left(Textnya, 15)) = "Computer Audit" Then

TglAudit = Trim(Mid(Textnya, 19, Len(Textnya) - 17))

End If

If Trim(Textnya) = "Installed Software" Then

Mulai = True

GoTo langsung

End If

If Mulai = True Then

'pengecekan garis pembatas

If Trim(Left(Textnya, 15)) = "---------------" Then

JmlGrsMin = JmlGrsMin + 1

ElseIf JmlGrsMin = 3 Then

'sudah sampai batas akhir datanya

Close I

Exit Sub

ElseIf JmlGrsMin = 2 Then

'mulai pembacaan data disimpan ke database

Dim flName As String

Dim flVersion As String

Dim flInstalled As String

Dim Panjang As Integer

Panjang = Len(Textnya)

If Panjang = 0 Then GoTo langsung

flName = Mid(Textnya, 2, Panjang - 33)

flVersion = Mid(Textnya, Len(flName) + 4, 16)

flInstalled = Mid(Textnya, Len(flName) + Len(flVersion) + 5, 12)

'simpan ke database

'diasumsikan sudah ada pengecekan nama komputer yang sama

With RsInstalledSoftware

.AddNew

'field(0) auto increment

.Fields(1).Value = IIf(IsNull(Trim(NamaKomp)) = True, "", Trim(NamaKomp))

.Fields(2).Value = IIf(IsNull(Trim(TglAudit)) = True, "", Trim(TglAudit))

.Fields(3).Value = IIf(IsNull(Trim(flName)) = True, "", Trim(flName))

.Fields(4).Value = IIf(IsNull(Trim(flVersion)) = True, "", Trim(flVersion))

.Fields(5).Value = IIf(IsNull(Trim(flInstalled)) = True, "", Trim(flInstalled))

.Update

End With

'Hasilnya = Hasilnya & flName & "#" & flVersion & "#" & flInstalled & vbCrLf

End If

End If

Wend

Close I


End Sub

'==================


'untuk mengambil data Installed Programs

Sub BacaInsProgs(filenya As String, NamaKomp As String)

Dim Textnya As String

Dim Hasilnya As String

Dim JmlGrsMin As Integer

Dim TglAudit As String

Dim Mulai As Boolean

Dim Kolom As Integer

Dim flName As String

Dim flVendor As String

Dim flVersion As String

Dim flProductLanguage As String

Dim flInstallDate As String

Dim flInstallLocation As String

Dim flInstallSource As String

Dim flInstallState As String

Dim flAssignmentType As String

Dim flPackageCode As String

Dim flPackageName As String

Dim flLocalPackage As String

Dim flProductID As String

Dim flRegisteredCompany As String

Dim flRegisteredOwner As String

Dim flTimesUsed As String

Dim flLastUsed As String

Dim flExecutablePath As String

Dim flExecutableVersion As String

Dim flExecutableDescription As String

Dim flSoftwareID As String

JmlGrsMin = 0

Kolom = 1

Dim I As Integer

I = 1

Open filenya For Input As I

While Not EOF(I)

langsung:

Line Input #I, Textnya

If Trim(Left(Textnya, 15)) = "Computer Audit" Then

TglAudit = Trim(Mid(Textnya, 19, Len(Textnya) - 17))

End If

If Trim(Textnya) = "Installed Programs" Then

Mulai = True

GoTo langsung

End If

If Trim(Textnya) = "Software Updates" Then

Mulai = False

Close I

Exit Sub

End If

'sejak tanda pertama

If Mulai = True Then

'pengecekan garis pembatas

If Trim(Left(Textnya, 15)) = "---------------" Then

JmlGrsMin = JmlGrsMin + 1

ElseIf JmlGrsMin = 4 Then

'sudah sampai batas akhir datanya

'simpan ke database

'diasumsikan sudah ada pengecekan nama komputer yang sama

With RsInstalledPrograms

.AddNew

'field(0) auto increment

.Fields(1).Value = IIf(IsNull(Trim(NamaKomp)) = True, "", Trim(NamaKomp))

.Fields(2).Value = IIf(IsNull(Trim(TglAudit)) = True, "", Trim(TglAudit))

.Fields(3).Value = IIf(IsNull(Trim(flName)) = True, "", Trim(flName))

.Fields(4).Value = IIf(IsNull(Trim(flVendor)) = True, "", Trim(flVendor))

.Fields(5).Value = IIf(IsNull(Trim(flVersion)) = True, "", Trim(flVersion))

.Fields(6).Value = IIf(IsNull(Trim(flProductLanguage)) = True, "", Trim(flProductLanguage))

.Fields(7).Value = IIf(IsNull(Trim(flInstallDate)) = True, "", Trim(flInstallDate))

.Fields(8).Value = IIf(IsNull(Trim(flInstallLocation)) = True, "", Trim(flInstallLocation))

.Fields(9).Value = IIf(IsNull(Trim(flInstallSource)) = True, "", Trim(flInstallSource))

.Fields(10).Value = IIf(IsNull(Trim(flInstallState)) = True, "", Trim(flInstallState))

.Fields(11).Value = IIf(IsNull(Trim(flAssignmentType)) = True, "", Trim(flAssignmentType))

.Fields(12).Value = IIf(IsNull(Trim(flPackageCode)) = True, "", Trim(flPackageCode))

.Fields(13).Value = IIf(IsNull(Trim(flPackageName)) = True, "", Trim(flPackageName))

.Fields(14).Value = IIf(IsNull(Trim(flLocalPackage)) = True, "", Trim(flLocalPackage))

.Fields(15).Value = IIf(IsNull(Trim(flProductID)) = True, "", Trim(flProductID))

.Fields(16).Value = IIf(IsNull(Trim(flRegisteredCompany)) = True, "", Trim(flRegisteredCompany))

.Fields(17).Value = IIf(IsNull(Trim(flRegisteredOwner)) = True, "", Trim(flRegisteredOwner))

.Fields(18).Value = IIf(IsNull(Trim(flTimesUsed)) = True, "", Trim(flTimesUsed))

.Fields(19).Value = IIf(IsNull(Trim(flLastUsed)) = True, "", Trim(flLastUsed))

.Fields(20).Value = IIf(IsNull(Trim(flExecutablePath)) = True, "", Trim(flExecutablePath))

.Fields(21).Value = IIf(IsNull(Trim(flExecutableVersion)) = True, "", Trim(flExecutableVersion))

.Fields(22).Value = IIf(IsNull(Trim(flExecutableDescription)) = True, "", Trim(flExecutableDescription))

.Fields(23).Value = IIf(IsNull(Trim(flSoftwareID)) = True, "", Trim(flSoftwareID))

.Update

End With

'reset jmlgrsmin

JmlGrsMin = 0

ElseIf JmlGrsMin = 2 Then

'mulai pembacaan data

Dim Panjang As Integer

Panjang = Len(Textnya)

If Panjang = 0 Then GoTo langsung

If Kolom = 1 Then

flName = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flName & "#"

ElseIf Kolom = 2 Then

flVendor = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flVendor & "#"

ElseIf Kolom = 3 Then

flVersion = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flVersion & "#"

ElseIf Kolom = 4 Then

flProductLanguage = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flProductLanguage & "#"

ElseIf Kolom = 5 Then

flInstallDate = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallDate & "#"

ElseIf Kolom = 6 Then

flInstallLocation = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallLocation & "#"

ElseIf Kolom = 7 Then

flInstallSource = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallSource & "#"

ElseIf Kolom = 8 Then

flInstallState = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallState & "#"

ElseIf Kolom = 9 Then

flAssignmentType = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flAssignmentType & "#"

ElseIf Kolom = 10 Then

flPackageCode = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flPackageCode & "#"

ElseIf Kolom = 11 Then

flPackageName = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flPackageName & "#"

ElseIf Kolom = 12 Then

flLocalPackage = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flLocalPackage & "#"

ElseIf Kolom = 13 Then

flProductID = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flProductID & "#"

ElseIf Kolom = 14 Then

flRegisteredCompany = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flRegisteredCompany & "#"

ElseIf Kolom = 15 Then

flRegisteredOwner = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flRegisteredOwner & "#"

ElseIf Kolom = 16 Then

flTimesUsed = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flTimesUsed & "#"

ElseIf Kolom = 17 Then

flLastUsed = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flLastUsed & "#"

ElseIf Kolom = 18 Then

flExecutablePath = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flExecutablePath & "#"

ElseIf Kolom = 19 Then

flExecutableVersion = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flExecutableVersion & "#"

ElseIf Kolom = 20 Then

flExecutableDescription = Trim(Mid(Textnya, 28, Panjang - 28))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flExecutableDescription & "#"

ElseIf Kolom = 21 Then

flSoftwareID = Trim(Mid(Textnya, 28, Panjang - 28))

'selesai pembacaan data

Kolom = 1

'Mulai = False

'Hasilnya = Hasilnya & flSoftwareID & vbCrLf

End If

End If

End If

Wend

Close I

Exit Sub

End Sub


'untuk mengambil data Operating System

Sub BacaOprSys(filenya As String, NamaKomp As String)

Dim Textnya As String

Dim Hasilnya As String

Dim JmlGrsMin As Integer

Dim TglAudit As String

Dim Mulai As Boolean

Dim Kolom As Integer

'======================

Dim flName As String '1

Dim flEdition As String '2

Dim flInstallDate As String '3

Dim flRegisteredOwner As String '4

Dim flRegisteredOrganization As String '5

Dim flProductID As String '6

Dim flMajorVersionNumber As String '7

Dim flMinorVersionNumber As String '8

Dim flBuildNumber As String '9

Dim flServicePack As String '10

Dim flServicePackVersion As String '11

Dim flPlusVersionNumber As String '12

Dim flDirectXVersion As String '13

Dim flWindowsDirectory As String '14

Dim flSystemDirectory As String '15

Dim flTemporaryDirectory As String '16

JmlGrsMin = 0

Kolom = 1

Dim I As Integer

I = 1

Open filenya For Input As I

While Not EOF(I)

langsung:

Line Input #I, Textnya

If Trim(Left(Textnya, 15)) = "Computer Audit" Then

TglAudit = Trim(Mid(Textnya, 19, Len(Textnya) - 17))

End If

If Trim(Textnya) = "Operating System" Then

Mulai = True

GoTo langsung

End If

'sejak tanda pertama

If Mulai = True Then

'pengecekan garis pembatas

If Trim(Left(Textnya, 15)) = "---------------" Then

JmlGrsMin = JmlGrsMin + 1

ElseIf JmlGrsMin = 3 Then

'sudah sampai batas akhir datanya

'simpan ke database

'diasumsikan sudah ada pengecekan nama komputer yang sama

With RsOperatingSystem

.AddNew

'field(0) auto increment

.Fields(1).Value = IIf(IsNull(Trim(NamaKomp)) = True, "", Trim(NamaKomp))

.Fields(2).Value = IIf(IsNull(Trim(TglAudit)) = True, "", Trim(TglAudit))

'===

.Fields(3).Value = IIf(IsNull(Trim(flName)) = True, "", Trim(flName))

.Fields(4).Value = IIf(IsNull(Trim(flEdition)) = True, "", Trim(flEdition))

.Fields(5).Value = IIf(IsNull(Trim(flInstallDate)) = True, "", Trim(flInstallDate))

.Fields(6).Value = IIf(IsNull(Trim(flRegisteredOwner)) = True, "", Trim(flRegisteredOwner))

.Fields(7).Value = IIf(IsNull(Trim(flRegisteredOrganization)) = True, "", Trim(flRegisteredOrganization))

.Fields(8).Value = IIf(IsNull(Trim(flProductID)) = True, "", Trim(flProductID))

.Fields(9).Value = IIf(IsNull(Trim(flMajorVersionNumber)) = True, "", Trim(flMajorVersionNumber))

.Fields(10).Value = IIf(IsNull(Trim(flMinorVersionNumber)) = True, "", Trim(flMinorVersionNumber))

.Fields(11).Value = IIf(IsNull(Trim(flBuildNumber)) = True, "", Trim(flBuildNumber))

.Fields(12).Value = IIf(IsNull(Trim(flServicePack)) = True, "", Trim(flServicePack))

.Fields(13).Value = IIf(IsNull(Trim(flServicePackVersion)) = True, "", Trim(flServicePackVersion))

.Fields(14).Value = IIf(IsNull(Trim(flPlusVersionNumber)) = True, "", Trim(flPlusVersionNumber))

.Fields(15).Value = IIf(IsNull(Trim(flDirectXVersion)) = True, "", Trim(flDirectXVersion))

.Fields(16).Value = IIf(IsNull(Trim(flWindowsDirectory)) = True, "", Trim(flWindowsDhrectory))

.Fields(17).Value = IIf(IsNull(Trim(flSystemDirectory)) = True, "", Trim(flSystemDirectory))

.Fields(18).Value = IIf(IsNull(Trim(flTemporaryDirectory)) = True, "", Trim(flTemporaryDirectory))

.Update

End With

'tutup perulangan

'selesai

Close I

Exit Sub

ElseIf JmlGrsMin = 2 Then

'mulai pembacaan data

Dim Panjang As Integer

Panjang = Len(Textnya)

If Panjang = 0 Then GoTo langsung

If Kolom = 1 Then

flName = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flName & "#"

ElseIf Kolom = 2 Then

flEdition = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flVendor & "#"

ElseIf Kolom = 3 Then

flInstallDate = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flVersion & "#"

ElseIf Kolom = 4 Then

flRegisteredOwner = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flProductLanguage & "#"

ElseIf Kolom = 5 Then

flRegisteredOrganization = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallDate & "#"

ElseIf Kolom = 6 Then

flProductID = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallLocation & "#"

ElseIf Kolom = 7 Then

flMajorVersionNumber = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallSource & "#"

ElseIf Kolom = 8 Then

flMinorVersionNumber = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flInstallState & "#"

ElseIf Kolom = 9 Then

flBuildNumber = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flAssignmentType & "#"

ElseIf Kolom = 10 Then

flServicePack = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flPackageCode & "#"

ElseIf Kolom = 11 Then

flServicePackVersion = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flPackageName & "#"

ElseIf Kolom = 12 Then

flPlusVersionNumber = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flLocalPackage & "#"

ElseIf Kolom = 13 Then

flDirectXVersion = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flProductID & "#"

ElseIf Kolom = 14 Then

flWindowsDirectory = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flRegisteredCompany & "#"

ElseIf Kolom = 15 Then

flSystemDirectory = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'Hasilnya = Hasilnya & flRegisteredOwner & "#"

ElseIf Kolom = 16 Then

flTemporaryDirectory = Trim(Mid(Textnya, 29, Panjang - 29))

Kolom = Kolom + 1

'selesai

Kolom = 1

'Mulai = False

'Hasilnya = Hasilnya & flSoftwareID & vbCrLf

End If

End If

End If

Wend

Close I

Exit Sub

End Sub

'=====================


Kalau kita perhatikan dengan seksama, script yang saya buat tersebut menggunakan pengenalan pola dengan cara sederhana yaitu memeriksa satu-persatu tiap baris dari file hasil winaudit (karena keterbatasan kemampuan saya tentunya).


Langkah Berikutnya: Lengkapi Programnya.


Lengkapi program? maksudnya program di atas tadi cuma intinya saja...untuk kelengkapan mulai dari komponen/reference yang digunakan dan script-script yang lain bisa ditambahkan sendiri sesuai dengan algoritma dan logika pemrograman masing-masing.


Semoga bermanfaat. Insya Alloh...! Amiin...!

(Akr)