Jumat, 27 Januari 2012

Jawaban Soal 3 (SITI MUALIMAH)

PROGRAM SERVER

Dim ClientIndex As Byte
Dim cRequest As Integer
Dim cData As String
Dim i As Integer
Dim iGD As Integer

Sub MulaiServer()
        WS(0).LocalPort = 3000
        WS(0).Listen
        cRequest = 1
        ClientIndex = 1
End Sub

Private Sub Form_Load()
        MulaiServer
        GD.Rows = 41
        For i = 1 To 40
            GD.Col = 0
            GD.Row = i
            GD.Text = i
        Next i
        iGD = 1
End Sub

Private Sub Timer1_Timer()

    For i = 1 To GD.Rows - 1
        GD.Row = i
        GD.Col = 4
        If GD.Text = "START" Then
            GD.Col = 3
            GD.Text = Time
        End If
    Next i
End Sub

Private Sub Timer2_Timer()
WS.SendData "PAKAI-" & Pakai.Value & "/" & 3000
End Sub

Private Sub WS_ConnectionRequest(index As Integer, ByVal requestID As Long)
        Load WS(cRequest)
        WS(cRequest).Close
        WS(cRequest).Accept requestID
        cRequest = cRequest + 1 '
Timer1.Enabled = True
Timer2.Enabled = True

End Sub

Private Sub WS_DataArrival(index As Integer, ByVal bytesTotal As Long)
        WS(index).GetData cData, vbString, bytesTotal
        Call CekData(index)
       
End Sub

Sub CekData(index)
        Dim kata() As String
        kata = Split(cData, "-")
        Select Case kata(0)
        Case "START"
                        GD.Row = iGD
                        GD.Col = 1
                        GD.Text = kata(1) 'WS(index).RemoteHostIP
                        GD.Col = 2
                        GD.Text = Time
                        GD.Col = 4
                        GD.Text = "START"
                        GD.Col = 5
                        GD.Text = kata(2)
                        iGD = iGD
        Case "STOP"
            For i = 1 To GD.Rows - 1
                GD.Row = i
                GD.Col = 1
                If GD.Text = kata(1) Then
                        GD.Col = 4
                        GD.Text = "STOP"
                End If
            Next i
        End Select
End Sub
       
