12 - source code

70
Source code A. CODING PADA MOD_FORM.BAS Option Explicit Public Function IsiComboBox(cbo As ComboBox, strField As String, strTabel As String, Optional sWhere As String) cbo.Clear BukaTabel "SELECT " & strField & " AS FLD FROM " & strTabel & sWhere While Not Tbl.EOF cbo.AddItem Tbl!FLD Tbl.MoveNext Wend End Function Public Function IsiAgama(cbo As ComboBox) cbo.Clear cbo.AddItem "Islam" cbo.AddItem "Katolik" cbo.AddItem "Protestan" cbo.AddItem "Hindu" cbo.AddItem "Budha" End Function Public Function IsiKelamin(cbo As ComboBox) cbo.Clear cbo.AddItem "Laki-laki" cbo.AddItem "Perempuan" End Function Public Sub SelectAll(txt As TextBox) txt.SelStart = 0 txt.SelLength = Len(txt.Text) End Sub Public Sub OnlyNumber(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 58 Then If KeyAscii <> vbKeyBack Then KeyAscii = 0 End If End If End Sub Public Sub ClearForm(frm As Form) Dim ctrl As Control For Each ctrl In frm If TypeOf ctrl Is TextBox Then ctrl.Text = ""

Upload: -

Post on 02-Jan-2016

61 views

Category:

Documents


3 download

TRANSCRIPT

Source code

A. CODING PADA MOD_FORM.BAS

Option Explicit

Public Function IsiComboBox(cbo As ComboBox, strField As String, strTabel As String, Optional sWhere As String) cbo.Clear BukaTabel "SELECT " & strField & " AS FLD FROM " & strTabel & sWhere While Not Tbl.EOF cbo.AddItem Tbl!FLD Tbl.MoveNext WendEnd Function

Public Function IsiAgama(cbo As ComboBox) cbo.Clear cbo.AddItem "Islam" cbo.AddItem "Katolik" cbo.AddItem "Protestan" cbo.AddItem "Hindu" cbo.AddItem "Budha"End Function

Public Function IsiKelamin(cbo As ComboBox) cbo.Clear cbo.AddItem "Laki-laki" cbo.AddItem "Perempuan"End FunctionPublic Sub SelectAll(txt As TextBox) txt.SelStart = 0 txt.SelLength = Len(txt.Text)End Sub

Public Sub OnlyNumber(KeyAscii As Integer) If KeyAscii < 48 Or KeyAscii > 58 Then If KeyAscii <> vbKeyBack Then KeyAscii = 0 End If End IfEnd Sub

Public Sub ClearForm(frm As Form) Dim ctrl As Control For Each ctrl In frm If TypeOf ctrl Is TextBox Then ctrl.Text = "" ElseIf TypeOf ctrl Is ComboBox Then ctrl.ListIndex = -1 End If NextEnd Sub

Public Sub KarakterFalse(KeyAscii As Integer) If KeyAscii = 34 Or KeyAscii = 39 Then KeyAscii = 0 MsgBox "Karakter yang anda masukkan tidak diperbolehkan", vbInformation, ""

End IfEnd Sub

Public Function StringAgama(sIDagama As Integer) As String Dim temp As String Select Case sIDagama Case 1: temp = "Islam" Case 2: temp = "Katolik" Case 3: temp = "Protestan" Case 4: temp = "Hindu" Case 5: temp = "Budha" End Select StringAgama = tempEnd Function

Public Function StringKelamin(strListIndex As Integer) Select Case strListIndex Case 0: StringKelamin = "L" Case 1: StringKelamin = "P" End SelectEnd Function

B. CODING PADA MOD_SMS.BAS

Option Explicit

Public Type SMSOUT sms_Status As String sms_Context As StringEnd Type

Public Enum SMS_LISTSTAT LS_UNREAD = 0 LS_READ = 1 LS_STORED_UNREAD = 2 LS_STORED_SENT = 3 LS_ALLMESSAGE = 4 LS_TEMPLATE = 16End Enum

Public Enum SMSType SMS_RECEIVED = 0 SMS_STATUS_REPORT = 2 SMS_SUBMIT = 1 SMS_NONE = -1 EMS_RECEIVED = 64 EMS_SUBMIT = 65End Enum

Private Enum EnumStatus Success = 0 NotSend = 96 NoResponseFromSME = 98End Enum

Public Type BaseInfo

SourceNumber As String DestinationNumber As String ReceivedDate As String ReceivedTime As String Text As String Tipe As SMSType StatusFromReport As EnumStatus DestinationReceivedDate As StringEnd Type

Public Enum ENUM_TP_SRI Request_SMS_Report = 32 No_SMS_Report = 0End Enum

Public Enum ENUM_TP_DCS DefaultAlphabet = 0 UCS2 = 8End Enum

Public Enum ENUM_TP_VALID_PERIOD OneHour = 11 ThreeHours = 29 SixHours = 71 TwelveHours = 143 OneDay = 167 OneWeek = 196 Maximum = 255End Enum

Type InfoElem Identifier As Byte Length As Byte Data As StringEnd Type

Enum ConnectMode cmCOM_Port = 1 cmInfrared = 2End EnumEnum UseProtocol ATCommand = 1 NokiaFBus = 2 NokiaMBus = 3End Enum

Type SmsServer smsProviderName As String smsSubProvider As String smsSmsCenter As String smsTypeDevice As ConnectMode smsProtocol As UseProtocol smsPatameter As String smsPinCode As String smsAutoConnect As Boolean smsDescription As String smsState As String smsDeviceName As String curProvider As String curDevice As IntegerEnd Type

Public SmsGateWay() As SmsServerPublic Const Footer = ""Public Const MaxMsg = 160Public Const CountryID = "62"

Function GetByte(ByRef PDUCode As String) As ByteOn Error Resume Next Dim r As Byte r = Val("&H" & Mid(PDUCode, 1, 2)) PDUCode = Mid(PDUCode, 3) GetByte = rEnd Function

Function GetString(ByRef PDUCode As String, ByVal Length As Integer) As StringOn Error Resume Next Dim r As String r = Mid(PDUCode, 1, Length) PDUCode = Mid(PDUCode, Length + 1) GetString = rEnd Function

Function GetIE(ByVal IECode As String) As InfoElem()On Error Resume Next Dim tmp As String, t As Integer tmp = IECode t = 0 Dim result() As InfoElem Do Until IECode = "" ReDim Preserve result(t) With result(t) .Identifier = GetByte(IECode) .Length = GetByte(IECode) .Data = GetString(IECode, .Length * 2) End With t = t + 1 Loop GetIE = resultEnd Function

Function CharToArray(nstr As String) As String()On Error Resume NextDim I As Integer, Data() As StringReDim Data(Len(nstr) - 1) As String For I = 1 To Len(nstr) Data(I - 1) = Mid(nstr, I, 1) Next I CharToArray = DataEnd Function

Function Swap(ByRef TwoBitStr As String) As StringOn Error Resume Next Swap = StrReverse(TwoBitStr)End Function

Function DecToHex(n, nLen As Integer) As StringOn Error Resume NextDim h As String h = Hex(Val(n)) DecToHex = String(nLen - Len(h), "0") & hEnd Function

Function PadLeft(nstr As String, totalwidth As Integer, nChar As String)

On Error Resume NextDim addLen As Integer addLen = totalwidth - Len(nstr) If addLen > 0 Then PadLeft = String(addLen, nChar) & nstr ElseIf addLen = 0 Then PadLeft = nstr End IfEnd Function

Function CME_ErrorDesc(ErrNo As Integer, Optional PhoneType As String = "nokia")'Select Case UCase(PhoneType)' Case "NOKIA"' Case "ERICSSON"'End SelectOn Error Resume NextSelect Case ErrNo Case 0: CME_ErrorDesc = "Phone failure" Case 1: CME_ErrorDesc = "No connection to phone" Case 2: CME_ErrorDesc = "Phone modem link reserved" Case 3: CME_ErrorDesc = "Operation not permitted" Case 4: CME_ErrorDesc = "Operation not supported" Case 5: CME_ErrorDesc = "PH-SIM card PIN required" Case 10: CME_ErrorDesc = "SIM card not inserted" Case 11: CME_ErrorDesc = "SIM card PIN required" Case 12: CME_ErrorDesc = "SIM card PUK required" Case 13: CME_ErrorDesc = "SIM card failure" Case 14: CME_ErrorDesc = "SIM card busy" Case 15: CME_ErrorDesc = "SIM card wrong" Case 16: CME_ErrorDesc = "Incorrect password" Case 20: CME_ErrorDesc = "Memory full" Case 21: CME_ErrorDesc = "Invalid index" Case 22: CME_ErrorDesc = "Not Found" Case 23: CME_ErrorDesc = "Memory failure" Case 24: CME_ErrorDesc = "Text string too long" Case 25: CME_ErrorDesc = "Invalid character in text string" Case 26: CME_ErrorDesc = "Dial string too long" Case 27: CME_ErrorDesc = "Invalid character in dial string" Case 100: CME_ErrorDesc = "Unknown"End SelectEnd Function Function CMS_ErrorDesc(ErrNo As Integer, Optional PhoneType As String = "nokia")On Error Resume NextSelect Case ErrNo Case 0: CMS_ErrorDesc = "GSM 04.11 Annex E-2 values" Case 127: CMS_ErrorDesc = "" Case 128: CMS_ErrorDesc = "GSM 03.40 Section 9.2.3.22 values" Case 255: CMS_ErrorDesc = "" Case 300: CMS_ErrorDesc = "Mobile phone failure" Case 301: CMS_ErrorDesc = "Short message service of mobile phone reserved" Case 302: CMS_ErrorDesc = "Operation not allowed" Case 303: CMS_ErrorDesc = "Operation not supported" Case 304: CMS_ErrorDesc = "Invalid PDU mode parameter" Case 305: CMS_ErrorDesc = "Invalid text mode parameter" Case 310: CMS_ErrorDesc = "SIM card not inserted" Case 311: CMS_ErrorDesc = "SIM card PIN necessary" Case 312: CMS_ErrorDesc = "SIM card PIN necessary for PH-SIM" Case 313: CMS_ErrorDesc = "SIM card failure" Case 314: CMS_ErrorDesc = "SIM card busy" Case 315: CMS_ErrorDesc = "SIM card wrong" Case 316: CMS_ErrorDesc = "SIM PUK required"

Case 317: CMS_ErrorDesc = "SIM PIN2 required" Case 318: CMS_ErrorDesc = "SIM PUK2 required" Case 320: CMS_ErrorDesc = "Memory failure" Case 321: CMS_ErrorDesc = "Invalid memory index" Case 322: CMS_ErrorDesc = "Memory full" Case 330: CMS_ErrorDesc = "SMSC address unknown" Case 331: CMS_ErrorDesc = "No network service" Case 332: CMS_ErrorDesc = "Network timeout" Case 340: CMS_ErrorDesc = "No +CNMA acknowledgement expected" Case 500: CMS_ErrorDesc = "Unknown error" Case 511: CMS_ErrorDesc = "Range 256...511 reserved" Case 512: CMS_ErrorDesc = "Manufacturer specific"End SelectEnd Function

Function SplitSMSValue(nstr As String, Optional nDelimeter As String = ",") As CollectionOn Error Resume NextDim res As New Collection If Trim(nstr) <> "" Then Dim hIsi, I As Integer hIsi = Split(nstr, ":") If UBound(hIsi) > 0 Then hIsi = Split(hIsi(1), nDelimeter) If UBound(hIsi) > 0 Then For I = 0 To UBound(hIsi) res.Add hIsi(I) Next I End If End If End If Set SplitSMSValue = resEnd Function

Function ValidateNumber(nNomor As String) As StringOn Error Resume NextDim Buff As String If Trim(nNomor) <> "" Then Buff = Replace(nNomor, "+", "", , , vbTextCompare) If Left(Buff, 1) = "0" Then Buff = Mid(Buff, 2) End If If Left(Buff, 2) <> CountryID Then Buff = CountryID & Buff End If Dim I As Integer For I = 1 To Len(Buff) If Mid(Buff, 3, 1) = "0" Then Buff = CountryID & Mid(Buff, 4) End If Next I End If ValidateNumber = BuffEnd Function

C. CODING PADA MODULE1.BAS

Public Declare Function InitCommonControls Lib "COMCTL32.DLL" () As LongPublic DBKoneksi As ADODB.ConnectionPublic Tbl As ADODB.Recordset

Public NoPort As Integer

Public strUserName As StringPublic strPassword As StringPublic strNIPPegawai As StringPublic strNamaPegawai As StringPublic StatusPegawai As Integer

Sub Main() frmMenu.Show frmLogin.Show vbModalEnd Sub

Public Sub BukaDatabase() Dim StrKoneksi As String Set DBKoneksi = New ADODB.Connection

StrKoneksi = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DB_NILAI" If DBKoneksi.State = adStateOpen Then DBKoneksi.Close Set DBKoneksi = New ADODB.Connection DBKoneksi.Open StrKoneksi Else DBKoneksi.Open StrKoneksi End IfEnd Sub

Public Sub BukaTabel(strTabel As String) BukaDatabase Set Tbl = New ADODB.Recordset If Tbl.State = 1 Then Tbl.Close Tbl.Open strTabel, DBKoneksi, adOpenDynamic, adLockOptimisticEnd Sub

Public Function SaveData(tabel As String, ByVal strSQL As String, Optional pesan As Boolean = True) As Boolean Dim sql As String If Tbl.State = 1 Then Tbl.Close Tbl.Open tabel DBKoneksi.Execute strSQL, , adCmdText Tbl.Requery Tbl.Close If pesan = False Then Exit Function MsgBox "Data tersimpan.", vbInformationEnd Function

Function GetNoPort() Dim isi As Integer On Error GoTo pesan

BukaTabel "SELECT port FROM t_port" If Not Tbl.EOF Then isi = Tbl!Port NoPort = isi End If Exit Functionpesan: MsgBox Error$End Function

Public Function GetTahunPelajaran(sJ As Integer) As Integer

Dim temp(2) As Integer Dim namafile As String Dim isi As String Dim I As Integer On Error GoTo pesan namafile = App.Path & "\thpel.prt" Open namafile For Input As #1 I = 0 While Not EOF(1) Input #1, isi temp(I) = isi I = I + 1 Wend Close #1 Select Case sJ Case 0: GetTahunPelajaran = temp(0) Case 1: GetTahunPelajaran = temp(1) End Select Exit Functionpesan: MsgBox Error$End Function

Public Sub SimpanPort(sText As String) SaveData "t_port", "UPDATE t_port set port=" & Val(sText), FalseEnd Sub

Public Sub FlexGrid_To_Excel(TheFlexgrid As MSFlexGrid, _ TheRows As Integer, TheCols As Integer, _ Optional GridStyle As Integer = 1, Optional WorkSheetName _ As String) Dim objXL As New Excel.Application Dim wbXL As New Excel.Workbook Dim wsXL As New Excel.Worksheet Dim intRow As Integer ' counter Dim intCol As Integer ' counter

If Not IsObject(objXL) Then MsgBox "You need Microsoft Excel to use this function", _ vbExclamation, "Print to Excel" Exit Sub End If

On Error Resume Next

' open Excel objXL.Visible = True Set wbXL = objXL.Workbooks.Add Set wsXL = objXL.ActiveSheet ' name the worksheet With wsXL If Not WorkSheetName = "" Then .Name = WorkSheetName End If End With ' fill worksheet For intRow = 1 To TheRows

For intCol = 1 To TheCols With TheFlexgrid wsXL.Cells(intRow, intCol).value = _ .TextMatrix(intRow - 1, intCol - 1) & " " End With Next Next

' format the look For intCol = 1 To TheCols wsXL.Columns(intCol).AutoFit 'wsXL.Columns(intCol).AutoFormat (1) wsXL.Range("a1", Right(wsXL.Columns(TheCols).AddressLocal, _ 1) & TheRows).AutoFormat GridStyle NextEnd Sub

D. CODING PADA TextToPDU.cls

Option Explicit

Dim SC_Number As String 'Note the plus!Dim TP_MTI As Byte '= 1Dim TP_RD As Byte '= 0Dim TP_VPF As Byte '= 16Dim TP_VP As Byte '= 16Dim TP_UDHI As ByteDim TP_SRR As ByteDim TP_MR As IntegerDim TP_DA As StringDim TP_PID As ByteDim TP_DCS As ByteDim vTP_VP As ByteDim TP_UDL As IntegerDim TP_UD As String

Private TotalMessages As Integer

Public Property Get ServiceCenterNumber() As String ServiceCenterNumber = SC_NumberEnd Property

Public Property Let ServiceCenterNumber(value As String)On Error Resume Next If InStr(value, "+") Then SC_Number = "91" Else SC_Number = "81" End If

value = Mid(value, 2) Dim I As Integer If (Len(value) Mod 2) = 1 Then value = value & "F" End If For I = 1 To Len(value) Step 2 SC_Number = SC_Number & Swap(Mid(value, I, 2)) Next SC_Number = ByteToHex((Len(SC_Number) - 2) / 2 + 1) + SC_NumberEnd Property

Public Property Get TP_Status_Report_Request() As ENUM_TP_SRI TP_Status_Report_Request = TP_SRREnd PropertyPublic Property Let TP_Status_Report_Request(value As ENUM_TP_SRI) TP_SRR = valueEnd Property

Public Property Get TP_Message_Reference() As Integer TP_Message_Reference = TP_MREnd PropertyPublic Property Let TP_Message_Reference(value As Integer) TP_MR = valueEnd Property

Public Property Get TP_Destination_Address() As String TP_Destination_Address = TP_DAEnd PropertyPublic Property Let TP_Destination_Address(value As String)On Error Resume Next TP_DA = "" If InStr(1, value, "+") Then TP_DA = TP_DA & "91" Else TP_DA = TP_DA & "81" End If value = Replace(value, "+", "") TP_DA = DecToHex(Len(value), 2) & TP_DA Dim I As Integer If (Len(value) Mod 2) = 1 Then value = value & "F" End If For I = 1 To Len(value) Step 2 TP_DA = TP_DA & Swap(Mid(value, I, 2)) NextEnd Property

Public Property Get TP_Data_Coding_Scheme() As ENUM_TP_DCS TP_Data_Coding_Scheme = TP_DCSEnd PropertyPublic Property Let TP_Data_Coding_Scheme(value As ENUM_TP_DCS) TP_DCS = valueEnd Property

Public Property Get TP_Validity_Period() As ENUM_TP_VALID_PERIOD TP_Validity_Period = TP_VPEnd PropertyPublic Property Let TP_Validity_Period(value As ENUM_TP_VALID_PERIOD) TP_VP = valueEnd Property

Public Property Get TP_User_Data() As String TP_User_Data = TP_UDEnd Property

Public Property Let TP_User_Data(value As String) Select Case TP_DCS Case Is = ENUM_TP_DCS.DefaultAlphabet TP_UDL = Len(value) TP_UD = Encode7Bit(value) Case Is = ENUM_TP_DCS.UCS2

TP_UDL = Len(value) * 2 TP_UD = EncodeUCS2(value) Case Else TP_UD = value End SelectEnd Property

Public Function CheckForEncoding(ByVal Content As String) As ENUM_TP_DCS Dim I As Integer For I = 1 To Len(Content) If Asc(Mid(Content, I, 1)) < 0 Then CheckForEncoding = ENUM_TP_DCS.UCS2 Exit Function End If Next CheckForEncoding = ENUM_TP_DCS.DefaultAlphabetEnd Function

Public Function GetSMSPDUCode(Optional isMsgRec As Boolean = False) As StringOn Error Resume Next Dim PDUCode As String 'Check User Data Length If TP_DCS = ENUM_TP_DCS.DefaultAlphabet Then If Len(TP_UD) > 280 Then MsgBox "User Data is TOO LONG for SMS" End If If TP_DCS = ENUM_TP_DCS.UCS2 Then If Len(TP_UD) > 280 Then MsgBox "User Data is TOO LONG for SMS" End If 'Make PDUCode If isMsgRec Then PDUCode = SC_Number Else PDUCode = "00" End If PDUCode = PDUCode & FirstOctet() PDUCode = PDUCode & DecToHex(TP_MR, 2) PDUCode = PDUCode & TP_DA PDUCode = PDUCode & DecToHex(TP_PID, 2) PDUCode = PDUCode & DecToHex(TP_DCS, 2) PDUCode = PDUCode & DecToHex(TP_VP, 2) PDUCode = PDUCode & DecToHex(TP_UDL, 2) PDUCode = PDUCode & TP_UD GetSMSPDUCode = PDUCodeEnd Function

Private Function ByteToHex(ByVal aByte As Byte) As StringOn Error Resume Next Dim result As String result = DecToHex(aByte, 2) ByteToHex = resultEnd Function

Private Function Encode7Bit(ByVal Content As String) As StringOn Error Resume Next Dim CharArray() As String CharArray = CharToArray(Content) Dim t As String, I As Integer For I = 0 To UBound(CharArray) t = CharTo7Bits(CharArray(I)) & t Next I

'Add "0" If (Len(t) Mod 8) <> 0 Then For I = 1 To 8 - (Len(t) Mod 8) t = "0" & t Next End If 'Split into 8bits Dim result As String For I = Len(t) - 8 To 0 Step -8 result = result & BitsToHex(Mid(t, I + 1, 8)) Next Encode7Bit = resultEnd Function

Private Function BitsToHex(ByVal Bits As String) As StringOn Error Resume Next 'Convert 8Bits to Hex String Dim I, v As Integer For I = 0 To Len(Bits) - 1 v = v + Val(Mid(Bits, I + 1, 1)) * 2 ^ (7 - I) Next Dim result As String result = DecToHex(v, 2) BitsToHex = resultEnd Function

Private Function CharTo7Bits(ByVal c As String) As StringOn Error Resume Next If c = "@" Then CharTo7Bits = "0000000": Exit Function Dim result As String Dim I As Integer For I = 0 To 6 If (Asc(c) And 2 ^ I) > 0 Then result = "1" & result Else result = "0" & result End If Next CharTo7Bits = resultEnd Function

Private Function EncodeUCS2(ByVal Content As String) As StringOn Error Resume Next Dim I, J, v As Integer Dim result, t As String For I = 1 To Len(Content) v = AscW(Mid(Content, I, 4)) t = DecToHex(v, 4) result = result & t Next EncodeUCS2 = resultEnd Function

Private Function FirstOctet() As StringOn Error Resume Next FirstOctet = ByteToHex(TP_MTI + TP_VPF + TP_SRR + TP_UDHI)End Function

Private Sub Class_Initialize()TP_MTI = 1TP_RD = 0TP_VPF = 16TP_VP = 16End Sub

E. CODING PADA PDUToText.cls

Option Explicit

Enum EnumStatus Success = 0 NotSend = 96 NoResponseFromSME = 98End Enum

Dim Status As EnumStatus

Dim SrcAddressLength As ByteDim SrcAddressType As ByteDim SrcAddressValue As String

Dim TP_MR As ByteDim TP_VP As ByteDim TP_SCTS As DateDim TP_DP As DateDim TP_UDHL As ByteDim IE() As InfoElem

Dim DesAddressLength As ByteDim DesAddressType As ByteDim DesAddressValue As String

Dim SCAddressLength As Byte 'Service Center Address lengthDim SCAddressType As Byte 'Service Center Type[See GSM 03.40]Dim SCAddressValue As String 'Service Center nuberDim FirstOctet As Byte 'See GSM 03.40

Dim TP_PID As ByteDim TP_DCS As ByteDim TP_UDL As ByteDim TP_UD As StringDim Text As StringDim Tipe As SMSTypeDim UserData As StringDim strBool As Boolean

Dim GetSmsContent As BaseInfo

'Get date from SCTS formatPrivate Function GetDate(ByRef SCTS As String) As DateOn Error Resume Next Dim year, month, day, hour, minute, second, timezone As Integer

year = Val(Swap(GetString(SCTS, 2))) + 2000 month = Val(Swap(GetString(SCTS, 2))) day = Val(Swap(GetString(SCTS, 2))) hour = Val(Swap(GetString(SCTS, 2))) minute = Val(Swap(GetString(SCTS, 2))) second = Val(Swap(GetString(SCTS, 2))) timezone = Val(Swap(GetString(SCTS, 2)))

GetDate = DateSerial(year, month, day) & " " & hour & ":" & minute & ":" & secondEnd Function

'Get phone addressPrivate Function GetAddress(ByRef Address As String) As StringOn Error Resume Next If Trim(Address) <> "" Then Dim tmpChar() As String tmpChar = CharToArray(Address) Dim I As Integer, result As String For I = 0 To UBound(tmpChar) Step 2 result = result & Swap(tmpChar(I) + tmpChar(I + 1)) Next If InStr(1, result, "F") Then result = Mid(result, 1, Len(result) - 1) GetAddress = result End IfEnd Function

Private Function GetSMSType(ByVal PDUCode As String) As SMSTypeOn Error Resume Next Dim FirstOctet As Byte Dim L As Integer L = GetByte(PDUCode) GetByte PDUCode 'SMSBase.GetByte (PDUCode) GetString PDUCode, (L - 1) * 2 FirstOctet = GetByte(PDUCode) 'Get base code. Use last 2 bit and whether there's a header as remark Dim t1 As Integer t1 = FirstOctet And 3 '00000011 Dim t2 As Integer t2 = FirstOctet And 64 '01000000 If t1 = 3 And t2 = 64 Then GetSMSType = SMSType.EMS_SUBMIT: Exit Function GetSMSType = t1 + t2End Function

Private Function InvertHexString(ByVal HexString As String) As StringOn Error Resume Next Dim result As String Dim I As Integer HexString = StrReverse(HexString) For I = 1 To Len(HexString) Step 2 result = result & StrReverse(Mid(HexString, I, 2)) Next InvertHexString = resultEnd Function

Private Function ByteToBinary(ByVal Dec As Byte) As StringOn Error Resume Next Dim result As String Dim Temp As Byte Temp = Dec Do result = (Temp Mod 2) & result If Temp = 1 Or Temp = 0 Then Exit Do Temp = Temp \ 2 Loop ByteToBinary = PadLeft(result, 8, "0")

End Function

Private Function BinaryToInt(ByVal Binary As String) As IntegerOn Error Resume NextDim bin As String, n As String, nil As String, I As Integerbin = ""Binary = Right("00000000" & Binary, 8)For I = 1 To 2 bin = Mid(Binary, Len(Binary) + 1 - 4 * I, 4) Select Case bin Case "0000": n = "0" Case "0001": n = "1" Case "0010": n = "2" Case "0011": n = "3" Case "0100": n = "4" Case "0101": n = "5" Case "0110": n = "6" Case "0111": n = "7" Case "1000": n = "8" Case "1001": n = "9" Case "1010": n = "A" Case "1011": n = "B" Case "1100": n = "C" Case "1101": n = "D" Case "1110": n = "E" Case "1111": n = "F" End Select nil = n & nilNextBinaryToInt = Val("&H" & nil)End Function

Private Function Decode7Bit(ByVal str7BitCode As String, ByVal charCount As Integer) As StringOn Error Resume Next Dim Inv7BitCode As String Inv7BitCode = InvertHexString(str7BitCode) Dim Binary As String Dim result As String Dim I As Integer For I = 1 To Len(Inv7BitCode) - 1 Step 2 Binary = Binary & ByteToBinary(Val("&H" & Mid(Inv7BitCode, I, 2))) Next Dim Temp As Integer For I = 1 To charCount Temp = BinaryToInt(Mid(Binary, Len(Binary) - (I * 7) + 1, 7)) If Temp = 0 Then Temp = 64 result = result & Chr(Temp) Next Decode7Bit = resultEnd Function

Private Sub SMS_RECEIVED_GetOrignalData(ByVal PDUCode As String)On Error Resume Next If NoPDUHeader = False Then SCAddressLength = GetByte(PDUCode) SCAddressType = GetByte(PDUCode) SCAddressValue = GetAddress((GetString(PDUCode, (SCAddressLength - 1) * 2))) FirstOctet = GetByte(PDUCode)

End If SrcAddressLength = GetByte(PDUCode) SrcAddressType = GetByte(PDUCode) SrcAddressLength = SrcAddressLength + SrcAddressLength Mod 2 SrcAddressValue = GetAddress((GetString(PDUCode, SrcAddressLength)))

TP_PID = GetByte(PDUCode) TP_DCS = GetByte(PDUCode) TP_SCTS = GetDate(GetString(PDUCode, 14)) TP_UDL = GetByte(PDUCode) TP_UD = GetString(PDUCode, TP_UDL * 2)End Sub

Private Sub SMS_SUBMIT_GetOrignalData(ByVal PDUCode As String)On Error Resume Next If NoPDUHeader = False Then SCAddressLength = GetByte(PDUCode) SCAddressType = GetByte(PDUCode) SCAddressValue = GetAddress((GetString(PDUCode, (SCAddressLength - 1) * 2))) FirstOctet = GetByte(PDUCode) End If TP_MR = GetByte(PDUCode) DesAddressLength = GetByte(PDUCode) DesAddressType = GetByte(PDUCode) DesAddressLength = DesAddressLength + DesAddressLength Mod 2 DesAddressValue = GetAddress((GetString(PDUCode, DesAddressLength))) TP_PID = GetByte(PDUCode) TP_DCS = GetByte(PDUCode) TP_VP = GetByte(PDUCode) TP_UDL = GetByte(PDUCode) TP_UD = GetString(PDUCode, TP_UDL * 2)End Sub

Private Sub SMS_STATUS_REPORT_GetOrignalData(ByVal PDUCode As String)On Error Resume Next If NoPDUHeader = False Then SCAddressLength = GetByte(PDUCode) SCAddressType = GetByte(PDUCode) SCAddressValue = GetAddress(GetString(PDUCode, (SCAddressLength - 1) * 2)) End If FirstOctet = GetByte(PDUCode)

TP_MR = GetByte(PDUCode)

SrcAddressLength = GetByte(PDUCode) SrcAddressType = GetByte(PDUCode) SrcAddressLength = SrcAddressLength + SrcAddressLength Mod 2 SrcAddressValue = GetAddress(GetString(PDUCode, SrcAddressLength))

TP_SCTS = GetDate(GetString(PDUCode, 14)) TP_DP = GetDate(GetString(PDUCode, 14))

Status = GetByte(PDUCode)

'Status report do not have content so I set it a zero length string TP_UD = ""End Sub

Private Function DecodeUnicode(ByVal strUnicode As String) As String

On Error Resume Next Dim Code As String Dim I, J As Integer Dim c() As String 'temp ReDim c(Int(Len(strUnicode) / 2)) As String '2 Byte a Unicode char For J = 0 To UBound(c) - 1 If J = 0 Then c(J) = Mid(strUnicode, 1, 2) Else c(J) = Mid(strUnicode, J * 2 + 1, 2) End If c(J) = "&H" & c(J) c(J) = Chr(Val(c(J))) If Asc(c(J)) <> 0 Then Code = Code & c(J) End If Next DecodeUnicode = CodeEnd Function

Private Sub EMS_SUBMIT_GetOrignalData(ByVal PDUCode As String)On Error Resume Next If NoPDUHeader = False Then SCAddressLength = GetByte(PDUCode) SCAddressType = GetByte(PDUCode) SCAddressValue = GetAddress(GetString(PDUCode, (SCAddressLength - 1) * 2)) FirstOctet = GetByte(PDUCode) End If TP_MR = GetByte(PDUCode)

DesAddressLength = GetByte(PDUCode) DesAddressType = GetByte(PDUCode) DesAddressLength = DesAddressLength + DesAddressLength Mod 2 DesAddressValue = GetAddress(GetString(PDUCode, DesAddressLength))

TP_PID = GetByte(PDUCode) TP_DCS = GetByte(PDUCode) TP_VP = GetByte(PDUCode) TP_UDL = GetByte(PDUCode)

TP_UDHL = GetByte(PDUCode) IE = GetIE(GetString(PDUCode, TP_UDHL * 2))

TP_UD = GetString(PDUCode, TP_UDL * 2)End Sub

Private Sub EMS_RECEIVED_GetOrignalData(ByVal PDUCode As String)On Error Resume Next If NoPDUHeader = False Then SCAddressLength = GetByte(PDUCode) SCAddressType = GetByte(PDUCode) SCAddressValue = GetAddress(GetString(PDUCode, (SCAddressLength - 1) * 2)) FirstOctet = GetByte(PDUCode) End If SrcAddressLength = GetByte(PDUCode) SrcAddressType = GetByte(PDUCode) SrcAddressLength = SrcAddressLength + SrcAddressLength Mod 2 SrcAddressValue = GetAddress((GetString(PDUCode, SrcAddressLength)))

TP_PID = GetByte(PDUCode) TP_DCS = GetByte(PDUCode) TP_SCTS = GetDate(GetString(PDUCode, 14)) TP_UDL = GetByte(PDUCode) TP_UDHL = GetByte(PDUCode)

IE = GetIE(GetString(PDUCode, TP_UDHL * 2))

TP_UD = GetString(PDUCode, TP_UDL * 2)End SubFunction GetIsiSms(PDUCode As String, Optional OnlyReport As Boolean = False) As BooleanOn Error Resume Next'On Error GoTo Salah PDUCode = Replace(PDUCode, vbCrLf, "") Dim JenisSMS As SMSType JenisSMS = GetSMSType(PDUCode) With GetSmsContent '//Inisialisasi .DestinationNumber = "" .DestinationReceivedDate = "" .ReceivedDate = "" .ReceivedTime = "" .SourceNumber = "" .StatusFromReport = 0 .Text = "" .Tipe = 0 .Tipe = JenisSMS If OnlyReport Then SMS_STATUS_REPORT_GetOrignalData (PDUCode) .SourceNumber = SrcAddressValue If SrcAddressType = &H91 Then .SourceNumber = "+" & .SourceNumber .ReceivedDate = TP_SCTS .DestinationReceivedDate = TP_DP .StatusFromReport = Status Else Select Case JenisSMS Case SMSType.EMS_RECEIVED EMS_RECEIVED_GetOrignalData (PDUCode) Case SMSType.EMS_SUBMIT EMS_SUBMIT_GetOrignalData (PDUCode) Case SMSType.SMS_RECEIVED SMS_RECEIVED_GetOrignalData (PDUCode) .SourceNumber = SrcAddressValue If SrcAddressType = &H91 Then .SourceNumber = "+" & .SourceNumber .ReceivedDate = TP_SCTS Case SMSType.SMS_SUBMIT SMS_SUBMIT_GetOrignalData (PDUCode) .DestinationNumber = DesAddressValue .DestinationReceivedDate = Date & " " & Time If DesAddressType = &H91 Then .DestinationNumber = "+" & .DestinationNumber Case SMSType.SMS_STATUS_REPORT SMS_STATUS_REPORT_GetOrignalData (PDUCode) .SourceNumber = SrcAddressValue If SrcAddressType = &H91 Then .SourceNumber = "+" & .SourceNumber .ReceivedDate = TP_SCTS .DestinationReceivedDate = TP_DP .StatusFromReport = Status Case Else 'Format PDU Salah

End Select End If If TP_DCS = 0 Then If JenisSMS = SMSType.SMS_RECEIVED Or JenisSMS = SMSType.SMS_STATUS_REPORT Or JenisSMS = SMSType.SMS_SUBMIT Then .Text = Decode7Bit(TP_UD, TP_UDL) End If If JenisSMS = SMSType.EMS_RECEIVED Or JenisSMS = SMSType.EMS_SUBMIT Then .Text = Decode7Bit(TP_UD, TP_UDL - 8 * (1 + TP_UDHL) / 7) End If Else 'EMS-Unicode MEssage .Text = DecodeUnicode(TP_UD) End If GetIsiSms = True End WithExit FunctionSalah:MsgBox ErrorEnd Function

Property Let NoPDUHeader(value As Boolean) strBool = valueEnd PropertyProperty Get NoPDUHeader() As Boolean NoPDUHeader = strBoolEnd Property

Public Property Get GetSourceNumber() As StringGetSourceNumber = GetSmsContent.SourceNumberEnd PropertyPublic Property Get GetDestinationNumber() As StringGetDestinationNumber = GetSmsContent.DestinationNumberEnd PropertyPublic Property Get GetReceivedDate() As StringGetReceivedDate = GetSmsContent.ReceivedDateEnd PropertyPublic Property Get GetText() As StringGetText = GetSmsContent.TextEnd PropertyPublic Property Get GetType() As SMSTypeGetType = GetSmsContent.TipeEnd PropertyPublic Property Get GetStatusFromReport() As EnumStatusGetStatusFromReport = GetSmsContent.StatusFromReportEnd PropertyPublic Property Get GetDestinationReceivedDate() As StringGetDestinationReceivedDate = GetSmsContent.DestinationReceivedDateEnd PropertyPublic Property Get GetReceivedTime() As StringGetReceivedTime = GetSmsContent.ReceivedTimeEnd Property

F. CODING PADA frmLogin.FRM

Private Sub cmdQuit_Click() Unload frmLogin Unload frmMenu EndEnd Sub

Private Sub cmdOK_Click() If txtUsername.Text = "" Or txtPassword.Text = "" Then MsgBox "USERNAME DAN PASSWORD HARUS DIISI!", vbCritical, "" Exit Sub End If BukaTabel "SELECT * FROM t_user WHERE username='" & txtUsername.Text & "' AND password='" & txtPassword.Text & "'" If Tbl.EOF Then MsgBox "USERNAME ATAU PASSWORD TIDAK DITEMUKAN!", vbCritical, "" Exit Sub Else strNIPPegawai = Tbl!nip StatusPegawai = Tbl!Status End If BukaTabel "SELECT * FROM t_pegawai WHERE nip='" & strNIPPegawai & "'" If Not Tbl.EOF Then Unload Me frmMenu.lblUser.Caption = "| USER : " & Tbl!nama End IfEnd Sub

Private Sub Form_Initialize() InitCommonControlsEnd Sub

Private Sub Form_Load() Me.BorderStyle = vbBSNone Me.BackColor = &HFFFFFF Label1.ForeColor = vbWhite Label2.ForeColor = vbWhite txtUsername.ForeColor = vbBlue txtUsername.ForeColor = vbBlueEnd Sub

Private Sub Form_Resize() Image1.Picture = LoadPicture(App.Path & "/Picture/detroit-lions.jpg") Image1.Width = Me.Width - 200 Image1.Height = Me.Height - 200End Sub

Private Sub txtPassword_GotFocus() SelectAll txtPasswordEnd Sub

Private Sub txtPassword_KeyPress(keyascii As Integer) KarakterFalse keyasciiEnd Sub

Private Sub txtUsername_GotFocus() SelectAll txtUsernameEnd Sub

Private Sub txtUsername_KeyPress(keyascii As Integer) KarakterFalse keyasciiEnd Sub

G. CODING PADA frmMenu.frm

Private Declare Function Inp Lib "inpout32.dll" _Alias "Inp32" (ByVal PortAddress As Integer) As IntegerPrivate Declare Sub Out Lib "inpout32.dll" _Alias "Out32" (ByVal PortAddress As Integer, ByVal value As Integer)Public Port1 As Integer

Public MyState As BooleanPublic OK As BooleanPublic Ring As BooleanPublic Error As BooleanPublic Greater_Sign As BooleanPublic Message_Store As BooleanPublic Message_Buffer As StringPublic SMS_TelNumber As StringPublic SMS_MsgNumber As StringPublic SMS_Message As StringPublic SMS_Center As StringDim SMS_Break() As StringPublic i As IntegerPublic TerminateAll As BooleanPublic myCommand As New Collection

Dim sNISN(40) As StringDim sNama(40) As StringDim JumDataSiswa As IntegerDim idNilai_1(40), idNilai_2(40), idNilai_3(40), idNilai_4(40) As IntegerDim DataChanged As BooleanDim DataNew As Boolean 'untuk tambah data siswaDim mt_pel As String

Dim baris As IntegerDim strKelas As StringDim DataForKirim As BooleanDim JenisReport As IntegerConst sFormatSms = "Ketik KODEULANGAN <spasi> NISN <spasi> KODEPELAJARAN kirim " & _ "ke 0812272066591. INFO untuk melihat kode"Const sInfo = "Jenis Ulangan : " & vbCrLf & _ "NH: harian" & vbCrLf & _ "NT: Tugas" & vbCrLf & _ "NM: UTS" & vbCrLf & _ "NA: UAS" & vbCrLf & vbCrLf & _ "Pelajaran: " & vbCrLf & _ "0: MTK" & vbCrLf & _ "1: B.Indo" & vbCrLf & _ "2: IPA" & vbCrLf & _ "3: IPS" & vbCrLf & _ "4: PKn" & vbCrLf & _ "5: Orkes" & vbCrLf & _ "6: Kertada" & vbCrLf & _ "7: Inggris" & vbCrLf & _ "8: Mandarin" & vbCrLf & _ "9: TIK" & vbCrLf & _ "10: Agama"

Function GetPDUCode(ByVal hMessage As String, _ ByVal ServiceCenterNumber As String, _ ByVal DestNumber As String, _ ByVal DataCodingScheme As ENUM_TP_DCS, _ ByVal ValidPeriod As ENUM_TP_VALID_PERIOD, _ ByVal MsgReference As Integer, _ ByVal StatusReport As Boolean) As StringOn Error Resume Next

Dim Tipe As Integer '0 Untuk SMS;1 Untuk ConcatenatedShortMessageDim result As StringDim smsObject As New TextToPDU

Select Case DataCodingScheme Case ENUM_TP_DCS.DefaultAlphabet If Len(hMessage) > MaxMsg Then Tipe = 1 End If Case ENUM_TP_DCS.UCS2 If Len(hMessage) > 70 Then Tipe = 1 End If End Select

With smsObject If MsgReference = 1 Then .ServiceCenterNumber = "" Else .ServiceCenterNumber = ServiceCenterNumber End If If StatusReport = True Then .TP_Status_Report_Request = ENUM_TP_SRI.Request_SMS_Report Else .TP_Status_Report_Request = ENUM_TP_SRI.No_SMS_Report End If .TP_Destination_Address = DestNumber .TP_Data_Coding_Scheme = DataCodingScheme .TP_Message_Reference = MsgReference .TP_Validity_Period = ValidPeriod .TP_User_Data = hMessage End With If Tipe = 0 Then result = smsObject.GetSMSPDUCode Else result = Chr(0) End If GetPDUCode = resultEnd Function

Private Function Send_Message(ByVal MobNumber As String, ByVal MsgText As String, Optional ValidPeriod As ENUM_TP_VALID_PERIOD = Maximum, Optional StatusReport As Boolean = False) As BooleanDim myPDU As TextToPDU, hPDU As StringDim lenFooter As IntegerDim addmyFoot As String 'FooterDim NewText As String If (minute(Time) Mod 4) = 0 Then addmyFoot = Footer Else addmyFoot = "" End If lenFooter = Len(addmyFoot) SMS_Message = "" Message_Buffer = "" OK = False Error = False If MSComm1.PortOpen = True Then MSComm1.Output = "AT+CSCA?" & Chr(13) While Not OK Or Error DoEvents

TungguRespon Wend If OK Then Set myPDU = New TextToPDU NewText = MsgText & addmyFoot hPDU = GetPDUCode(NewText, "+62855000000", MobNumber, DefaultAlphabet, ValidPeriod, 1, StatusReport) Greater_Sign = False MSComm1.Output = "AT+CMGS=" & ((Len(hPDU) / 2) - 1) & Chr(13) While Not Greater_Sign Or Error DoEvents TungguRespon Wend If Greater_Sign Then MyState = False MSComm1.Output = Trim(hPDU) & Chr(26) & vbCrLf OK = False Error = False While Not OK Or Error DoEvents TungguRespon Wend If OK Then lblKon.Caption = "Message Sent" Send_Message = True Me.MousePointer = vbNormal Else lblKon.Caption = "Message Not Sent" Send_Message = False End If Else lblKon.Caption = "Message cannot be sent" Send_Message = False End If End If Else lblKon.Caption = "Terhubung dengan Modem" End IfEnd FunctionSub AddStack(newCommand As String, Optional myChar As String)Dim Data(1) As String If myChar = "" Then myChar = Chr(13) Data(0) = newCommand Data(1) = myChar myCommand.Add DataEnd Sub

Function sendATC(cmd As String, Optional mychr As String) Dim mulai As Variant OK = False lblKon.Caption = "Running..." If mychr = "" Then mychr = Chr(13) MyState = TrueDim rto As Single mulai = Timer rto = 25 MSComm1.Output = cmd & mychr While MyState Or Error And Timer < (mulai + rto) DoEvents Wend lblKon.Caption = "Terhubung dengan Modem" cmdConnect.Caption = "Disconnect"

MyState = FalseEnd FunctionPublic Function Parse_SMS() As BooleanDim StartPoint As LongDim EndPoint As LongDim Buffer1 As StringDim Buffer2 As String Buffer1 = Message_Buffer StartPoint = InStr(1, Buffer1, "+CMGR:", vbTextCompare) EndPoint = InStr(1, Buffer1, vbCrLf & "OK", vbTextCompare) If StartPoint <> 0 And EndPoint > StartPoint Then i = StartPoint While i < EndPoint Buffer2 = Buffer2 & Mid(Buffer1, i, 1) i = i + 1 Wend Parse_SMS = True Message_Buffer = Buffer2 Exit Function End If Parse_SMS = FalseEnd Function

Sub InitSetting() AddStack "ATZ" AddStack "ATE1" AddStack "AT+CREG=0" AddStack "AT+CMEE=1" AddStack "AT+CPMS=" & Chr(34) & "SM" & Chr(34) '& "," & Chr(34) & "ME" & Chr(34) AddStack "AT+CNMI=2,1,2,2,0" AddStack "AT+CLIP=1" AddStack "AT+CUSD=1" AddStack "AT+CMGF=0"End Sub

Private Sub Read_Message()Dim SMS_Masuk() As StringDim p As String 'parameter /keyword awalDim NISN As String 'nomor induk siswaDim pel As Integer 'matapelajaranDim sms_balas As StringDim jenis As Integer 'jenis ulanganDim sJenisUlangan As String

sms_balas = "" tmrHP.Enabled = False If Parse_SMS Then SMS_Break = Split(Message_Buffer, vbCrLf, , vbTextCompare) Dim c As New PDUToText c.GetIsiSms SMS_Break(1) If UCase(c.GetText) = "INFO" Then Call Send_Message(c.GetSourceNumber, Left(sInfo, Len(sInfo) \ 2), Maximum, True) Call Send_Message(c.GetSourceNumber, Right(sInfo, Len(sInfo) \ 2), Maximum, True) SimpanPesanMasuk c.GetSourceNumber, c.GetText SimpanPesanKeluar c.GetSourceNumber, "info" 'KoneksiHP GoTo akhir End If If Len(c.GetSourceNumber) < 6 Then Exit Sub

If Left(c.GetSourceNumber, 1) <> "+" Then Exit Sub SMS_Masuk = Split(c.GetText, " ", , vbTextCompare) If UBound(SMS_Masuk) < 2 Then sms_balas = "Maaf, sms tidak dikenal sistem kami. " & sFormatSms ElseIf UBound(SMS_Masuk) > 2 Then sms_balas = "Maaf, sms tidak dikenal sistem kami. " & sFormatSms ElseIf UBound(SMS_Masuk) = 2 Then p = UCase(SMS_Masuk(0)) NISN = UCase(SMS_Masuk(1)) pel = SMS_Masuk(2) BukaTabel "SELECT * FROM t_siswa WHERE nisn='" & NISN & "'" If Tbl.EOF Then sms_balas = "Maaf, NISN tidak terdaftar" Else BukaTabel "SELECT * FROM t_matapelajaran WHERE id=" & pel If Tbl.EOF Then sms_balas = "Maaf, Kode mata pelajaran tidak terdaftar. ketik INFO dan kirim untuk bantuan." Else If p = "NH" Then jenis = 0 sJenisUlangan = "Harian" ElseIf p = "NT" Then jenis = 1 sJenisUlangan = "Tugas" ElseIf p = "NM" Then jenis = 2 sJenisUlangan = "UTS" ElseIf p = "NA" Then jenis = 3 sJenisUlangan = "UAS" Else jenis = 4 'tidak ada jenis ulangan ini sms_balas = "Maaf Jenis ulangan " & Left(c.GetText, 2) & " tidak ditemukan, ketik INFO dan kirim untuk bantuan." End If If jenis >= 0 And jenis <= 3 Then mt_pel = Tbl!matapelajaran sms_balas = GetNilaiSiswa(jenis, NISN, pel, sJenisUlangan) End If End If End If End If

Call Send_Message(c.GetSourceNumber, sms_balas, Maximum, True) SimpanPesanMasuk c.GetSourceNumber, c.GetText SimpanPesanKeluar c.GetSourceNumber, sms_balas MSComm1.PortOpen = False KoneksiHP Else lblKon.Caption = "Format PDU Salah" End Ifakhir: tmrHP.Enabled = TrueEnd Sub

Private Sub Get_Message(ByVal MsgNo As String) SMS_Message = ""

Message_Buffer = "" OK = False Error = False MSComm1.Output = "AT+CMGR=" & MsgNo & vbCrLf While Not OK Or Error Message_Store = True DoEvents TungguRespon Wend If OK Then Read_Message lblKon.Caption = "Baca SMS" Call sendATC("AT+CMGD=" & MsgNo) End If If Error Then lblKon.Caption = "Format salah, SMS Tidak bisa dibaca" End IfEnd Sub

Private Sub Handle_Rec_Event(CEvent As String)Dim temp As Variant If Mid(CEvent, 1, 5) = "+CMTI" Then lblKon.Caption = "SMS Received" temp = Split(CEvent, ",") SMS_MsgNumber = temp(1) Debug.Print temp(1) Message_Buffer = "" CEvent = "" Get_Message SMS_MsgNumber OK = False Error = False Exit Sub ElseIf Mid(CEvent, 1, 5) = "+CSCA" Then temp = Split(CEvent, ",") SMS_Center = Mid(temp(0), 9, Len(temp(0) - 10)) MsgBox SMS_Center ElseIf Left(CEvent, 1) = "S" Then lblMerek.ForeColor = vbYellow lblMerek.Caption = "Merk Modem : " & CEvent ElseIf Left(CEvent, 1) = "C" Then lblModel.ForeColor = vbYellow lblModel.Caption = "Model : " & CEvent ElseIf Mid(CEvent, 1, 5) = "+CUSD" Then MsgBox Mid(CEvent, 11, Len(CEvent) - 14) End If Select Case CEvent Case "OK" OK = True Case "ERROR" Error = True Case "RING" If Ring = False Then Ring = True End If Case Else End SelectEnd Sub

Private Sub TungguRespon()Me.MousePointer = vbHourglassDim Start

Start = Timer Do While Timer < Start + 8 DoEvents If OK Then Exit Sub End If If Error Then Exit Sub End If Loop Me.MousePointer = vbNormalEnd Sub

Sub KoneksiHP()On Error GoTo Salah If MSComm1.PortOpen Then If MsgBox("Anda Yakin Memutuskan koneksi HP", vbYesNo + 32, "Konfirmasi") = vbYes Then MSComm1.PortOpen = False lblKon.Caption = "Modem Tidak Terkoneksi" lblKon2.Caption = "Modem Tidak terkoneksi" shapeCon.BackColor = vbRed tmrHP.Enabled = False MyState = False End If Else GetNoPort 'buka setting nomor port MSComm1.CommPort = NoPort MSComm1.settings = "19200,n,8,1" MSComm1.PortOpen = True MSComm1.Output = "AT" + Chr(13) TungguRespon If OK Then MSComm1.Output = "ATI" + Chr(13) TungguRespon If OK Then InitSetting lblKon.Caption = "Modem Telah Terkoneksi" lblKon2.Caption = "Modem Telah Terkoneksi" shapeCon.BackColor = vbGreen tmrHP.Enabled = True Else MsgBox "Modem ini Tidak Mendukung Aplikasi ini", 16 GoSub Salah End If Else MsgBox "Modem ini Tidak Mendukung Aplikasi ini", 16 GoSub Salah End If Me.MousePointer = vbNormal End If Exit SubSalah: lblKon.Caption = "Disconnected" lblKon2.Caption = "Disconnected" shapeCon.BackColor = vbRed tmrHP.Enabled = False If MSComm1.PortOpen Then MSComm1.PortOpen = FalseEnd Sub

Private Sub ApClose_Click() Unload Me

EndEnd Sub

Private Sub ApClose_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) bgAp.Visible = True bgAp.Left = ApClose.LeftEnd Sub

