Está en la página 1de 57

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 cbo.Clear cbo.AddItem cbo.AddItem cbo.AddItem cbo.AddItem cbo.AddItem End Function IsiAgama(cbo As ComboBox) "Islam" "Katolik" "Protestan" "Hindu" "Budha"

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 = "" ElseIf TypeOf ctrl Is ComboBox Then ctrl.ListIndex = -1 End If Next End 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 If End 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 = temp End Function Public Function StringKelamin(strListIndex As Integer) Select Case strListIndex Case 0: StringKelamin = "L" Case 1: StringKelamin = "P" End Select End Function

B. CODING PADA MOD_SMS.BAS Option Explicit Public Type SMSOUT sms_Status As String sms_Context As String End Type Public Enum SMS_LISTSTAT LS_UNREAD = 0 LS_READ = 1 LS_STORED_UNREAD = 2 LS_STORED_SENT = 3 LS_ALLMESSAGE = 4 LS_TEMPLATE = 16 End Enum Public Enum SMSType SMS_RECEIVED = 0 SMS_STATUS_REPORT = 2 SMS_SUBMIT = 1 SMS_NONE = -1 EMS_RECEIVED = 64 EMS_SUBMIT = 65 End Enum Private Enum EnumStatus Success = 0 NotSend = 96 NoResponseFromSME = 98 End Enum

Public Type BaseInfo SourceNumber DestinationNumber ReceivedDate ReceivedTime Text Tipe StatusFromReport DestinationReceivedDate End Type Public Enum ENUM_TP_SRI Request_SMS_Report = 32 No_SMS_Report = 0 End Enum Public Enum ENUM_TP_DCS DefaultAlphabet = 0 UCS2 = 8 End Enum Public Enum ENUM_TP_VALID_PERIOD OneHour = 11 ThreeHours = 29 SixHours = 71 TwelveHours = 143 OneDay = 167 OneWeek = 196 Maximum = 255 End Enum Type InfoElem Identifier Length Data End Type

As As As As As As As As

String String String String String SMSType EnumStatus String

As Byte As Byte As String

Enum ConnectMode cmCOM_Port = 1 cmInfrared = 2 End Enum Enum UseProtocol ATCommand = 1 NokiaFBus = 2 NokiaMBus = 3 End Enum Type SmsServer smsProviderName smsSubProvider smsSmsCenter smsTypeDevice smsProtocol smsPatameter smsPinCode smsAutoConnect smsDescription smsState smsDeviceName curProvider curDevice End Type

As As As As As As As As As As As As As

String String String ConnectMode UseProtocol String String Boolean String String String String Integer

Public Public Public Public

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

Function GetByte(ByRef PDUCode As String) As Byte On Error Resume Next Dim r As Byte r = Val("&H" & Mid(PDUCode, 1, 2)) PDUCode = Mid(PDUCode, 3) GetByte = r End Function Function GetString(ByRef PDUCode As String, ByVal Length As Integer) As String On Error Resume Next Dim r As String r = Mid(PDUCode, 1, Length) PDUCode = Mid(PDUCode, Length + 1) GetString = r End 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 = result End Function Function CharToArray(nstr As String) As String() On Error Resume Next Dim I As Integer, Data() As String ReDim Data(Len(nstr) - 1) As String For I = 1 To Len(nstr) Data(I - 1) = Mid(nstr, I, 1) Next I CharToArray = Data End Function Function Swap(ByRef TwoBitStr As String) As String On Error Resume Next Swap = StrReverse(TwoBitStr) End Function Function DecToHex(n, nLen As Integer) As String On Error Resume Next Dim h As String h = Hex(Val(n)) DecToHex = String(nLen - Len(h), "0") & h End Function

