Monday, July 21, 2008

Form Entri Employee - VFP

On Form1.Refresh :
THISFORM.txtNoPokok.Value = ''
THISFORM.txtNoPokok.Enabled= .T.
THISFORM.txtNoInduk.Value = ''
THISFORM.txtNama.Value = ''
THISFORM.txtUnit.Value = ''
THISFORM.cmdSave.Enabled = .F.
THISFORM.cmdCancel.Enabled = .F.
THISFORM.cmdErase.Enabled= .F.

SELECT datakar.no_pokok,datakar.no_induk,datakar.nama,datakar.unit from datakar INTO CURSOR ListKar
SELECT ListKar
INDEX on RIGHT(ALLTRIM(no_pokok),4) TAG nop ADDITIVE
THISFORM.grid1.RecordSourceType = 1
THISFORM.grid1.RecordSource = "listkar"
THISFORM.grid1.column1.Width = 100
THISFORM.grid1.column1.header1.Caption = 'ID #1'
THISFORM.grid1.column2.Width = 100
THISFORM.grid1.column2.header1.Caption = 'ID #2'
THISFORM.grid1.column3.Width = 150
THISFORM.grid1.column3.header1.Caption = 'Name'
THISFORM.grid1.column4.Width = 125
THISFORM.grid1.column4.header1.Caption = 'Unit'
THISFORM.txtNoPokok.SetFocus

On Form1.Unload :
IsFormActive = .F.
LogData.ENABLED = .T.

On txtNoPokok.LostFocus :
*!* ID # 1
LOCAL c_NoPokok as String
c_NoPokok = THISFORM.txtNoPokok.Value
IF LEN(ALLTRIM(c_NoPokok)) # 0
SELECT * FROM datakar WHERE no_pokok = c_NoPokok INTO CURSOR CekNoPokok
SELECT CekNoPokok
GO TOP
IF !BOF()
LOCAL n_Jawab
n_Jawab = MESSAGEBOX("No. Pokok in sudah tercatat."+CHR(13)+"Edit data ini?",4+48+256,"Cek No. Pokok")
IF n_Jawab = 6 && YES
THISFORM.txtNoInduk.Value = CekNoPokok.no_induk
THISFORM.txtNama.Value = CekNoPokok.nama
THISFORM.txtUnit.Value = CekNoPokok.unit
THISFORM.txtNoPokok.Enabled= .F.
ENDIF
ENDIF
THISFORM.cmdSave.Enabled = .T.
THISFORM.cmdCancel.Enabled = .T.
THISFORM.cmdErase.Enabled= .T.
SELECT CekNoPokok
USE
ENDIF

On cmdSave.Click :
*!* Save Record
_SCREEN.MOUSEPOINTER = 11
LOCAL c_NoPokok as String,c_NoInduk as String,c_Nama as String,c_Unit as String

c_NoPokok = ALLTRIM(thisform.txtnoPokok.Value)
c_NoInduk = ALLTRIM(thisform.txtNoInduk.Value)
c_Nama = ALLTRIM(thisform.txtNama.Value)
c_Unit = ALLTRIM(thisform.txtUnit.Value)
SELECT no_pokok FROM datakar WHERE ALLTRIM(no_pokok) = c_NoPokok INTO CURSOR CekDataKaryawan
select CekDataKaryawan
GO top
IF !BOF()
**** update data
UPDATE datakar SET no_pokok = c_NoPokok,;
no_induk = c_NoInduk,;
nama = c_Nama,;
unit = c_Unit ;
WHERE ALLTRIM(no_pokok) = c_NoPokok
ELSE
**** insert data
INSERT INTO datakar ;
(no_pokok,;
no_induk,;
nama,unit) ;
VALUES ;
(c_NoPokok,;
c_NoInduk,;
c_Nama,;
c_Unit)
ENDIF
select CekDataKaryawan
USE
THISFORM.REFRESH
_SCREEN.MOUSEPOINTER = 0

On cmdCancel.Click:
*!* Cancel Entri/Edit Record
_SCREEN.MOUSEPOINTER = 11
THISFORM.REFRESH
_SCREEN.MOUSEPOINTER = 0

On cmdErase.Click:
*!* Erase Record
_SCREEN.MOUSEPOINTER = 11
LOCAL n_Jawab
n_Jawab = MESSAGEBOX("Hapus Data karyawan dengan No. Pokok ini?",4+32+256,"Hapus Data Karyawan")
IF n_Jawab = 6 && YES
DELETE FROM datakar WHERE ALLTRIM(no_pokok) = thisform.txtNoPokok.Value
ENDIF
THISFORM.REFRESH
_SCREEN.MOUSEPOINTER = 0

On cmdExit.Click:
IF TYPE("THISFORM.PARENT")="O"
THISFORMSET.RELEASE
ELSE
THISFORM.RELEASE
ENDIF

Saturday, July 19, 2008

Reduce Memory Usage in VFP

Within a timer, this function can be running periodically to reduce memory usage vfp application.
I have already try and work with well.

Function ReduceMemory()

