03 February 2016

VB 6, Notifikasi Menggunakan Winsock

Alur : ketika user dari ruangan IGD melakukan klik simpan setelah mengisi data reservasi, notifikasi reservasi di loket pendaftaran akan muncul. Kodingan di modul pendaftaran
'Cari setingan port dari seting global
'Potongan kode di event Form Load
'----------------------------------------------------------------------------------------------
    strSQL5 = "Select Value From SettingGlobal Where prefix='PortNotifikasiReservasi'"
    Call msubRecFO(rsE, strSQL5)
   
    'Buka port
    With Winsock1
        .Close
        .LocalPort = Trim(rsE(0))
        .Listen
    End With
'----------------------------------------------------------------------------------------------

Private Sub Winsock1_Close()
    Winsock1.Close
    Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
   
    On Error GoTo duaTambahDuaSamaDenganLima

    Winsock1.Close
    Winsock1.Accept requestID

    Exit Sub

duaTambahDuaSamaDenganLima:
    Call Winsock1.Close
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
    On Error GoTo duaTambahDuaSamaDenganLima

    Dim data$
   
    Winsock1.getData data$
    Call PlaySound
   
    If Left(data$, 3) = mstrKdRuanganLogin Then 'Hanya akan tampil di ruangan yang seharusnya menerima notifikasi
        If MsgBox("Reservasi pasien " & data$ & ", Klik Yes untuk membuka Form Daftar Reservasi", vbYesNo + vbInformation) = vbYes Then
            frmDaftarReservasiPasien.Show
        End If
    End If

duaTambahDuaSamaDenganLima:
End Sub
Kodingan di Modul Gawat Darurat Fungsi yang ditempatkan di event Form Load
Private Function koneksiNotifikasi()
   
    On Error GoTo duaTambahDuaSamaDenganLima
   
    'Ambil setingan IP
    strSQL6 = "Select Value From SettingGlobal Where prefix='IPUntukNotifikasi'"
    Call msubRecFO(rsF, strSQL6)
   
    'Ambil setingan port
    strSQL7 = "Select Value From SettingGlobal Where Prefix='PortNotifikasiReservasi'"
    Call msubRecFO(rsG, strSQL7)
   
    jumlahTitikKoma = 0
    ReDim tmpIP(0)
   
   
    'Ekstrak IP
    For X = 1 To Len(rsF(0))
        If Mid(rsF(0), X, 1) = ";" Then
            jumlahTitikKoma = jumlahTitikKoma + 1
           
            If jumlahTitikKoma = 1 Then
                tmpIP(0) = Left(rsF(0), X - 1)
            Else
                ReDim Preserve tmpIP(UBound(tmpIP) + 1)
                tmpIP(UBound(tmpIP)) = Mid(rsF(0), posisiTitikKomaSebelumnya + 1, (X - 1) - posisiTitikKomaSebelumnya)
            End If
           
            posisiTitikKomaSebelumnya = X
        End If
    Next X
   
    'Konekkan ke IP
    For i = 0 To UBound(tmpIP)
        If i <> 0 Then 'Index 0 jangan diload lagi, kan sudah ada
            Load Winsock1(i)
        End If
       
        Winsock1(i).Close
        Winsock1(i).Connect tmpIP(i), CInt(rsG(0))
       
    Next i
   
 
Exit Function

duaTambahDuaSamaDenganLima:
End Function

'Potongan kode di tombol simpan, di form input data reservasi
'Tampilkan notifikasi di loket yang seharusnya
    strSQL5 = "Select KdInstalasi From Ruangan Where KdRuangan='" & dcRuangan.BoundText & "'"
    Call msubRecFO(rsE, strSQL5)
   
    'Kirim pesan ke semua ip yang ada di setingan
    For i = 0 To UBound(tmpIP)
        If Winsock1(i).State = 7 Then
            If rsE(0) = "03" Then 'Tampilkan notifikasi di loket yang seharusnya
                Winsock1(i).SendData "193" & txtNamaPasien.Text
            Else
                Winsock1(i).SendData "195" & txtNamaPasien.Text
            End If
        End If
    Next i

Kodingan di Event Form Unload
'Putuskan koneksi winsock
    For i = 0 To UBound(tmpIP)
        Winsock1(i).Close
    Next i

No comments:

Post a Comment

Pengumuman