Function PadLeft(nstr As String, totalwidth As Integer, nChar As String) On Error Resume Next Dim addLen As Integer addLen = totalwidth - Len(nstr) If addLen > 0 Then PadLeft = String(addLen, nChar) & nstr ElseIf addLen = 0 Then PadLeft = nstr End If End Function Function CME_ErrorDesc(ErrNo As Integer, Optional PhoneType As String = "nokia") 'Select Case UCase(PhoneType) ' Case "NOKIA" ' Case "ERICSSON" 'End Select On Error Resume Next Select 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 Select End Function Function CMS_ErrorDesc(ErrNo As Integer, Optional PhoneType As String = "nokia") On Error Resume Next Select 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: Case 317: Case 318: Case 320: Case 321: Case 322: Case 330: Case 331: Case 332: Case 340: Case 500: Case 511: Case 512: End Select End Function

CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc CMS_ErrorDesc

= = = = = = = = = = = = =

"SIM PUK required" "SIM PIN2 required" "SIM PUK2 required" "Memory failure" "Invalid memory index" "Memory full" "SMSC address unknown" "No network service" "Network timeout" "No +CNMA acknowledgement expected" "Unknown error" "Range 256...511 reserved" "Manufacturer specific"

Function SplitSMSValue(nstr As String, Optional nDelimeter As String = ",") As Collection On Error Resume Next Dim 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 = res End Function Function ValidateNumber(nNomor As String) As String On Error Resume Next Dim 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 = Buff End Function

C. CODING PADA MODULE1.BAS Public Declare Function InitCommonControls Lib "COMCTL32.DLL" () As Long Public DBKoneksi As ADODB.Connection

Public Tbl As ADODB.Recordset Public NoPort As Integer Public Public Public Public Public strUserName As String strPassword As String strNIPPegawai As String strNamaPegawai As String StatusPegawai As Integer

Sub Main() frmMenu.Show frmLogin.Show vbModal End 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 If End 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, adLockOptimistic End 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.", vbInformation End 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 Function pesan: 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 Function pesan: MsgBox Error$ End Function Public Sub SimpanPort(sText As String) SaveData "t_port", "UPDATE t_port set port=" & Val(sText), False End 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 Dim Dim Dim Dim objXL As New Excel.Application wbXL As New Excel.Workbook wsXL As New Excel.Worksheet intRow As Integer ' counter 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 Next End Sub

D. CODING PADA TextToPDU.cls Option Explicit Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim SC_Number As String 'Note the plus! TP_MTI As Byte '= 1 TP_RD As Byte '= 0 TP_VPF As Byte '= 16 TP_VP As Byte '= 16 TP_UDHI As Byte TP_SRR As Byte TP_MR As Integer TP_DA As String TP_PID As Byte TP_DCS As Byte vTP_VP As Byte TP_UDL As Integer TP_UD As String

Private TotalMessages As Integer Public Property Get ServiceCenterNumber() As String ServiceCenterNumber = SC_Number End 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_Number End Property Public Property Get TP_Status_Report_Request() As ENUM_TP_SRI TP_Status_Report_Request = TP_SRR End Property Public Property Let TP_Status_Report_Request(value As ENUM_TP_SRI) TP_SRR = value End Property Public Property Get TP_Message_Reference() As Integer TP_Message_Reference = TP_MR End Property Public Property Let TP_Message_Reference(value As Integer) TP_MR = value End Property Public Property Get TP_Destination_Address() As String TP_Destination_Address = TP_DA End Property Public 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)) Next End Property Public Property Get TP_Data_Coding_Scheme() As ENUM_TP_DCS TP_Data_Coding_Scheme = TP_DCS End Property Public Property Let TP_Data_Coding_Scheme(value As ENUM_TP_DCS) TP_DCS = value End Property Public Property Get TP_Validity_Period() As ENUM_TP_VALID_PERIOD TP_Validity_Period = TP_VP End Property Public Property Let TP_Validity_Period(value As ENUM_TP_VALID_PERIOD) TP_VP = value End Property Public Property Get TP_User_Data() As String TP_User_Data = TP_UD End 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 Select End 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.DefaultAlphabet End Function Public Function GetSMSPDUCode(Optional isMsgRec As Boolean = False) As String On 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 = PDUCode End Function Private Function ByteToHex(ByVal aByte As Byte) As String On Error Resume Next Dim result As String result = DecToHex(aByte, 2) ByteToHex = result End Function Private Function Encode7Bit(ByVal Content As String) As String On 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 = result End Function Private Function BitsToHex(ByVal Bits As String) As String On 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 = result End Function Private Function CharTo7Bits(ByVal c As String) As String On 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 = result End Function Private Function EncodeUCS2(ByVal Content As String) As String On 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 = result End Function Private Function FirstOctet() As String On Error Resume Next