Declare Integer SetProcessWorkingSetSize In kernel32 As SetProcessWorkingSetSize ;
Integer hProcess , ;
Integer dwMinimumWorkingSetSize , ;
Integer dwMaximumWorkingSetSize
Declare Integer GetCurrentProcess In kernel32 As GetCurrentProcess
nProc = GetCurrentProcess()
bb = SetProcessWorkingSetSize(nProc,-1,-1)
*EOFunct ReduceMemory()

this function created by Bernard Bout

Friday, July 18, 2008

Get Data Temperature Sensor with VFP

This sample VFP code for read data from temperature sensor :

*** Com1 setting = "9600,n,8,1"
thisform.MsCom.settings = "9600,n,8,1"
thisform.timer1.Interval = 1000


** SENSOR 01
VAL_01 = ASC(substr(thisform.MsCom.Input,5,5))
thisform.text1.Value = VAL_01

** SENSOR 02
thisform.MsCom.Output = '02R;'
VAL_02 = ASC(substr(thisform.MsCom.Input,5,5))
thisform.text2.Value = VAL_02

** SENSOR 03
thisform.MsCom.Output=':03R;'
VAL_03 = ASC(substr(thisform.MsCom.Input,5,5))
thisform.text3.Value = VAL_03

** SENSOR 04
thisform.MsCom.Output=':04R;'
VAL_04 = ASC(substr(thisform.MsCom.Input,5,5))
thisform.text4.Value = VAL_04

** SENSOR 05
thisform.MsCom.Output=':05R;'
VAL_05 = ASC(substr(thisform.MsCom.Input,5,5))
thisform.text5.Value = VAL_05

thisform.MsCom.inBufferCount = 0
thisform.MsCom.Refresh

Friday, July 4, 2008

Connecting Data

VB6 - Non ODBC

Set db = New Connection
db.CursorLocation = adUseClient
db.Open “PROVIDER=MSDataShape;Data PROVIDER=” & _
“Microsoft.Jet.OLEDB.4.0;Data Source=” _
& App.Path & “\fpdata.mdb;Jet OLEDB:” & _
“Database Password=”;”

Visual Foxpro - ODBC

STORE SQLCONNECT(’exdata’, ‘admin’,”) TO gnConnHandle
IF gnConnHandle <= 0
= MESSAGEBOX(’Cannot make connection’, 16, ‘SQL Connect Error’)

*!* execute
SQLEXEC(gnConnHandle,”SELECT * FROM USER”,”USER”)
ENDIF

fingerprint with control czkem

Here is vb sample code for attendante fingerprint with control czkem :

Private Sub cmdDownload01_Click()
If lStatusKonek Then
If chkDownload.Value = 0 Then
cmdDownload01.Enabled = False
MousePointer = vbHourglass
End If
Dim dwEnrollNumber As Long
Dim dwVerifyMode As Long
Dim dwInOutMode As Long
Dim timeStr As String
Dim i As Long
Dim lAddNew As Boolean

Dim v1 As String, v2 As Long, v3 As Long

lvX.Refresh
If chkDownload.Value = 1 Then
lvX.ListItems.Clear
End If

v1 = CStr(!no_id)
v2 = !baudrate
v3 = !no_port

If CZKEM1.ReadGeneralLogData(v1) Then
i = 1
CZKEM1.ReadAllUserID v1 ”cboNoMesin01
While CZKEM1.GetGeneralLogDataStr(v1, dwEnrollNumber, dwVerifyMode, dwInOutMode, timeStr)

lvX.ListItems.Add i, , dwEnrollNumber
With lvX.ListItems(i)
.SubItems(1) = IIf(IsNull(timeStr), “”, timeStr)
.SubItems(2) = IIf(IsNull(v1), “”, v1)
.SubItems(3) = IIf(IsNull(dwVerifyMode), “”, IIf(dwVerifyMode = 1, “Fingerprint”, “Password”))
DoEvents
End With

Dim d_TimeStr As Date
d_TimeStr = CDate(Left(Right(Left(timeStr, 10), 2) & “-” & Mid(Left(timeStr, 10), 6, 2) & “-” & Left(Left(timeStr, 10), 4) & ” ” & Right(Trim(timeStr), 8), Len(Right(Left(timeStr, 10), 2) & “-” & Mid(Left(timeStr, 10), 6, 2) & “-” & Left(Left(timeStr, 10), 4) & ” ” & Right(Trim(timeStr), 8))))

lvX.ListItems.Add i, , dwEnrollNumber
With lvX.ListItems(i)
.SubItems(1) = IIf(IsNull(timeStr), “”, timeStr)
.SubItems(2) = IIf(IsNull(v1), “”, v1)
.SubItems(3) = IIf(IsNull(dwVerifyMode), “”, IIf(dwVerifyMode = 1, “Fingerprint”, “Password”))
DoEvents
End With

End If
End With

lvX.Refresh
Wend
End If
.MoveNext
Wend
End With
If chkDownload.Value = 0 Then
cmdDownload01.Enabled = True
MousePointer = vbDefault
End If
adoMesinConnect.Close
End If

End Sub

Hello

I am just a learner in visual foxpro and wanna be a good programmer in visual foxpro. In this blog, i wanna share some about visual foxpro.