Private Sub ApMinimized_Click() Me.WindowState = 1End Sub

Private Sub ApMinimized_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) bgAp.Visible = True bgAp.Left = ApMinimized.LeftEnd Sub

Private Sub cboJenisUlangan_Click() ClearTXTNilai TampilNilai cboJenisUlangan.ListIndex, cboTipeUlangan.ListIndex, cboMataPelajaran.ListIndex DataChanged = FalseEnd Sub

Private Sub cboKelasDataSiswa_Click() LabelJudulSiswa.Caption = "DATA SISWA SD XAVERIUS 5 KELAS " & cboKelasDataSiswa.Text TampilDataSiswa DataNew = True ClearFormDataSiswaEnd Sub

Private Sub cboKelasKepSek_Click() txtKelasReportUTS.Text = cboKelasKepSek.TextEnd Sub

Private Sub cboMataPelajaran_Click() ClearTXTNilai TampilNilai cboJenisUlangan.ListIndex, cboTipeUlangan.ListIndex, cboMataPelajaran.ListIndex DataChanged = FalseEnd Sub

Private Sub cboMataPelajaranReportUTS_Click() TampilReportNilaiEnd Sub

Private Sub cboNama_Click() If cboNama.ListIndex > -1 Then BukaTabel "SELECT nip FROM t_pegawai WHERE nama='" & cboNama.Text & "'" If Not Tbl.EOF Then txtNIP.Text = Tbl!nip Else MsgBox "data tidak ditemukan" End If End IfEnd Sub