FirstOctet = ByteToHex(TP_MTI + TP_VPF + TP_SRR + TP_UDHI) End Function Private Sub Class_Initialize() TP_MTI = 1 TP_RD = 0 TP_VPF = 16 TP_VP = 16 End Sub E. CODING PADA PDUToText.cls Option Explicit Enum EnumStatus Success = 0 NotSend = 96 NoResponseFromSME = 98 End Enum Dim Status As EnumStatus Dim SrcAddressLength As Byte Dim SrcAddressType As Byte Dim SrcAddressValue As String Dim Dim Dim Dim Dim Dim TP_MR As Byte TP_VP As Byte TP_SCTS As Date TP_DP As Date TP_UDHL As Byte IE() As InfoElem

Dim DesAddressLength As Byte Dim DesAddressType As Byte Dim DesAddressValue As String Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim Dim SCAddressLength As Byte SCAddressType As Byte SCAddressValue As String FirstOctet As Byte TP_PID As Byte TP_DCS As Byte TP_UDL As Byte TP_UD As String Text As String Tipe As SMSType UserData As String strBool As Boolean 'Service 'Service 'Service 'See GSM Center Address length Center Type[See GSM 03.40] Center nuber 03.40

Dim GetSmsContent As BaseInfo 'Get date from SCTS format Private Function GetDate(ByRef SCTS As String) As Date On 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 & ":" & second End Function 'Get phone address Private Function GetAddress(ByRef Address As String) As String On 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 If End Function Private Function GetSMSType(ByVal PDUCode As String) As SMSType On 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 + t2 End Function Private Function InvertHexString(ByVal HexString As String) As String On 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 = result End Function Private Function ByteToBinary(ByVal Dec As Byte) As String On 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 Integer On Error Resume Next Dim bin As String, n As String, nil As String, I As Integer bin = "" 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 & nil Next BinaryToInt = Val("&H" & nil) End Function Private Function Decode7Bit(ByVal str7BitCode As String, ByVal charCount As Integer) As String On 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 = result End 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 = Code End 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 Sub Function GetIsiSms(PDUCode As String, Optional OnlyReport As Boolean = False) As Boolean On 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 With Exit Function Salah: MsgBox Error End Function Property Let NoPDUHeader(value As Boolean) strBool = value End Property Property Get NoPDUHeader() As Boolean NoPDUHeader = strBool End Property Public Property Get GetSourceNumber() As String GetSourceNumber = GetSmsContent.SourceNumber End Property Public Property Get GetDestinationNumber() As String GetDestinationNumber = GetSmsContent.DestinationNumber End Property Public Property Get GetReceivedDate() As String GetReceivedDate = GetSmsContent.ReceivedDate End Property Public Property Get GetText() As String GetText = GetSmsContent.Text End Property Public Property Get GetType() As SMSType GetType = GetSmsContent.Tipe End Property Public Property Get GetStatusFromReport() As EnumStatus GetStatusFromReport = GetSmsContent.StatusFromReport End Property Public Property Get GetDestinationReceivedDate() As String GetDestinationReceivedDate = GetSmsContent.DestinationReceivedDate End Property Public Property Get GetReceivedTime() As String GetReceivedTime = GetSmsContent.ReceivedTime End Property

F. CODING PADA frmLogin.FRM