Private Sub WS_Error(index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
        WS(index).Close
End Sub

PROGRAM CLIENT

Dim IPS As String
Dim User As String

Private Sub Command1_Click()
    WS.SendData "START-" & User & "-Isna"
End Sub

Private Sub Command2_Click()
    WS.SendData "STOP-" & User
End Sub

Private Sub Form_Load()
    IPS = "127.0.0.1"
    User = WS.LocalIP
    WS.Connect IPS, 3000
End Sub

Private Sub WS_DataArrival(ByVal bytesTotal As Long)
WS.GetData xKirim, vbString, bytesTotal
Call CheckData
End Sub

Sub CheckData()
xdata1 = Split(xKirim, "-")
xdata2 = Split(xdata1(1), "/")

Select Case xdata1(0)
    Case "PAKAI"
    mulai.Value = xdata2(0)
    selesai.Value = xdata2(1)
    pakai.Value = xdata2(2)
    biaya.Text = (Val(Hour(pakai.Value) * 60) + Val(Minute(pakai.Value) * 50))
    End Select

End Sub

Jawaban Soal 2 (SITI MUALIMAH)

LISTING PROGRAM

PROGRAM SERVER

MODUL

Public Db As New ADODB.Connection
Public rs As New ADODB.Recordset
Public rs2 As New ADODB.Recordset
Public sql As String

Sub OPENDB()
If Db.State = adStateOpen Then Db.Close
Db.CursorLocation = adUseClient
Db.Open " Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BelajarServer\Test.mdb;Persist Security Info=False "
End Sub

Sub ClearFORM(f As Form)
Dim ctl As Control
For Each ctl In f
    If TypeOf ctl Is TextBox Then ctl.Text = ""
    If TypeOf ctl Is ComboBox Then ctl.Text = ""
Next
End Sub

Sub Center(f As Form)
f.Move (Screen.Width - f.Width) / 2, (Screen.Height - f.Height) / 4
End Sub

Sub RubahCMD(f As Form, L0 As Boolean, L1 As Boolean, L2 As Boolean, L3 As Boolean)
f.cmdproses(0).Enabled = L0
f.cmdproses(1).Enabled = L1
f.cmdproses(2).Enabled = L2
f.cmdproses(3).Enabled = L3
End Sub

PROGRAM FORM BARANG
Sub hapus()
kode.Enabled = True
ClearFORM Me
Call RubahCMD(Me, True, False, False, False)
cmdproses(1).Caption = "&Simpan"
End Sub

Sub ProsesDB(Log As Byte)
Select Case Log

Case 0
sql = "insert into Barang(kode,nama,harga)" & _
"values('" & kode.Text & _
"','" & nama.Text & _
"','" & harga.Text & "')"

Case 1
sql = "update Barang set nama='" & nama.Text & "'," & _
"harga= '" & harga.Text & "'" & _
"where kode='" & kode.Text & "'"

Case 2
sql = "delete from Barang where kode='" & kode.Text & "'"
End Select
 MsgBox "Pemrosesan record database telah berhasil...!", vbInformation, "data Barang"
 Db.BeginTrans
 Db.Execute sql, adCmdTable
 Db.CommitTrans
 Call hapus
 Adodc1.Refresh
 kode.SetFocus

End Sub

Sub TampilBarang()
On Error Resume Next
kode.Text = rs!kode
nama.Text = rs!nama
harga.Text = rs!harga

End Sub


Private Sub cmdproses_Click(Index As Integer)
Select Case Index
Case 0
    Call hapus
    kode.SetFocus
Case 1
    If cmdproses(1).Caption = "&Simpan" Then
    Call ProsesDB(0)
    Else
    Call ProsesDB(1)
    End If
Case 2
    X = MsgBox("Yakin RECORD Barang akan dihapus...!", vbQuestion + vbYesNo, "Barang")
    If X = vbYes Then ProsesDB 2
    Call hapus
    kode.SetFocus
Case 3
    Call hapus
    kode.SetFocus
Case 4
    Unload Me
    End Select
   
End Sub


Private Sub Form_Load()
Call OPENDB
Call hapus
MulaiServer
End Sub

Private Sub kode_keypress(keyascii As Integer)
If keyascii = 13 Then
    If kode.Text = "" Then
        MsgBox "Masukkan Kode Barang! ", vbInformation, "Barang"
        kode.SetFocus
        Exit Sub
    End If
    sql = "SELECT * FROM Barang WHERE Kode='" & kode.Text & "' "
    If rs.State = adStateOpen Then rs.Close
    rs.Open sql, Db, adOpenDynamic, adLockOptimistic
    If rs.RecordCount <> 0 Then
        TampilBarang
        Call RubahCMD(Me, False, True, True, True)
        cmdproses(1).Caption = "&Edit"
       
        kode.Enabled = False
    Else
        X = kode.Text
        Call hapus
        kode.Text = X
            Call RubahCMD(Me, False, True, False, True)
            cmdproses(1).Caption = "&Simpan"
    End If
    nama.SetFocus
End If
End Sub

Sub MulaiServer()
WS.LocalPort = 1000
WS.Listen

End Sub

Private Sub ws_connectionrequest(ByVal requestid As Long)
WS.Close
WS.Accept requestid
Me.Caption = "server-client" & WS.RemoteHostIP & "connect"
End Sub

Private Sub ws_dataarrival(ByVal bytestotal As Long)
    Dim xKirim As String
    Dim xData1() As String
    Dim xData2() As String
   
    WS.GetData xKirim, vbString, bytestotal
   
    xData1 = Split(xKirim, "-")
   
    Select Case xData1(0)
        Case "SEARCH"
            sql = "SELECT * FROM Barang WHERE Kode='" & xData1(1) & "' "
            If rs.State = adStateOpen Then rs.Close
            rs.Open sql, Db, adOpenDynamic, adLockOptimistic
            If rs.RecordCount <> 0 Then
                WS.SendData "RECORD-" & rs!nama & "/" & rs!harga
            Else
                WS.SendData "NOTHING-DATA"
            End If
           
        Case "INSERT"
            Db.BeginTrans
            Db.Execute xData1(1), adCmdTable
            Db.CommitTrans
            WS.SendData " INSERT-xxx"
            Adodc1.Refresh
           
         Case "DELETE"
            sql = " Delete * from Barang " & _
                " where Kode = '" & xData1(1) & "' "
                Db.BeginTrans
                Db.Execute sql, adCmdTable
                Db.CommitTrans
                Adodc1.Refresh
                WS.SendData "DEL-xxx"
       
        Case "UPDATE"
            Db.BeginTrans
            Db.Execute xData1(1), adCmdTable
            Db.CommitTrans
            WS.SendData "EDIT-xxx"
            Adodc1.Refresh
    End Select
End Sub


PROGRAM CLIENT

MODUL
 Public SQL As String

Sub ClearFORM(f As Form)
Dim ctl As Control
For Each ctl In f
    If TypeOf ctl Is TextBox Then ctl.Text = ""
    If TypeOf ctl Is ComboBox Then ctl.Text = ""
Next
End Sub

Sub Center(f As Form)
f.Move (Screen.Width - f.Width) / 2, (Screen.Height - f.Height) / 4
End Sub

Sub RubahCMD(f As Form, L0 As Boolean, L1 As Boolean, L2 As Boolean, L3 As Boolean)
f.CmdProses(0).Enabled = L0
f.CmdProses(1).Enabled = L1
f.CmdProses(2).Enabled = L2
f.CmdProses(3).Enabled = L3
End Sub


PROGRAM FORM BARANG
Dim IPServer As String

Sub Hapus()
    Kode.Enabled = True
    ClearFORM Me
    Call RubahCMD(Me, True, False, False, False)
    CmdProses(1).Caption = "&Simpan"
End Sub

Sub ProsesDB(Log As Byte)
Select Case Log
    Case 0
        SQL = "INSERT INTO Barang(Kode,Nama,Harga)" & _
        "values('" & Kode.Text & _
        "','" & Nama.Text & _
        "','" & Harga.Text & "')"
    Case 1
        SQL = "UPDATE Barang Set Nama='" & Nama.Text & "'," & _
            "Harga='" & Harga.Text & "'," & _
            "where Kode='" & Kode.Text & "'"
    Case 2
        SQL = " DELETE FROM Barang WHERE Kode='" & Kode.Text & "'"
    End Select
    MsgBox "Pemrosesan RECORD Database telah berhasil....!", vbInformation, "Data Barang"
    Call Hapus
    Kode.SetFocus
End Sub

Sub MulaiKoneksi()
IPServer = "192.168.10.1"
IPClient = WS.LocalIP
WS.Connect IPServer, 1000
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
DoEvents
End
End Sub

Private Sub Kode_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
  If Kode.Text = "" Then Exit Sub
  WS.SendData "SEARCH-" & Kode.Text
End If
End Sub

Private Sub CmdProses_Click(Index As Integer)
Select Case Index
    Case 0
     
        Call Hapus
        Kode.SetFocus
    Case 1
        If CmdProses(1).Caption = "&Simpan" Then
         SQL = "INSERT INTO Barang(Kode,Nama,Harga) " & _
        "values('" & Kode.Text & _
        "','" & Nama.Text & _
        "','" & Harga.Text & "')"
        WS.SendData "INSERT-" & SQL
        Else
            SQL = "UPDATE Barang Set " & _
                "nama='" & Nama.Text & _
                "',harga='" & Harga.Text & _
                "' where kode = '" & Kode.Text & "'"
            WS.SendData "UPDATE-" & SQL
        End If
    Case 2
        X = MsgBox("Yakin RECORD Barang Akan Dihapus.....!", vbQuestion + vbYesNo, "Barang")
        If X = vbYes Then
            WS.SendData "DELETE-" & Kode.Text
        End If
        Call Hapus
        Kode.SetFocus
    Case 3
        Call Hapus
        Kode.SetFocus
    Case 4
        Unload Me
    End Select
End Sub

Private Sub Form_Load()
Call Hapus
MulaiKoneksi
End Sub

Private Sub WS_DataArrival(ByVal bytesTotal As Long)
Dim xKirim As String
Dim xData1() As String
Dim xData2() As String

WS.GetData xKirim, vbString, bytesTotal

xData1 = Split(xKirim, "-")
xData2 = Split(xData1(1), "/")

Select Case xData1(0)
    Case "NOTHING"
        X = Kode.Text
        Call Hapus
        Kode.Text = X
        Call RubahCMD(Me, False, True, False, True)
        CmdProses(1).Caption = "&Simpan"
        Nama.SetFocus
    Case "RECORD"
        xData2 = Split(xData1(1), "/")
        Nama.Text = xData2(0)
        Harga.Text = xData2(1)
        Call RubahCMD(Me, False, True, True, True)
        CmdProses(1).Caption = "&Edit"
        Kode.Enabled = False
        Nama.SetFocus
    Case "INSERT"
        MsgBox "Penyimpanan Berhasil!"
        Call Hapus
    Case "DEL"
        MsgBox "Penghapusan Data Berhasil!"
        Call Hapus
    Case "EDIT"
        MsgBox "Pengeditan Record Berhasil!"
        Call Hapus
End Select
End Sub

HASIL PROGRAM

Program Server











Program Client











Kamis, 19 Januari 2012

Tugas Program Karyawan Server


A. SERVER
1. FORM KARYAWAN

LISTING PROGRAM KARYAWAN

Sub hapus()
nik.Enabled = True
ClearFORM Me
Call RubahCMD(Me, True, False, False, False)
cmdproses(1).Caption = "&Simpan"
End Sub

Sub ProsesDB(Log As Byte)
Select Case Log
Case 0
sql = "insert into Karyawan(nik,nama,jabatan,golongan,bagian)" & _
"values('" & nik.Text & _
"','" & nama.Text & _
"','" & jabatan.Text & _
"','" & golongan.Text & _
"','" & bagian.Text & "')"
Case 1
sql = "update Karyawan set nama='" & nama.Text & "'," & _
"jabatan='" & jabatan.Text & "'," & _
"golongan='" & golongan.Text & "'," & _
"bagian= '" & bagian.Text & "'" & _
"where nik='" & nik.Text & "'"
Case 2
sql = "delete from Karyawan where nik='" & nik.Text & "'"
End Select
 MsgBox "Pemrosesan record database telah berhasil...!", vbInformation, "data Karyawan"
 Db.BeginTrans
 Db.Execute sql, adCmdTable
 Db.CommitTrans
 Call hapus
 Adodc1.Refresh
 nik.SetFocus
End Sub

Sub TampilKaryawan()
On Error Resume Next
nik.Text = rs!nik
nama.Text = rs!nama
jabatan.Text = rs!jabatan
golongan.Text = rs!golongan
bagian.Text = rs!bagian
End Sub

Private Sub cmdproses_Click(Index As Integer)
Select Case Index
Case 0
    Call hapus
    nik.SetFocus
Case 1
    If cmdproses(1).Caption = "&Simpan" Then
    Call ProsesDB(0)
    Else
    Call ProsesDB(1)
    End If
Case 2
    X = MsgBox("Yakin RECORD Karyawan akan dihapus...!", vbQuestion + vbYesNo, "Karyawan")
    If X = vbYes Then ProsesDB 2
    Call hapus
    nik.SetFocus
Case 3
    Call hapus
    nik.SetFocus
Case 4
    Unload Me
    End Select
End Sub


Private Sub Form_Load()
Call OPENDB
Call hapus
MulaiServer
End Sub

Private Sub nik_keypress(keyascii As Integer)
If keyascii = 13 Then
    If nik.Text = "" Then
        MsgBox "Masukkan NIK Karyawan! ", vbInformation, "Karyawan"
        nik.SetFocus
        Exit Sub
    End If
    sql = "SELECT * FROM Karyawan WHERE nik='" & nik.Text & "' "
    If rs.State = adStateOpen Then rs.Close
    rs.Open sql, Db, adOpenDynamic, adLockOptimistic
    If rs.RecordCount <> 0 Then
        TampilKaryawan
        Call RubahCMD(Me, False, True, True, True)
        cmdproses(1).Caption = "&Edit"
        nik.Enabled = False
    Else
        X = nik.Text
        Call hapus
        nik.Text = X
            Call RubahCMD(Me, False, True, False, True)
            cmdproses(1).Caption = "&Simpan"
    End If
    nama.SetFocus
End If
End Sub

Sub MulaiServer()
WS.LocalPort = 1000
WS.Listen
End Sub

Private Sub WS_connectionrequest(ByVal requestid As Long)
WS.Close
WS.Accept requestid
Me.Caption = "server-client" & WS.RemoteHostIP & "connect"
End Sub

Private Sub ws_dataarrival(ByVal bytestotal As Long)
    Dim xKirim As String
    Dim xData1() As String
    Dim xData2() As String
    WS.GetData xKirim, vbString, bytestotal
    xData1 = Split(xKirim, "-")
    Select Case xData1(0)
        Case "SEARCH"
            sql = "SELECT * FROM Karyawan WHERE nik='" & xData1(1) & "' "
            If rs.State = adStateOpen Then rs.Close
            rs.Open sql, Db, adOpenDynamic, adLockOptimistic
            If rs.RecordCount <> 0 Then
                WS.SendData "RECORD-" & rs!nama & "/" & rs!jabatan & "/" & rs!golongan & "/" & rs!bagian
            Else
                WS.SendData "NOTHING-DATA"
            End If
        Case "INSERT"
            Db.BeginTrans
            Db.Execute xData1(1), adCmdTable
            Db.CommitTrans
            WS.SendData " INSERT-xxx"
            Adodc1.Refresh
         Case "DELETE"
            sql = " Delete * from Karyawan " & _
                " where Kode = '" & xData1(1) & "' "
                Db.BeginTrans
                Db.Execute sql, adCmdTable
                Db.CommitTrans
                Adodc1.Refresh
                WS.SendData "DEL-xxx"
        Case "UPDATE"
            Db.BeginTrans
            Db.Execute xData1(1), adCmdTable
            Db.CommitTrans
            WS.SendData "EDIT-xxx"
            Adodc1.Refresh
    End Select
End Sub


MODUL FORM KARYAWAN
Public Db As New ADODB.Connection
Public rs As New ADODB.Recordset
Public rs2 As New ADODB.Recordset
Public sql As String

Sub OPENDB()
If Db.State = adStateOpen Then Db.Close
Db.CursorLocation = adUseClient
Db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & App.Path & _
"\db1.mdb;Persist Security Info=False "
End Sub

Sub ClearFORM(f As Form)
Dim ctl As Control
For Each ctl In f
    If TypeOf ctl Is TextBox Then ctl.Text = ""
    If TypeOf ctl Is ComboBox Then ctl.Text = ""
Next
End Sub

Sub Center(f As Form)
f.Move (Screen.Width - f.Width) / 2, (Screen.Height - f.Height) / 4
End Sub

Sub RubahCMD(f As Form, L0 As Boolean, L1 As Boolean, L2 As Boolean, L3 As Boolean)
f.cmdproses(0).Enabled = L0
f.cmdproses(1).Enabled = L1
f.cmdproses(2).Enabled = L2
f.cmdproses(3).Enabled = L3
End Sub

2. FORM LOGIN

Private Sub Keluar_Click()
Unload Me
End Sub

Private Sub ok_Click()
If username.Text = "siti" And pass.Text = "1234" Then
    Me.Hide
    MenuUtama.Show
Else
    MsgBox "Maaf! Username dan Password yang anda masukkan salah", vbInformation, "pemakai"
End If
End Sub

3. FORM MENU UTAMA



Private Sub Karyawan_Click()
FrmKaryawan.Show
End Sub

Private Sub Keluar_Click()
Unload Me
End Sub
HASIL DARI LISTING PROGRAM
            "Nama='" & Nama.Text & _
            "',Golongan='" & golongan.Text & _
            "',Jabatan='" & jabatan.Text & _
            "',Bagian='" & bagian.Text & _
            "'Where Nik='" & Nik.Text & "'"