Private Sub cboTipeUlangan_Click() ClearTXTNilai

TampilNilai cboJenisUlangan.ListIndex, cboTipeUlangan.ListIndex, cboMataPelajaran.ListIndex DataChanged = FalseEnd Sub

Private Sub cmdBatalSetting_Click() GetColorStyleEnd Sub

Private Sub cmdCekPulsa_Click() Me.MousePointer = vbHourglass sendATC "at+cusd=1," & Chr(34) & "*888#" & Chr(34) & ",15" Me.MousePointer = vbNormalEnd Sub

Private Sub cmdConnect_Click() If cmdConnect.Caption = "Connect" Then KoneksiHP Else KoneksiHP cmdConnect.Caption = "Connect" End If If lblKon2.Caption = "Modem Telah Terkoneksi" Then sendATC "AT+CGMI" sendATC "AT+CGMM" cmdCekPulsa.Enabled = True Else LabelMerek.Caption = "" LabelModel.Caption = "" cmdCekPulsa.Enabled = False End IfEnd Sub

Private Sub cmdDeleteAllInbox_Click() If frameInbox.Caption = "Inbox" Then HapusSemuaPesan "t_inbox" Else HapusSemuaPesan "t_sent" End IfEnd Sub

Sub HapusSemuaPesan(strTabel As String) Dim pesan As String Dim jmlData As Integer BukaTabel "SELECT COUNT(*) AS [jml] FROM " & strTabel & "" jmlData = Tbl!jml If jmlData > 0 Then pesan = MsgBox("Yakin akan menghapus semua pesan masuk?", vbQuestion + vbYesNo, "") If pesan = vbYes Then BukaTabel "DELETE FROM " & strTabel & "" TampilInbox strTabel End If End IfEnd SubPrivate Sub cmdDeleteInbox_Click() If frameInbox.Caption = "Inbox" Then HapusPesan "t_inbox" Else HapusPesan "t_sent"