Private Sub cmdQuit_Click() Unload frmLogin Unload frmMenu End End 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 If End Sub Private Sub Form_Initialize() InitCommonControls End Sub Private Sub Form_Load() Me.BorderStyle = vbBSNone Me.BackColor = &HFFFFFF Label1.ForeColor = vbWhite Label2.ForeColor = vbWhite txtUsername.ForeColor = vbBlue txtUsername.ForeColor = vbBlue End Sub Private Sub Form_Resize() Image1.Picture = LoadPicture(App.Path & "/Picture/detroit-lions.jpg") Image1.Width = Me.Width - 200 Image1.Height = Me.Height - 200 End Sub Private Sub txtPassword_GotFocus() SelectAll txtPassword End Sub Private Sub txtPassword_KeyPress(keyascii As Integer) KarakterFalse keyascii End Sub Private Sub txtUsername_GotFocus() SelectAll txtUsername End Sub Private Sub txtUsername_KeyPress(keyascii As Integer)

KarakterFalse keyascii End Sub G. CODING PADA frmMenu.frm Private Declare Function Inp Lib "inpout32.dll" _ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Private Declare Sub Out Lib "inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal value As Integer) Public Port1 As Integer Public MyState As Boolean Public OK As Boolean Public Ring As Boolean Public Error As Boolean Public Greater_Sign As Boolean Public Message_Store As Boolean Public Message_Buffer As String Public SMS_TelNumber As String Public SMS_MsgNumber As String Public SMS_Message As String Public SMS_Center As String Dim SMS_Break() As String Public i As Integer Public TerminateAll As Boolean Public myCommand As New Collection Dim Dim Dim Dim Dim Dim Dim sNISN(40) As String sNama(40) As String JumDataSiswa As Integer idNilai_1(40), idNilai_2(40), idNilai_3(40), idNilai_4(40) As Integer DataChanged As Boolean DataNew As Boolean 'untuk tambah data siswa mt_pel As String

Dim baris As Integer Dim strKelas As String Dim DataForKirim As Boolean Dim JenisReport As Integer Const 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 ByVal ByVal ByVal ByVal

DestNumber As String, _ DataCodingScheme As ENUM_TP_DCS, _ ValidPeriod As ENUM_TP_VALID_PERIOD, _ MsgReference As Integer, _ StatusReport As Boolean) As String

On Error Resume Next Dim Tipe As Integer '0 Untuk SMS;1 Untuk ConcatenatedShortMessage Dim result As String Dim 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 = result End 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 Boolean Dim myPDU As TextToPDU, hPDU As String Dim lenFooter As Integer Dim addmyFoot As String 'Footer Dim 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 If End Function Sub 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 Data End 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 = True Dim 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 = False End Function Public Function Parse_SMS() As Boolean Dim StartPoint As Long Dim EndPoint As Long Dim Buffer1 As String Dim 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 = False End 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 String Dim p As String 'parameter /keyword awal Dim NISN As String 'nomor induk siswa Dim pel As Integer 'matapelajaran Dim sms_balas As String Dim jenis As Integer 'jenis ulangan Dim 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 If

akhir: tmrHP.Enabled = True End 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 If End 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 Select End Sub Private Sub TungguRespon() Me.MousePointer = vbHourglass Dim 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 = vbNormal End 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 Sub Salah: lblKon.Caption = "Disconnected" lblKon2.Caption = "Disconnected" shapeCon.BackColor = vbRed

tmrHP.Enabled = False If MSComm1.PortOpen Then MSComm1.PortOpen = False End Sub Private Sub ApClose_Click() Unload Me End End Sub Private Sub ApClose_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) bgAp.Visible = True bgAp.Left = ApClose.Left End Sub Private Sub ApMinimized_Click() Me.WindowState = 1 End Sub Private Sub ApMinimized_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) bgAp.Visible = True bgAp.Left = ApMinimized.Left End Sub Private Sub cboJenisUlangan_Click() ClearTXTNilai TampilNilai cboJenisUlangan.ListIndex, cboTipeUlangan.ListIndex, cboMataPelajaran.ListIndex DataChanged = False End Sub Private Sub cboKelasDataSiswa_Click() LabelJudulSiswa.Caption = "DATA SISWA SD XAVERIUS 5 KELAS " & cboKelasDataSiswa.Text TampilDataSiswa DataNew = True ClearFormDataSiswa End Sub Private Sub cboKelasKepSek_Click() txtKelasReportUTS.Text = cboKelasKepSek.Text End Sub Private Sub cboMataPelajaran_Click() ClearTXTNilai TampilNilai cboJenisUlangan.ListIndex, cboTipeUlangan.ListIndex, cboMataPelajaran.ListIndex DataChanged = False End Sub

Private Sub cboMataPelajaranReportUTS_Click() TampilReportNilai End 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 If End Sub Private Sub cboTipeUlangan_Click() ClearTXTNilai TampilNilai cboJenisUlangan.ListIndex, cboTipeUlangan.ListIndex, cboMataPelajaran.ListIndex DataChanged = False End Sub Private Sub cmdBatalSetting_Click() GetColorStyle End Sub Private Sub cmdCekPulsa_Click() Me.MousePointer = vbHourglass sendATC "at+cusd=1," & Chr(34) & "*888#" & Chr(34) & ",15" Me.MousePointer = vbNormal End 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 If End Sub Private Sub cmdDeleteAllInbox_Click() If frameInbox.Caption = "Inbox" Then HapusSemuaPesan "t_inbox" Else HapusSemuaPesan "t_sent" End If End 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 If

End Sub Private Sub cmdDeleteInbox_Click() If frameInbox.Caption = "Inbox" Then HapusPesan "t_inbox" Else HapusPesan "t_sent" End If End 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 If End 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 If End Sub Private Sub cmdNewData_Click() DataNew = True ClearFormDataSiswa txtNISN.Enabled = True txtNISN.SetFocus End Sub Private Sub cmdOK_Click() SimpanPort txtNoPort.Text End Sub Private Dim Dim Dim Dim Dim Dim Dim Sub cmdPrint_Click() i As Integer j As Integer strGaris As String str1 As String str2 As String pjg As Integer 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.EndDoc End Sub Private Sub cmdPrintToExcel_Click() FlexGrid_To_Excel msfUTS, msfUTS.Rows, msfUTS.Cols, 2, frameReportUTS.Caption End 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 If End Sub

Private Sub cmdSaveSetting_Click() SimpanColorStyle End Sub Private Sub cmdSend_Click() If txtPhoneNumber.Text = "" Or txtMessage.Text = "" Then Exit Sub Else Send_Message txtPhoneNumber.Text, txtMessage.Text, Maximum, True End If End 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 If End 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 If End Sub

Private Sub Command1_Click() ListSiswa(0).AddItem "TExt" ListSiswa(1).AddItem "TExt" ListSiswa(2).AddItem "TExt" End Sub Private Dim Dim Dim Dim Sub cmdSimpanSiswa_Click() strSQL As String idKelas As Integer sKelamin As String 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 = True End Sub Private Sub Form_Initialize()

InitCommonControls End 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 T2(i).Alignment T3(i).Alignment T4(i).Alignment T1(i).MaxLength T2(i).MaxLength T3(i).MaxLength T4(i).MaxLength Next

= = = = = = = =

1 1 1 1 2 2 2 2

IsiAgama cboAgama IsiKelamin cboJenisKelamin End 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

Next End 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 With End 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 If End Sub Private Sub framePilihReport_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseKeluar End Sub Private Sub imgTitle_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseKeluar End 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 Next End Sub Private Sub imgTitleBar_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) bgAp.Visible = False End 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 If End Sub Private Sub lblMenuDataSiswa_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuDataSiswa.ForeColor = vbRed End 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 = vbRed End Sub Private Sub lblMenuLogOut_Click() frameMuncul lblUser.Caption = "| USER :" frmLogin.Show vbModal End Sub Private Sub lblMenuLogOut_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuLogOut.ForeColor = vbRed End 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 = vbRed End 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 If End Sub Private Sub lblMenuNilaiSiswa_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuNilaiSiswa.ForeColor = vbRed End 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 If End Sub Private Sub lblMenuNilaiUAS_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuNilaiUAS.ForeColor = vbRed End 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 If End Sub Private Sub lblMenuNilaiUTS_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuNilaiUTS.ForeColor = vbRed End Sub Private Sub lblMenuReport_Click() With framePilihReport .BackColor = vbYellow .Left = lblMenuReport.Left If .Visible = False Then .Visible = True Else .Visible = False End If End With End Sub Private Sub lblMenuReport_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuReport.ForeColor = vbRed End 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 TampilDataJumKirim End Sub Private Sub lblMenuSendMessage_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuSendMessage.ForeColor = vbRed End 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 = vbRed End 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 = NoPort