End IfEnd Sub

Sub HapusPesan(strTabel As String) On Error Resume Next Dim strID As Integer strID = MSFInbox.TextMatrix(MSFInbox.Row, 0) If Len(strID) <> 0 Then BukaTabel "DELETE FROM " & strTabel & " WHERE id=" & strID TampilInbox strTabel End IfEnd Sub

Private Sub cmdHapusSiswa_Click() Dim pesan As String If msfSiswa.TextMatrix(msfSiswa.Row, 1) = "" Then Exit Sub End If pesan = MsgBox("Yakin data siswa dengan nama " & txtNama.Text & " akan dihapus?", vbQuestion + vbYesNo) If pesan = vbYes Then BukaTabel "DELETE FROM t_siswa WHERE nisn='" & msfSiswa.TextMatrix(msfSiswa.Row, 1) & "'" TampilDataSiswa End IfEnd Sub

Private Sub cmdNewData_Click() DataNew = True ClearFormDataSiswa txtNISN.Enabled = True txtNISN.SetFocusEnd Sub

Private Sub cmdOK_Click() SimpanPort txtNoPort.TextEnd Sub

Private Sub cmdPrint_Click() Dim i As Integer Dim j As Integer Dim strGaris As String Dim str1 As String Dim str2 As String Dim pjg As Integer Dim pjgKolom As Integer Printer.PaperSize = vbPRPSLegal Printer.FontName = "Courier New" Printer.FontSize = 10 Printer.FontBold = True Printer.ForeColor = &H8000000C pjg = Len(msfUTS.TextMatrix(1, 0)) pjg = (89 - pjg) / 2 Printer.Print Space(pjg) & msfUTS.TextMatrix(1, 0) pjg = Len(msfUTS.TextMatrix(2, 0)) pjg = (89 - pjg) / 2 Printer.Print Space(pjg) & msfUTS.TextMatrix(2, 0) pjg = Len(msfUTS.TextMatrix(3, 0)) pjg = (89 - pjg) / 2 Printer.Print Space(pjg) & msfUTS.TextMatrix(3, 0)

For i = 1 To 178 strGaris = strGaris & "-" Next i Printer.Print Space(2) Printer.FontSize = 5 Printer.Print strGaris Printer.FontSize = 10 Printer.FontBold = False For i = 5 To msfUTS.Rows - 1 pjg = Len(msfUTS.TextMatrix(i, 0)) str1 = msfUTS.TextMatrix(i, 0) & Space(4 - pjg) For j = 1 To msfUTS.Cols - 1 Select Case j Case 1: pjgKolom = 12 Case 2: pjgKolom = 35 Case 3: pjgKolom = 9 Case 4: pjgKolom = 7 Case 5: pjgKolom = 11 Case 6: pjgKolom = 11 End Select str2 = msfUTS.TextMatrix(i, j) pjg = Len(str2) str1 = str1 & str2 & Space(pjgKolom - pjg) Next j If msfUTS.TextMatrix(i, 1) = "40" Then Printer.EndDoc Printer.Print strGaris End If Printer.Print str1 Printer.FontSize = 5 Printer.Print strGaris Printer.FontSize = 10 Next i Printer.FontSize = 5 Printer.Print strGaris Printer.EndDocEnd Sub

Private Sub cmdPrintToExcel_Click() FlexGrid_To_Excel msfUTS, msfUTS.Rows, msfUTS.Cols, 2, frameReportUTS.CaptionEnd Sub

Private Sub cmdSave_Click() If cboJenisUlangan.ListIndex = -1 Or cboTipeUlangan.ListIndex = -1 Or cboMataPelajaran.ListIndex = -1 Then MsgBox "JENIS ULANGAN, TIPE ULANGAN DAN MATA PELAJARAN BELUM DIPILIH", vbInformation, "" Else If DataChanged = True Then SimpanDataNilai End If End IfEnd Sub

Private Sub cmdSaveSetting_Click() SimpanColorStyleEnd Sub

Private Sub cmdSend_Click() If txtPhoneNumber.Text = "" Or txtMessage.Text = "" Then

Exit Sub Else Send_Message txtPhoneNumber.Text, txtMessage.Text, Maximum, True End IfEnd Sub

Private Sub cmdSendMessage_Click() If UCase(lblKon.Caption) = "DISCONNECTED" Or UCase(lblKon.Caption) = "TIDAK TERHUBUNG DENGAN MODEM" Or UCase(lblKon.Caption) = "NOT CONNECTED" Then MsgBox "Modem belum terhubung", vbInformation, "" Exit Sub End If lblProsesKirim.Caption = "..." If txtKelasKirim = "" Or cboMataPelajaranKirim.ListIndex = -1 Or cboJenisUlanganKirim.ListIndex = -1 Then MsgBox "Anda belum memilih data dengan lengkap!", vbInformation, "" Else lblProsesKirim.Caption = "Sedang memproses ..."

KirimSMSNilai If DataForKirim = True Then lblProsesKirim.Caption = "Selesai mengirim pesan" Else lblProsesKirim.Caption = "Tidak mengirim sms, cek data nilai atau nomor hp" End If End IfEnd Sub

Private Sub cmdSimpan_Click() If txtNIP.Text = "" Or txtUsername.Text = "" Or txtPassword.Text = "" Or txtConfirm.Text = "" Then MsgBox "data belum lengkap" Else If txtConfirm.Text <> txtPassword.Text Then MsgBox "Ulangi pengisian password" Else SimpanDataUser End If End IfEnd Sub

Private Sub Command1_Click() ListSiswa(0).AddItem "TExt" ListSiswa(1).AddItem "TExt" ListSiswa(2).AddItem "TExt"End Sub

Private Sub cmdSimpanSiswa_Click() Dim strSQL As String Dim idKelas As Integer Dim sKelamin As String Dim sHP As String If cboKelasDataSiswa.ListIndex = -1 Then Exit Sub If CheckFormKosong = True Then MsgBox "Data belum lengkap", vbInformation, "" Exit Sub End If If cboJenisKelamin.ListIndex = -1 Or cboAgama.ListIndex = -1 Then MsgBox "Jenis kelamin dan agama harus dipilih", vbInformation, "" Exit Sub

End If If Len(txtNISN.Text) < 10 Then MsgBox "Panjang NISN harus 10", vbInformation, "" Exit Sub End If If txtHP.Text = "" Then sHP = "0" Else sHP = txtHP.Text End If sKelamin = StringKelamin(cboJenisKelamin.ListIndex) BukaTabel "Select id from t_kelas where kelas='" & cboKelasDataSiswa.Text & "'" If Not Tbl.EOF Then idKelas = Tbl!ID Tbl.Close Select Case DataNew Case True: BukaTabel "Select * from t_siswa WHERE nisn='" & txtNISN.Text & "'" If Not Tbl.EOF Then MsgBox "NISN : " & txtNISN.Text & " sudah terdapat dalam tabel siswa dengan data sbb : " & _ vbCrLf & "Nama : " & Tbl!nama, vbInformation, "" Exit Sub End If strSQL = "INSERT INTO t_siswa VALUES('" & txtNISN.Text & "', '" & txtNama.Text & "', '" & _ txtTempatLahir.Text & "', '" & DTPicker1.value & "', '" & sKelamin & "', " & _ (cboAgama.ListIndex + 1) & ", " & idKelas & ", '" & txtOrangtua.Text & "', '" & _ txtAlamat.Text & "','" & sHP & "')" Case False: strSQL = "UPDATE t_siswa " & _ "SET nama='" & txtNama.Text & "', " & _ " tempat_lahir='" & txtTempatLahir.Text & "', " & _ " tgl_lahir='" & DTPicker1.value & "', " & _ " jenis_kelamin='" & sKelamin & "', " & _ " agama=" & (cboAgama.ListIndex + 1) & ", " & _ " kelas=" & idKelas & "," & _ " ortu='" & txtOrangtua.Text & "', " & _ " alamat='" & txtAlamat.Text & "', " & _ " hp='" & sHP & "' " & _ " WHERE nisn='" & txtNISN.Text & "'" End Select SaveData "t_siswa", strSQL, False ClearFormDataSiswa TampilDataSiswa txtNISN.Enabled = True DataNew = TrueEnd Sub

Private Sub Form_Initialize() InitCommonControlsEnd Sub

Private Sub Form_Load() imgTitleBar.Picture = LoadPicture(App.Path & "/Picture/TITLEBAR.JPG") imgTitle.Picture = LoadPicture(App.Path & "/Picture/BG_TITLE.JPG")

imgFooter.Picture = LoadPicture(App.Path & "/Picture/BG_FOOTER.jpg") PicBG.Picture = LoadPicture(App.Path & "/Picture/CHS_background.jpg") lblTitleBar.Caption = "Sistem Informasi Nilai Siswa SD Xaverius 5" lblTitleBar.ForeColor = vbWhite lblTitleBar.FontBold = True StyleForm GetColorStyle Me.Show lblTitleBar.FontSize = 23 lblTitleBar.FontName = "DS-Digital" Shape1.Width = lblTitleBar.Width + 200 TITLE(1).Left = Shape1.Width + 200 TITLE2.Left = Shape1.Width + TITLE(1).Width + 500

frmLogin.Show vbModal With lblWelcome(0) .Caption = "Welcome, Please use program with enjoy." .Font = "DS-Digital" .FontSize = 20 .ForeColor = vbWhite End With With lblWelcome(1) .Caption = "Click Menu above to start." .Font = "DS-Digital" .FontSize = 20 .ForeColor = vbWhite End With lblWelcome(0).Left = Me.Width \ 2 - lblWelcome(0).Width \ 2 lblWelcome(1).Left = lblWelcome(0).Left

Dim i As Integer For i = 0 To 39 T1(i).Alignment = 1 T2(i).Alignment = 1 T3(i).Alignment = 1 T4(i).Alignment = 1 T1(i).MaxLength = 2 T2(i).MaxLength = 2 T3(i).MaxLength = 2 T4(i).MaxLength = 2 Next IsiAgama cboAgama IsiKelamin cboJenisKelaminEnd Sub

Private Sub Form_Resize()On Error Resume Next imgTitleBar.Width = Me.Width imgTitle.Width = Me.Width imgFooter.Width = Me.Width imgFooter.Top = Me.Height - (imgFooter.Height) PosisiMenu lblUser.Top = imgFooter.Top + 50 lblJam.Top = lblUser.Top lblKon.Top = lblJam.Top With ApClose .ForeColor = vbWhite .FontSize = 11 .Left = Me.Width - 250

.FontBold = True End With With ApMinimized .ForeColor = vbWhite .FontSize = 11 .Left = Me.Width - (250 + ApClose.Width) .FontBold = True End With PicBG.Width = Me.Width PicBG.Height = Me.Height - imgTitle.Top - imgTitle.Height End Sub