End Sub Private Sub lblMenuSetting_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) lblMenuSetting.ForeColor = vbRed End 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 If End 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 Case 2: posisi = ListSiswa(2).ListIndex Case 3: posisi = ListSiswa(3).ListIndex Case 4: posisi = ListSiswa(4).ListIndex Case 5: posisi = ListSiswa(5).ListIndex Case 6: posisi = ListSiswa(6).ListIndex Case 7: posisi = ListSiswa(7).ListIndex Case 8: posisi = ListSiswa(8).ListIndex Case 9: posisi = ListSiswa(9).ListIndex End Select T1(posisi).BackColor T2(posisi).BackColor T3(posisi).BackColor T4(posisi).BackColor End Sub Private Sub MSComm1_OnComm() On Error Resume Next Static CEvent As String Dim 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 = = = = &H80000003 &H80000003 &H80000003 &H80000003

+ + + + + + + + +

4 8 12 16 20 24 28 32 36

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 Select End 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 Next End 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 If End Sub Private Sub T1_Change(Index As Integer) DataChanged = True End Sub Private Sub T1_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyascii End Sub Private Sub T2_Change(Index As Integer) DataChanged = True End Sub Private Sub T2_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyascii End Sub Private Sub T3_Change(Index As Integer) DataChanged = True End Sub Private Sub T3_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyascii End Sub Private Sub T4_Change(Index As Integer) DataChanged = True End Sub Private Sub T4_KeyPress(Index As Integer, keyascii As Integer) OnlyNumber keyascii End Sub Private Sub Text1_Change() GantiStyleBG "fra", Text1.Text, True End Sub Private Sub Text2_Change() GantiStyleBG "La", Text2.Text, False End Sub Private Sub Text3_Change() GantiStyleBG "cmd", Text3.Text, True End Sub Private Sub Text4_Change() On Error Resume Next Me.BackColor = Text4.Text End 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 If End Sub Private Sub TmrHP_Timer() If myCommand.Count > 0 Then sendATC CStr(myCommand(1)(0)), CStr(myCommand(1)(1)) myCommand.Remove (1) End If End 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, False End 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, False End Sub Public 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 If End Function Sub 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 Me End Sub Private Sub tmrStatus_Timer() lblJam.Caption = "JAM : " & Time End 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 If End Sub Private Sub txtConfirm_KeyPress(keyascii As Integer) KarakterFalse keyascii End 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 = strKelas End Sub Sub KirimSMSNilai() On Error GoTo pesan

Dim Dim Dim Dim Dim Dim Dim Dim

jenis As Integer mt_pel As Integer NISN(1000) As String strNama(1000) As String hp(1000) As String strNilai As String kd_Kelas As Integer 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 Sub pesan: MsgBox Error End 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 With End Sub Sub 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.Close End 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 With End 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, Dim NMaxP, NMaxL, NMaxT, NMaxR Dim NMinP, NMinL, NMinT, NMinR Dim tempP, tempL, tempT, tempR

NRata2R As Double As Double As Double 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, tempL = msfUTS.TextMatrix(i, tempT = msfUTS.TextMatrix(i, tempR = msfUTS.TextMatrix(i, NRata2P = NRata2P + tempP NRata2L = NRata2L + tempL NRata2T = NRata2T + tempT NRata2R = NRata2R + tempR

3) 4) 5) 6)

'Cari Nilai Maximum If Val(NMaxP) < Val(tempP) Then NMaxP = tempP If Val(NMaxL) < Val(tempL) Then NMaxL = tempL