Sub StyleForm() Dim ctrl As Control On Error Resume Next Me.BackColor = vbWhite TITLE2.Caption = "HARI INI : " & Format(Date, "DD MMM YYYY") For Each ctrl In Me If TypeOf ctrl Is Label Then ctrl.FontName = "DS-Digital" ctrl.FontSize = 11 ctrl.BackStyle = 0 If Left(ctrl.Name, 5) = "TITLE" Then ctrl.ForeColor = vbWhite ElseIf Left(ctrl.Name, 5) = "Label" Then ctrl.ForeColor = Text2.Text ElseIf Left(ctrl.Name, 7) = "lblMenu" Then ctrl.ForeColor = vbBlue ctrl.FontSize = 13 ctrl.FontName = "DS-Digital" ctrl.FontBold = True ElseIf TypeOf ctrl Is PictureBox Then ctrl.BackColor = &HF09F4D End If ElseIf TypeOf ctrl Is Frame Then ctrl.BackColor = Text1.Text ctrl.BorderStyle = 0 ElseIf TypeOf ctrl Is MSFlexGrid Then ctrl.Appearance = 0 ctrl.BackColorBkg = vbWhite ctrl.FontName = "Calibri" ctrl.FontSize = 10 ctrl.BackColorFixed = 11779999 ElseIf TypeOf ctrl Is CommandButton Then ctrl.FontName = "DS-Digital" ctrl.FontSize = 13 ctrl.BackColor = Text3.Text ElseIf TypeOf ctrl Is ComboBox Or TypeOf ctrl Is TextBox Then ctrl.FontName = "Calibri" ctrl.FontSize = 10 End If LabelMerek.ForeColor = Text2.Text LabelModel.ForeColor = Text2.Text NextEnd Sub

Sub PosisiMenu() Dim f, L, r, s, m, SM, NS, DS As Integer f = Me.Width - 200

L = lblMenuLogOut.Width + 100 s = lblMenuSetting.Width + 100 r = lblMenuReport.Width + 100 m = lblMenuManageUser.Width + 100 SM = lblMenuSendMessage.Width + 100 NS = lblMenuNilaiSiswa.Width + 100 DS = lblMenuDataSiswa.Width + 100 lblMenuLogOut.Left = f - L lblMenuSetting.Left = f - (L + s) lblMenuReport.Left = f - (L + s + r) lblMenuManageUser.Left = f - (L + s + r + m) lblMenuSendMessage.Left = f - (L + s + r + m + SM) lblMenuNilaiSiswa.Left = f - (L + s + r + m + SM + NS) lblMenuDataSiswa.Left = f - (L + s + r + m + SM + NS + DS)End Sub

Sub frameMuncul(Optional frameMuncul As Frame) On Error Resume Next Dim ctrl As Control For Each ctrl In Me If TypeOf ctrl Is Frame Then ctrl.Visible = False ElseIf TypeOf ctrl Is MSFlexGrid Then ctrl.Clear End If Next With frameMuncul .Top = 1920 .Visible = True .Width = Me.Width - 300 .Height = Me.Height - imgTitle.Height - 1200 End WithEnd Sub

Private Sub Form_Unload(Cancel As Integer) If lblKon.Caption = "Terhubung dengan Modem" Or lblKon.Caption = "Message sent" Then MsgBox "Modem masih terkoneksi, putuskan dulu" Cancel = 1 End IfEnd Sub

Private Sub framePilihReport_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseKeluarEnd Sub

Private Sub imgTitle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseKeluarEnd Sub

Sub MouseKeluar() Dim ctrl As Control For Each ctrl In Me If TypeOf ctrl Is Label Then If Left(ctrl.Name, 7) = "lblMenu" Then ctrl.ForeColor = vbBlue End If End If NextEnd Sub

Private Sub imgTitleBar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) bgAp.Visible = FalseEnd Sub

Private Sub lblMenuDataSiswa_Click() If frameDataSiswa.Visible = False Then frameMuncul frameDataSiswa IsiComboBox cboKelasDataSiswa, "kelas", "t_kelas" msfSiswa.Width = frameDataSiswa.Width - (txtNISN.Width + txtNISN.Left + 500) ClearFormDataSiswa End IfEnd Sub

Private Sub lblMenuDataSiswa_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuDataSiswa.ForeColor = vbRedEnd Sub

Private Sub lblMenuInbox_Click() frameInbox.Caption = "Inbox" TampilInbox "t_inbox" LabelReportSMS.Caption = "REPORT SMS INBOX"End Sub

Private Sub lblMenuInbox_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuInbox.ForeColor = vbRedEnd Sub

Private Sub lblMenuLogOut_Click() frameMuncul lblUser.Caption = "| USER :" frmLogin.Show vbModalEnd Sub

Private Sub lblMenuLogOut_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuLogOut.ForeColor = vbRedEnd Sub

Private Sub lblMenuManageUser_Click() If StatusPegawai = 2 Then MsgBox "Anda tidak berhak mengakses menu ini!", vbCritical, "" Exit Sub End If frameMuncul frameManageUser IsiComboBox cboNama, "nama", "t_pegawai" frameManageUser.Left = (Me.Width / 2) - (frameManageUser.Width / 2)End Sub

Private Sub lblMenuManageUser_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuManageUser.ForeColor = vbRedEnd Sub

Private Sub lblMenuNilaiSiswa_Click() If frameNilaiSiswa.Visible = False Then frameMuncul frameNilaiSiswa Tampilkelas txtKelas LabelNilaiSiswa.Caption = "DATA NILAI SISWA KELAS " & txtKelas

IsiComboBox cboJenisUlangan, "jenis_ulangan", "t_jenis_ulangan" IsiComboBox cboTipeUlangan, "tipe", "t_tipe_ulangan" IsiComboBox cboMataPelajaran, "matapelajaran", "t_matapelajaran" TampilNamaSiswa ClearTXTNilai End IfEnd Sub

Private Sub lblMenuNilaiSiswa_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuNilaiSiswa.ForeColor = vbRedEnd Sub

Private Sub lblMenuNilaiUAS_Click() lblMenuNilaiUTS_Click JenisReport = 3 frameReportUTS.Caption = "Nilai UAS" If StatusPegawai = "0" Then cboKelasKepSek.Visible = True cboKelasKepSek.Clear BukaTabel "Select * from t_kelas" While Not Tbl.EOF cboKelasKepSek.AddItem Tbl!kelas Tbl.MoveNext Wend Else cboKelasKepSek.Visible = False End IfEnd Sub

Private Sub lblMenuNilaiUAS_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuNilaiUAS.ForeColor = vbRedEnd Sub

Private Sub lblMenuNilaiUTS_Click() frameMuncul frameReportUTS msfUTS.Width = frameReportUTS.Width - 2000 msfUTS.Height = frameReportUTS.Height - (cboMataPelajaran.Top + 1000) Tampilkelas txtKelasReportUTS IsiComboBox cboMataPelajaranReportUTS, "matapelajaran", "t_matapelajaran" JenisReport = 2 cmdPrintToExcel.Left = msfUTS.Width + 400 cmdPrint.Left = cmdPrintToExcel.Left frameReportUTS.Caption = "Nilai UTS" If StatusPegawai = "0" Then cboKelasKepSek.Visible = True cboKelasKepSek.Clear BukaTabel "Select * from t_kelas" While Not Tbl.EOF cboKelasKepSek.AddItem Tbl!kelas Tbl.MoveNext Wend Else cboKelasKepSek.Visible = False End IfEnd Sub

Private Sub lblMenuNilaiUTS_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

lblMenuNilaiUTS.ForeColor = vbRedEnd Sub

Private Sub lblMenuReport_Click() With framePilihReport .BackColor = vbYellow .Left = lblMenuReport.Left If .Visible = False Then .Visible = True Else .Visible = False End If End WithEnd Sub

Private Sub lblMenuReport_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuReport.ForeColor = vbRedEnd Sub

Private Sub lblMenuSendMessage_Click() frameMuncul frameSendMessage IsiComboBox cboJenisUlanganKirim, "jenis_ulangan", "t_jenis_ulangan" IsiComboBox cboMataPelajaranKirim, "matapelajaran", "t_matapelajaran" Tampilkelas txtKelasKirim lblProsesKirim.Caption = "..." lblProsesKirim.ForeColor = vbBlue TampilDataJumKirimEnd Sub

Private Sub lblMenuSendMessage_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuSendMessage.ForeColor = vbRedEnd Sub

Private Sub lblMenuSent_Click() frameInbox.Caption = "Sent" TampilInbox "t_sent" LabelReportSMS.Caption = "REPORT SMS SENT"End Sub

Private Sub lblMenuSent_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuSent.ForeColor = vbRedEnd Sub

Private Sub lblMenuSetting_Click() frameMuncul frameSetting If lblKon2.Caption <> "Modem Telah Terkoneksi" Then LabelMerek.Caption = "" LabelModel.Caption = "" lblKon2.Caption = "Modem Tidak Terkoneksi" End If BukaDatabase GetNoPort txtNoPort.Text = NoPortEnd Sub

Private Sub lblMenuSetting_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuSetting.ForeColor = vbRedEnd Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) On Error Resume Next If (UnloadMode = 0) Or (UnloadMode = 1) Then Dim i As Integer If TerminateAll Then MSComm1.PortOpen = False Unload Me End If Else MSComm1.PortOpen = False Unload Me End IfEnd Sub

Private Sub ListSiswa_Click(Index As Integer) Dim posisi As Integer For i = 0 To 39 T1(i).BackColor = vbWhite T2(i).BackColor = vbWhite T3(i).BackColor = vbWhite T4(i).BackColor = vbWhite Next i Select Case Index Case 0: posisi = ListSiswa(0).ListIndex Case 1: posisi = ListSiswa(1).ListIndex + 4 Case 2: posisi = ListSiswa(2).ListIndex + 8 Case 3: posisi = ListSiswa(3).ListIndex + 12 Case 4: posisi = ListSiswa(4).ListIndex + 16 Case 5: posisi = ListSiswa(5).ListIndex + 20 Case 6: posisi = ListSiswa(6).ListIndex + 24 Case 7: posisi = ListSiswa(7).ListIndex + 28 Case 8: posisi = ListSiswa(8).ListIndex + 32 Case 9: posisi = ListSiswa(9).ListIndex + 36 End Select T1(posisi).BackColor = &H80000003 T2(posisi).BackColor = &H80000003 T3(posisi).BackColor = &H80000003 T4(posisi).BackColor = &H80000003

End Sub

Private Sub MSComm1_OnComm()On Error Resume NextStatic CEvent As StringDim CChar As String * 1 Select Case MSComm1.CommEvent Case comEvReceive Do CChar = MSComm1.Input If Message_Store Then Message_Buffer = Message_Buffer & CChar End If Select Case CChar Case ">" Greater_Sign = True MyState = False Case vbLf MyState = False

Case vbCr If Len(CEvent) > 0 Then Handle_Rec_Event CEvent CEvent = "" MyState = False End If Case Else CEvent = CEvent + CChar MyState = False End Select Loop While MSComm1.InBufferCount End SelectEnd Sub

Sub GantiStyleBG(sKontrolName As String, warna As String, Bkg As Boolean) On Error Resume Next Dim ctrl As Control For Each ctrl In Me Select Case Bkg Case True If Left(ctrl.Name, 3) = sKontrolName Then ctrl.BackColor = warna End If Case False If Left(ctrl.Name, 2) = sKontrolName Then ctrl.ForeColor = warna ctrl.FontName = "Calibri" End If lblMerek.ForeColor = warna lblKon2.ForeColor = warna lblModel.ForeColor = warna End Select

NextEnd Sub

Private Sub msfSiswa_Click() BukaTabel "Select * from t_siswa WHERE nisn='" & msfSiswa.TextMatrix(msfSiswa.Row, 1) & "'" If Not Tbl.EOF Then txtNISN.Text = Tbl!NISN txtNama.Text = Tbl!nama txtTempatLahir.Text = Tbl!tempat_lahir DTPicker1.value = Tbl!tgl_lahir Dim j As Integer If Tbl!jenis_kelamin = "L" Then j = 0 Else j = 1 End If cboJenisKelamin.ListIndex = j cboAgama.ListIndex = (Tbl!agama - 1) txtOrangtua.Text = Tbl!ortu txtAlamat.Text = Tbl!alamat txtHP.Text = Tbl!hp DataNew = False txtNISN.Enabled = False End IfEnd Sub

Private Sub T1_Change(Index As Integer) DataChanged = TrueEnd Sub

Private Sub T1_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub T2_Change(Index As Integer) DataChanged = TrueEnd Sub

Private Sub T2_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub T3_Change(Index As Integer) DataChanged = TrueEnd Sub

Private Sub T3_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub T4_Change(Index As Integer) DataChanged = TrueEnd Sub

Private Sub T4_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub Text1_Change() GantiStyleBG "fra", Text1.Text, TrueEnd Sub

Private Sub Text2_Change() GantiStyleBG "La", Text2.Text, FalseEnd Sub

Private Sub Text3_Change() GantiStyleBG "cmd", Text3.Text, TrueEnd Sub

Private Sub Text4_Change() On Error Resume Next Me.BackColor = Text4.TextEnd Sub

Private Sub timerAnimasiCon_Timer() If lblKon2.Caption = "Modem Telah Terkoneksi" Then If shapeCon.BackColor = vbGreen Then shapeCon.BackColor = vbYellow Else shapeCon.BackColor = vbGreen End If End IfEnd Sub

Private Sub TmrHP_Timer() If myCommand.Count > 0 Then sendATC CStr(myCommand(1)(0)), CStr(myCommand(1)(1))

myCommand.Remove (1) End IfEnd Sub