If Val(NMaxT) < Val(tempL) If Val(NMaxR) < Val(tempR) 'Cari Nilai Minimum If Val(NMinP) > Val(tempP) If Val(NMinL) > Val(tempL) If Val(NMinT) > Val(tempT) If Val(NMinR) > Val(tempR) Next i NRata2P NRata2L NRata2T NRata2R

Then NMaxT = tempT Then NMaxR = tempR Then Then Then Then NMinP NMinL NMinT NMinR = = = = tempP tempL tempT tempR

= = = =

NRata2P NRata2L NRata2T NRata2R

/ / / /

(i (i (i (i

6) 6) 6) 6) 4 = = = = = "RATA-RATA" Format(NRata2P, Format(NRata2L, Format(NRata2T, Format(NRata2R,

msfUTS.Rows = msfUTS.Rows + baris = msfUTS.Rows - 3 msfUTS.TextMatrix(baris, 2) msfUTS.TextMatrix(baris, 3) msfUTS.TextMatrix(baris, 4) msfUTS.TextMatrix(baris, 5) msfUTS.TextMatrix(baris, 6) baris = msfUTS.Rows - 2 msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, baris = msfUTS.Rows - 1 msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris, msfUTS.TextMatrix(baris,

"#,###.##") "#,###.##") "#,###.##") "#,###.##")

2) 3) 4) 5) 6)

= = = = =

"NILAI TERTINGGI" Format(NMaxP, "#,###,##") Format(NMaxL, "#,###,##") Format(NMaxT, "#,###,##") Format(NMaxR, "#,###,##")

2) 3) 4) 5) 6)

= = = = =

"NILAI TERENDAH" Format(NMinP, "#,###,##") Format(NMinL, "#,###,##") Format(NMinT, "#,###,##") 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 j End Sub Public 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 With End Sub

Private Sub txtHP_KeyPress(keyascii As Integer) OnlyNumber keyascii End Sub Private Sub txtNISN_KeyPress(keyascii As Integer) OnlyNumber keyascii End Sub Private Sub txtNoPort_KeyPress(keyascii As Integer) OnlyNumber keyascii End Sub Private Sub txtPassword_KeyPress(keyascii As Integer) KarakterFalse keyascii End Sub Private Sub txtUsername_KeyPress(keyascii As Integer) KarakterFalse keyascii End 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 Sub pesan: MsgBox Error End 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, False End 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 With End 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, msfJmlDataKirim.TextMatrix(baris, msfJmlDataKirim.TextMatrix(baris, msfJmlDataKirim.TextMatrix(baris, .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

0) 1) 2) 3)

= = = =

Nomor !NISN !nama !hp

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 i End 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 = vbNormal End Sub Sub ClearTXTNilai() For i = 0 To 39 T1(i).Text = T2(i).Text = T3(i).Text = T4(i).Text = Next End 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 & ", "'," & 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 & ", "'," & 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 & ", "'," & idKelas & "," & GetTahunPelajaran(0) & ", " & _ GetTahunPelajaran(1) & ", " & cboMataPelajaran.ListIndex & cboJenisUlangan.ListIndex & ", " & _ cboTipeUlangan.ListIndex & "," & T4(i) & ")" SaveData "t_nilai", strSQL, False End If Next i End 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

'" & sNISN(i) & "," &

'" & sNISN(i) & "," &

'" & sNISN(i) & "," &

.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 With End 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 If Tbl.BOF Then MsgBox "Tabel Kosong!", vbOKOnly + 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, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, msfSiswa.TextMatrix(baris, .MoveNext Loop End With End If Tbl.Close End 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 = True End Function kelas=" & idKelas vbInformation, "Perhatian"

0) 1) 2) 3) 4) 5) 6) 7) 8) 9)

= = = = = = = = = =

Nomor !NISN !nama !tempat_lahir !tgl_lahir !jenis_kelamin StringAgama(!agama) !ortu !alamat !hp

También podría gustarte