Sub SimpanPesanMasuk(dari As String, isi As String) Dim NomorPesan As Integer Dim strSQL As String BukaTabel "SELECT * FROM t_inbox" If Tbl.EOF Then NomorPesan = 1 Else Tbl.MoveLast NomorPesan = Tbl!ID + 1 End If strSQL = "INSERT INTO t_inbox VALUES(" & NomorPesan & ",'" & dari & "','" & isi & "')" SaveData "t_inbox", strSQL, FalseEnd Sub

Sub SimpanPesanKeluar(dari As String, isi As String) Dim NomorPesan As Integer Dim strSQL As String BukaTabel "SELECT * FROM t_sent" If Tbl.EOF Then NomorPesan = 1 Else Tbl.MoveLast NomorPesan = Tbl!ID + 1 End If strSQL = "INSERT INTO t_sent VALUES(" & NomorPesan & ",'" & dari & "','" & isi & "')" SaveData "t_inbox", strSQL, FalseEnd SubPublic Function GetNilaiSiswa(JenisPelajaran As Integer, sNISN As String, _kdpelajaran As Integer, strJenisUlangan As String) As String Dim temp As String Dim nama As String BukaTabel "SELECT * FROM v_nilai WHERE nisn='" & sNISN & "' AND kd_jenis=" & JenisPelajaran & " AND kd_matapelajaran=" & kdpelajaran If Tbl.EOF Then GetNilaiSiswa = "Maaf, Mata Pelajaran " & mt_pel & " Belum ada ulangan Harian" Exit Function Else While Not Tbl.EOF nama = Tbl!nama temp = temp & "," & Tbl!nilai Tbl.MoveNext Wend End If GetNilaiSiswa = "Nama : " & nama & vbCrLf & _ "NISN : " & sNISN & vbCrLf & _ "Nilai " & strJenisUlangan & " " & mt_pel & " : " & Right(temp, Len(temp) - 1)End Function

Function CariIdKelas() As Integer BukaTabel "Select id FROM t_kelas WHERE kelas='" & txtKelas.Text & "'"

If Not Tbl.EOF Then CariIdKelas = Tbl!ID Else MsgBox "id kelas tidak ditemukan" End IfEnd FunctionSub SimpanDataUser() Dim strSQL As String Dim ID As Integer BukaTabel "SELECT * FROM t_user WHERE nip='" & txtNIP.Text & "'" If Not Tbl.EOF Then MsgBox "NIP " & txtNIP.Text & " Nama : " & cboNama.Text & " sudah terdaftar" Exit Sub End If BukaTabel "SELECT id from t_user" If Not Tbl.EOF Then Tbl.MoveLast ID = Tbl!ID + 1 Else ID = 1 End If strSQL = "INSERT INTO t_user VALUES(" & ID & ",'" & txtNIP.Text & "','" & txtUsername.Text & "','" & txtPassword.Text & "', " & cboStatus.ListIndex & ")" SaveData "t_user", strSQL, True ClearForm MeEnd Sub

Private Sub tmrStatus_Timer() lblJam.Caption = "JAM : " & TimeEnd Sub

Private Sub tmrWelcome_Timer() If lblWelcome(0).Visible = False Then lblWelcome(0).Visible = True ElseIf lblWelcome(0).Visible = True Then lblWelcome(0).Visible = False End IfEnd Sub

Private Sub txtConfirm_KeyPress(keyascii As Integer) KarakterFalse keyasciiEnd Sub

Sub Tampilkelas(txt As TextBox) BukaTabel "SELECT * FROM v_GuruKelas WHERE nip='" & strNIPPegawai & "'" If Not Tbl.EOF Then strKelas = Tbl!kelas End If txt.Text = strKelasEnd Sub

Sub KirimSMSNilai() On Error GoTo pesan Dim jenis As Integer Dim mt_pel As Integer Dim NISN(1000) As String Dim strNama(1000) As String Dim hp(1000) As String Dim strNilai As String Dim kd_Kelas As Integer

Dim strPesan As String DataForKirim = False jenis = cboJenisUlanganKirim.ListIndex mt_pel = cboMataPelajaranKirim.ListIndex BukaTabel "SELECT id AS [kode_kelas] FROM t_kelas WHERE kelas='" & txtKelasKirim.Text & "'" If Not Tbl.EOF Then kd_Kelas = Tbl!kode_kelas End If BukaTabel "SELECT nisn AS NO_INDUK,nama,hp AS NO_HP FROM t_siswa WHERE kelas=" & kd_Kelas Dim i As Integer i = 1 While Not Tbl.EOF NISN(i) = Tbl!NO_INDUK strNama(i) = Tbl!nama hp(i) = Tbl!NO_HP i = i + 1 Tbl.MoveNext Wend Dim j As Integer For j = 1 To i - 1 strNilai = "" BukaTabel "SELECT * FROM v_nilai WHERE nisn='" & NISN(j) & "' AND kelas='" & txtKelasKirim.Text & "' AND kd_jenis=" & jenis & " AND kd_matapelajaran=" & mt_pel While Not Tbl.EOF strNilai = strNilai & ";" & Tbl!nilai Tbl.MoveNext Wend If Len(strNilai) > 0 And hp(j) <> "0" Then DataForKirim = True strPesan = "NISN: " & NISN(j) & vbCrLf & "NAMA : " & strNama(j) & vbCrLf & _ "KELAS : " & txtKelasKirim.Text & vbCrLf & _ "NILAI " & cboJenisUlanganKirim.Text & cboMataPelajaranKirim.Text & " : " & Right(strNilai, Len(strNilai) - 1) lblProsesKirim.Caption = "Mengirim sms ke :" & strNama(j) & ", " & hp(j) 'MsgBox strPesan Call Send_Message(hp(j), strPesan, Maximum, True) SimpanPesanKeluar hp(j), strPesan End If Next j Exit Subpesan: MsgBox ErrorEnd Sub

Sub BuatGridInbox() With MSFInbox .RowHeightMin = 350 .Col = 0 .Row = 0 .Text = "ID" .CellFontBold = True .ColWidth(0) = 0 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1

.Row = 0 .Text = "No" .CellFontBold = True .ColWidth(1) = 400 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "No HP" .CellFontBold = True .ColWidth(2) = 2000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter

.Col = 3 .Row = 0 .Text = "Isi" .CellFontBold = True .ColWidth(3) = Me.Width - (.ColWidth(0) + .ColWidth(1) + .ColWidth(2)) .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End WithEnd SubSub TampilInbox(strTabel As String)

frameMuncul frameInbox MSFInbox.Width = frameInbox.Width - (900 + cmdDeleteInbox.Width) MSFInbox.Height = frameInbox.Height - 700 cmdDeleteInbox.Left = MSFInbox.Width + 700 cmdDeleteAllInbox.Left = cmdDeleteInbox.Left Dim baris As Integer Dim Nomor As Integer MSFInbox.Clear BuatGridInbox Nomor = 0 MSFInbox.Rows = 2 baris = 0

BukaTabel "SELECT * FROM " & strTabel & "" If Tbl.BOF Then MsgBox "Tabel Kosong!", vbOKOnly + vbInformation, "Perhatian" Exit Sub Else With Tbl Do While Not .EOF On Error Resume Next Nomor = Nomor + 1 baris = baris + 1 MSFInbox.Rows = baris + 1 Id_Ulangan = !ID MSFInbox.TextMatrix(baris, 0) = !ID MSFInbox.TextMatrix(baris, 1) = Nomor MSFInbox.TextMatrix(baris, 2) = !hp MSFInbox.TextMatrix(baris, 3) = !isi .MoveNext Loop End With End If Tbl.CloseEnd Sub

Sub BuatGridReportNilai() With msfUTS .RowHeightMin = 350 .Col = 0 .Row = 5 .Text = "No" .CellFontBold = True .ColWidth(0) = 500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1 .Row = 5 .Text = "NISN" .CellFontBold = True .ColWidth(1) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 5 .Text = "NAMA" .CellFontBold = True .ColWidth(2) = 4000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter

.Col = 3 .Row = 5 .Text = "PRAKTEK" .CellFontBold = True .ColWidth(3) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 4 .Row = 5 .Text = "LISAN" .CellFontBold = True .ColWidth(4) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 5 .Row = 5 .Text = "TERTULIS" .CellFontBold = True .ColWidth(5) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 6 .Row = 5 .Text = "RATA-RATA" .CellFontBold = True .ColWidth(6) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter Dim i As Integer Dim Judul As String

If frameReportUTS.Caption = "Nilai UTS" Then Judul = "DAFTAR NILAI MID SEMESTER " & Right(TITLE1.Caption, 1) Else Judul = "DAFTAR NILAI UJIAN AKHIR SEMESTER " & Right(TITLE1.Caption, 1) End If For i = 0 To 6 .TextMatrix(1, i) = Judul .TextMatrix(2, i) = "SD XAVERIUS 5 PALEMBANG" .TextMatrix(3, i) = cboMataPelajaranReportUTS.Text & " KELAS " & txtKelasReportUTS.Text Next i .MergeCells = flexMergeRestrictRows .MergeRow(1) = True .MergeRow(2) = True .MergeRow(3) = True .Row = 1 .Col = 0 .CellAlignment = flexAlignCenterCenter .Row = 2 .Col = 0 .CellAlignment = flexAlignCenterCenter .Row = 3 .Col = 0 .CellAlignment = flexAlignCenterCenter End WithEnd Sub

Sub TampilReportNilai() On Error Resume Next Dim baris As Integer Dim Nomor As Integer Dim kd_Kelas As Integer Dim strNISN(1000) As String Dim Rata_rata As Double msfUTS.Clear BuatGridReportNilai Nomor = 0 MSFInbox.Rows = 2 baris = 5

BukaTabel "SELECT id AS [kode_kelas] FROM t_kelas WHERE kelas='" & txtKelasReportUTS.Text & "'" If Not Tbl.EOF Then kd_Kelas = Tbl!kode_kelas End If Dim i As Integer i = 0 BukaTabel "SELECT nisn,nama FROM t_siswa WHERE kelas=" & kd_Kelas With Tbl While Not Tbl.EOF i = i + 1 strNISN(i) = !NISN baris = baris + 1 msfUTS.Rows = baris + 1 msfUTS.TextMatrix(baris, 0) = i msfUTS.TextMatrix(baris, 1) = !NISN msfUTS.TextMatrix(baris, 2) = !nama Tbl.MoveNext

Wend End With Dim j As Integer baris = 5 For j = 1 To i BukaTabel "SELECT * FROM v_nilai WHERE nisn='" & strNISN(j) & "' AND kd_jenis=" & JenisReport & " AND kd_matapelajaran=" & cboMataPelajaranReportUTS.ListIndex With Tbl baris = baris + 1 While Not Tbl.EOF If !kd_tipe = 0 Then msfUTS.TextMatrix(baris, 3) = !nilai ElseIf !kd_tipe = 1 Then msfUTS.TextMatrix(baris, 4) = !nilai ElseIf !kd_tipe = 2 Then msfUTS.TextMatrix(baris, 5) = !nilai End If .MoveNext Wend Rata_rata = (Val(msfUTS.TextMatrix(baris, 3)) + Val(msfUTS.TextMatrix(baris, 4)) + Val(msfUTS.TextMatrix(baris, 5))) / 3 Rata_rata = Format(Rata_rata, "#,###.##") If Len(str(Rata_rata)) = 3 Or Rata_rata = 0 Then msfUTS.TextMatrix(baris, 6) = Rata_rata & ".00" Else msfUTS.TextMatrix(baris, 6) = Rata_rata End If End With Next j 'cari rata-rata & max, min Dim NRata2P, NRata2L, NRata2T, NRata2R As Double Dim NMaxP, NMaxL, NMaxT, NMaxR As Double Dim NMinP, NMinL, NMinT, NMinR As Double Dim tempP, tempL, tempT, tempR As Double NRata2P = 0: NRata2L = 0: NRata2T = 0 NMaxP = 0: NMaxL = 0: NMaxT = 0: NMaxR = 0 NMinP = 100: NMinL = 100: NMinT = 100: NMinR = 100 For i = 6 To msfUTS.Rows - 6 tempP = msfUTS.TextMatrix(i, 3) tempL = msfUTS.TextMatrix(i, 4) tempT = msfUTS.TextMatrix(i, 5) tempR = msfUTS.TextMatrix(i, 6) NRata2P = NRata2P + tempP NRata2L = NRata2L + tempL NRata2T = NRata2T + tempT NRata2R = NRata2R + tempR 'Cari Nilai Maximum If Val(NMaxP) < Val(tempP) Then NMaxP = tempP If Val(NMaxL) < Val(tempL) Then NMaxL = tempL If Val(NMaxT) < Val(tempL) Then NMaxT = tempT If Val(NMaxR) < Val(tempR) Then NMaxR = tempR 'Cari Nilai Minimum If Val(NMinP) > Val(tempP) Then NMinP = tempP If Val(NMinL) > Val(tempL) Then NMinL = tempL If Val(NMinT) > Val(tempT) Then NMinT = tempT If Val(NMinR) > Val(tempR) Then NMinR = tempR

Next i NRata2P = NRata2P / (i - 6) NRata2L = NRata2L / (i - 6) NRata2T = NRata2T / (i - 6) NRata2R = NRata2R / (i - 6)

msfUTS.Rows = msfUTS.Rows + 4 baris = msfUTS.Rows - 3 msfUTS.TextMatrix(baris, 2) = "RATA-RATA" msfUTS.TextMatrix(baris, 3) = Format(NRata2P, "#,###.##") msfUTS.TextMatrix(baris, 4) = Format(NRata2L, "#,###.##") msfUTS.TextMatrix(baris, 5) = Format(NRata2T, "#,###.##") msfUTS.TextMatrix(baris, 6) = Format(NRata2R, "#,###.##") baris = msfUTS.Rows - 2 msfUTS.TextMatrix(baris, 2) = "NILAI TERTINGGI" msfUTS.TextMatrix(baris, 3) = Format(NMaxP, "#,###,##") msfUTS.TextMatrix(baris, 4) = Format(NMaxL, "#,###,##") msfUTS.TextMatrix(baris, 5) = Format(NMaxT, "#,###,##") msfUTS.TextMatrix(baris, 6) = Format(NMaxR, "#,###,##") baris = msfUTS.Rows - 1 msfUTS.TextMatrix(baris, 2) = "NILAI TERENDAH" msfUTS.TextMatrix(baris, 3) = Format(NMinP, "#,###,##") msfUTS.TextMatrix(baris, 4) = Format(NMinL, "#,###,##") msfUTS.TextMatrix(baris, 5) = Format(NMinT, "#,###,##") msfUTS.TextMatrix(baris, 6) = Format(NMinR, "#,###,##")

'atur rata-tengah

For j = 1 To i + 9 msfUTS.Row = j Dim z As Integer For z = 3 To 6 msfUTS.Col = z msfUTS.CellAlignment = flexAlignCenterCenter Next z Next jEnd SubPublic Sub MouseWheel(ByVal MouseKeys As Long, ByVal Rotation As Long, ByVal Xpos As Long, ByVal Ypos As Long) Dim NewValue As Long Dim Lstep As Single

On Error Resume Next

With MSFInbox Lstep = .Height / .RowHeight(0) Lstep = Int(Lstep) If Lstep < 10 Then Lstep = 10 End If If Rotation > 0 Then NewValue = .TopRow - Lstep If NewValue < 1 Then NewValue = 1 End If Else NewValue = .TopRow + Lstep If NewValue > .Rows - 1 Then

NewValue = .Rows - 1 End If End If .TopRow = NewValue End WithEnd Sub

Private Sub txtHP_KeyPress(keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub txtNISN_KeyPress(keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub txtNoPort_KeyPress(keyascii As Integer) OnlyNumber keyasciiEnd Sub

Private Sub txtPassword_KeyPress(keyascii As Integer) KarakterFalse keyasciiEnd Sub

Private Sub txtUsername_KeyPress(keyascii As Integer) KarakterFalse keyasciiEnd Sub

Sub GetColorStyle() Dim temp(4) As String On Error GoTo pesan BukaTabel "SELECT * FROM t_warna" If Not Tbl.EOF Then temp(1) = Tbl!warna_1 temp(2) = Tbl!warna_2 temp(3) = Tbl!warna_3 temp(4) = Tbl!warna_4 End If Text1.Text = temp(1) Text2.Text = temp(2) Text3.Text = temp(3) Text4.Text = temp(4) Exit Subpesan: MsgBox ErrorEnd Sub

Public Sub SimpanColorStyle() Dim str As String str = "UPDATE t_warna SET warna_1='" & Text1.Text & "', warna_2='" & Text2.Text & "', warna_3='" & Text3.Text & "', warna_4='" & Text4.Text & "' WHERE id=1" SaveData "t_warna", str, FalseEnd Sub

Sub BuatGridJmlDataKirim() With msfJmlDataKirim .RowHeightMin = 350 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True

.ColWidth(0) = 500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1 .Row = 0 .Text = "NISN" .CellFontBold = True .ColWidth(1) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "NAMA" .CellFontBold = True .ColWidth(2) = 2500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .Text = "HP" .CellFontBold = True .ColWidth(3) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End WithEnd Sub

Sub TampilDataJumKirim()

Dim baris As Integer Dim Nomor As Integer Dim idKelas As Integer msfJmlDataKirim.Clear BuatGridJmlDataKirim msfJmlDataKirim.Rows = 2 baris = 0

BukaTabel "Select id from t_kelas where kelas='" & txtKelasKirim.Text & "'" If Not Tbl.EOF Then idKelas = Tbl!ID Tbl.Close BukaTabel "SELECT * FROM t_siswa WHERE kelas=" & idKelas & " AND hp not like '" & 0 & "'" If Tbl.BOF Then MsgBox "Tabel Kosong!", vbOKOnly + vbInformation, "Perhatian" Exit Sub Else With Tbl Do While Not .EOF On Error Resume Next Nomor = Nomor + 1 baris = baris + 1 msfJmlDataKirim.Rows = baris + 1 msfJmlDataKirim.TextMatrix(baris, 0) = Nomor msfJmlDataKirim.TextMatrix(baris, 1) = !NISN msfJmlDataKirim.TextMatrix(baris, 2) = !nama msfJmlDataKirim.TextMatrix(baris, 3) = !hp .MoveNext

Loop End With End If Tbl.Close LabelJumlahData.Caption = baris & " orang."End Sub

Sub TampilNamaSiswa() 'hapus data yg tampil Dim i As Integer For i = 0 To 9 ListSiswa(i).Clear Next Dim idKelas As Integer BukaTabel "Select id as [id_kelas] from t_kelas where kelas='" & txtKelas.Text & "'" If Not Tbl.EOF Then idKelas = Tbl!id_kelas Else MsgBox "id kelas tidak ada" End If Tbl.Close BukaTabel "SELECT nisn,nama FROM t_siswa WHERE kelas=" & idKelas & "" i = -1 While Not Tbl.EOF i = i + 1 sNISN(i) = Tbl!NISN sNama(i) = Tbl!nama JumDataSiswa = i Tbl.MoveNext Wend c = 0 For i = 0 To UBound(sNISN) If i = 4 Or i = 8 Or i = 12 Or i = 16 Or i = 20 Or i = 24 Or i = 28 Or i = 32 Or i = 36 Or i = 40 Then c = c + 1 End If If sNISN(i) = "" Then Exit For ListSiswa(c).AddItem sNISN(i) & " | " & sNama(i) Next iEnd Sub

Sub TampilNilai(sJenis As Integer, sTipe As Integer, sPel As Integer) Me.MousePointer = vbHourglass Dim c As Integer For i = 0 To JumDataSiswa BukaTabel "SELECT id, nilai FROM v_nilai WHERE nisn='" & sNISN(i) & "' AND kd_tipe=" & sTipe & " AND kd_jenis=" & sJenis & " AND kd_matapelajaran=" & sPel c = 0 While Not Tbl.EOF c = c + 1 Select Case c Case 1: idNilai_1(i) = Tbl!ID T1(i).Text = Tbl!nilai Case 2: idNilai_2(i) = Tbl!ID T2(i).Text = Tbl!nilai Case 3: idNilai_3(i) = Tbl!ID

T3(i).Text = Tbl!nilai Case 4: idNilai_4(i) = Tbl!ID T4(i).Text = Tbl!nilai End Select Tbl.MoveNext Wend Next i Me.MousePointer = vbNormalEnd Sub

Sub ClearTXTNilai() For i = 0 To 39 T1(i).Text = "" T2(i).Text = "" T3(i).Text = "" T4(i).Text = "" NextEnd Sub

Sub SimpanDataNilai() Dim strSQL As String Dim JumDataNilai As Integer Dim idKelas As Integer BukaTabel "SELECT id FROM t_kelas WHERE kelas='" & txtKelas.Text & "'" If Not Tbl.EOF Then idKelas = Tbl!ID End If BukaTabel "DELETE FROM t_nilai WHERE kelas=" & idKelas & " AND mata_pelajaran=" & cboMataPelajaran.ListIndex & _ " AND jenis=" & cboJenisUlangan.ListIndex & " AND tipe=" & cboTipeUlangan.ListIndex & "" BukaTabel "SELECT * FROM t_nilai" If Not Tbl.EOF Then Tbl.MoveLast JumDataNilai = Tbl!ID Else JumDataNilai = 0 End If For i = 0 To JumDataSiswa If T1(i).Text <> "" Then JumDataNilai = JumDataNilai + 1 strSQL = "INSERT INTO t_nilai VALUES(" & JumDataNilai & ", '" & sNISN(i) & "'," & idKelas & "," & GetTahunPelajaran(0) & ", " & _ GetTahunPelajaran(1) & ", " & cboMataPelajaran.ListIndex & "," & cboJenisUlangan.ListIndex & ", " & _ cboTipeUlangan.ListIndex & "," & T1(i) & ")" SaveData "t_nilai", strSQL, False End If If T2(i).Text <> "" Then JumDataNilai = JumDataNilai + 1 strSQL = "INSERT INTO t_nilai VALUES(" & JumDataNilai & ", '" & sNISN(i) & "'," & idKelas & "," & GetTahunPelajaran(0) & ", " & _ GetTahunPelajaran(1) & ", " & cboMataPelajaran.ListIndex & "," & cboJenisUlangan.ListIndex & ", " & _ cboTipeUlangan.ListIndex & "," & T2(i) & ")" SaveData "t_nilai", strSQL, False End If

If T3(i).Text <> "" Then JumDataNilai = JumDataNilai + 1 strSQL = "INSERT INTO t_nilai VALUES(" & JumDataNilai & ", '" & sNISN(i) & "'," & idKelas & "," & GetTahunPelajaran(0) & ", " & _ GetTahunPelajaran(1) & ", " & cboMataPelajaran.ListIndex & "," & cboJenisUlangan.ListIndex & ", " & _ cboTipeUlangan.ListIndex & "," & T3(i) & ")" SaveData "t_nilai", strSQL, False End If If T4(i).Text <> "" Then JumDataNilai = JumDataNilai + 1 strSQL = "INSERT INTO t_nilai VALUES(" & JumDataNilai & ", '" & sNISN(i) & "'," & idKelas & "," & GetTahunPelajaran(0) & ", " & _ GetTahunPelajaran(1) & ", " & cboMataPelajaran.ListIndex & "," & cboJenisUlangan.ListIndex & ", " & _ cboTipeUlangan.ListIndex & "," & T4(i) & ")" SaveData "t_nilai", strSQL, False End If Next iEnd Sub

Sub BuatGridDataSiswa() With msfSiswa .RowHeightMin = 350 .Col = 0 .Row = 0 .Text = "NO" .CellFontBold = True .ColWidth(0) = 500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 1 .Row = 0 .Text = "NISN" .CellFontBold = True .ColWidth(1) = 1000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 2 .Row = 0 .Text = "NAMA" .CellFontBold = True .ColWidth(2) = 3000 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 3 .Row = 0 .Text = "TEMPAT LAHIR" .CellFontBold = True .ColWidth(3) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 4 .Row = 0 .Text = "TANGGAL LAHIR" .CellFontBold = True .ColWidth(4) = 1500 .AllowUserResizing = flexResizeColumns

.CellAlignment = flexAlignCenterCenter .Col = 5 .Row = 0 .Text = "JENIS KELAMIN" .CellFontBold = True .ColWidth(5) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 6 .Row = 0 .Text = "AGAMA" .CellFontBold = True .ColWidth(6) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 7 .Row = 0 .Text = "ORANG TUA" .CellFontBold = True .ColWidth(7) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 8 .Row = 0 .Text = "ALAMAT" .CellFontBold = True .ColWidth(8) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter .Col = 9 .Row = 0 .Text = "HP" .CellFontBold = True .ColWidth(9) = 1500 .AllowUserResizing = flexResizeColumns .CellAlignment = flexAlignCenterCenter End WithEnd Sub

Sub TampilDataSiswa() Dim baris As Integer Dim Nomor As Integer Dim idKelas As Integer msfSiswa.Clear BuatGridDataSiswa msfSiswa.Rows = 2 baris = 0

BukaTabel "Select id from t_kelas where kelas='" & cboKelasDataSiswa.Text & "'" If Not Tbl.EOF Then idKelas = Tbl!ID Tbl.Close BukaTabel "SELECT * FROM t_siswa WHERE kelas=" & idKelas If Tbl.BOF Then MsgBox "Tabel Kosong!", vbOKOnly + vbInformation, "Perhatian" Exit Sub

Else With Tbl Do While Not .EOF On Error Resume Next Nomor = Nomor + 1 baris = baris + 1 msfSiswa.Rows = baris + 1 msfSiswa.TextMatrix(baris, 0) = Nomor msfSiswa.TextMatrix(baris, 1) = !NISN msfSiswa.TextMatrix(baris, 2) = !nama msfSiswa.TextMatrix(baris, 3) = !tempat_lahir msfSiswa.TextMatrix(baris, 4) = !tgl_lahir msfSiswa.TextMatrix(baris, 5) = !jenis_kelamin msfSiswa.TextMatrix(baris, 6) = StringAgama(!agama) msfSiswa.TextMatrix(baris, 7) = !ortu msfSiswa.TextMatrix(baris, 8) = !alamat msfSiswa.TextMatrix(baris, 9) = !hp .MoveNext Loop End With End If Tbl.CloseEnd Sub

Sub ClearFormDataSiswa() txtNISN.Text = "" txtNama.Text = "" txtTempatLahir.Text = "" DTPicker1.value = Date cboJenisKelamin.ListIndex = -1 cboAgama.ListIndex = -1 txtOrangtua.Text = "" txtAlamat.Text = "" txtHP.Text = ""End Sub

Function CheckFormKosong() As Boolean CheckFormKosong = False If txtNama.Text = "" Then CheckFormKosong = True If txtTempatLahir.Text = "" Then CheckFormKosong = True If txtOrangtua.Text = "" Then CheckFormKosong = TrueEnd Function