กำหนดให้โปรแกรมใช้งานได้ 30 วัน ทำอย่างไรค่ะ?
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 524   9
URL.หัวข้อ / URL
กำหนดให้โปรแกรมใช้งานได้ 30 วัน ทำอย่างไรค่ะ?

ผมอ่านเจอกระทู้นี้ที่ http://www.pantip.com/tech/developer/topic/DD1245629.html#1

ผมจำได้ว่าเคยมีเพื่อนๆ ที่นี่แหล่ะเคยให้ตัวอย่างไฟล์ไว้ แต่อยู่ในเว็บของ อ. Access Hotline

ผมได้ออกความคิดเห็นไว้อย่างนี้ครับ

ผมว่าน่าจะใช้วิธีอื่นจะดีกว่า
เพราะเราจะอ้างอิงวันที่ของระบบ เขาก็สามารถที่จะเปลี่ยนวันที่ของระบบให้ย้อนหลังได้

หรือจะใช้ระบบนับจำนวนครั้งที่ใช้ ก็น่าจะดีกว่า แต่จะเก็บไว้ที่ไหน ถ้าเก็บไว้ใน Registry ก็น่าจะหาได้ยากกว่าแบบแรก แต่คนเก่งๆ ก็จะหาเจออยู่ดี

ผมว่าลองจำกัดจำนวนข้อมูลน่าจะได้ผลกว่า เช่น ใส่ข้อมูลในตารางหลักได้แค่ 100 รายการ ซึ่งเราสามารถกำหนดโดยการเขียนโค้ดในไฟล์ฐานข้อมูลของเราได้เลย

เพื่อนๆ คนอื่นคิดอย่างไรบ้างครับ

9 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02880
เผอิญมาอ่าน เห็นอันนี้เงียบเหงา เลยขอออกอาการเห็นด้วยกับอาจารย์ ก้อแล้วกันครับ เพราะเคยคิดจะทำให้มี Expire เหมือน พอเห็นอาจารย์ตอบอย่างนี้ เข้าท่าดีแฮะ
2 @R03713
ไม่ทราบว่าการจำกัดข้อมูล Set ได้จากตรงไหนครับ สมมุติไม่เกิน 6000 rcd's
3 @R03714
ลองแบบนี้ครับ โดยให้เปลี่ยน Table1 ในโค้ดให้ตรงกับชื่อตารางเป้าหมายของเรานะครับ โค้ดนี้ใชักับเหตุการณ์ BeforeUpdate ของฟอร์มที่คีย์ข้อมูลลงไปครับ

Private Sub Form_BeforeUpdate(Cancel As Integer)
If DCount("*","Table1") > 100 Then
MsgBox "You are not allowed to add any more record", vbOKOnly, "Record Limit"
Me.Undo
Cancel = True
End If
End Sub
4 @R03721
แบบผมครับยุ่งยากหน่อยแต่ก็ ok ครับ
ผมสร้าง Tableสำหรับเก็บข้อมูลการลงทะเบียนโปรแกรมสมมุติชื่อ UsysTbl1 มี field 4 field
ID IDHD IDRegis Count

เพราะว่า table ใดก็ตามถ้าตั้งชื่อให้ขึ้นต้นด้วย usysแล้วละก็ จะไม่มีทางมองเห็น table ดังกล่าวได้เลยนอกจาก
การดูด้วย Query เท่านั้น(อ่านมาจากที่อ.สุภาพ เคยทำลิงค์ให้ D/L program Access อะไรซักอันเนี่ยแหละครับ)
แล้วใน Form login เนี่ยเมื่อ User login เข้ามาใช้โปรแกรม ผมก็จะให้อ่านเลข Harddisk ของเครื่อง(อันนี้เอา code มาจากคุณ Badman ครับ)
ให้มาเก็บไว้ในตัวแปร StrID1 (ผมตัดตัวอักษรเอาแค่ 4 ตัวแรกก็พอครับ) แล้วก็ตรวจสอบข้อมูลที่อยู่ใน UsysTbl1 ดังนี้ครับ

1. Field IDHD ที่เก็บข้อมูลเลข HD ไว้ ว่าตรงกับ StrID1 หรือเปล่า
1.1 ถ้าไม่ตรงแสดงว่ามีการ copy โปรแกรมไปใช้เครื่องอื่นที่ไม่ได้ลงทะเบียนโปรแกรมไว้แล้วให้ Field Count เริ่มต้นที่ 10
และmsgbox บอก user ว่าเปิดโปรแกรมได้ไม่เกิน10ครั้ง และให้ Field IDHD เปลี่ยนdata เป็น StrId1
1.2 ถ้าตรงกันก็ให้ไป ข้อ2
2. Field IDRegis มีข้อมูลตรงกับ Field IDHD หรือเปล่า
2.1 ถ้าตรงกันแสดงว่าโปรแกรมถูกลงทะเบียนไว้แล้วให้ทำงานปกติครับ
2.2 ถ้าไม่ตรงกันให้ตรจสอบField Count โดยให้เพิ่มตัวเลขทีละ 1 จนถึง 10แล้วก็ msgbox แจ้ง user ทีนี้เมื่อถึง 10 ก็ทำให้ไม่สามารถเข้าโปรแกรมได้
3. ทำ Form สำหรับ registy โดยที่ให้ User คลิ๊ก ปุ่มที่ทำไว้สำหรับสุ่มตัวเลขให้ไปผสมกับ StrId1 อาจจะรวมแล้วซัก20ตัวแล้วให้ User ส่งตัวเลขที่สุ่มไว้ mail ถึงผม
สมมุตินะครับค่าที่ StrId1 =3456 ผมก็สร้างเลขอื่นเพิ่มเข้าไปรวมกันเป็น x3xx4x5xx6xxxxxxxxxx
ทีนี้ผมก็จะต้องรู้ว่าตำแหน่งที่แท้จริงคือตรงไหนแล้วก็ mail กลับไปบอก หมายเลข 3456 ที่ใช้สำหรับลงทะเบียนโปรแกรม
เมื่อ user ได้หมายเลขที่แท้จริงแล้วก็ให้ลงทะเบียนโดยเขียน code ให้ update Field IDRegis ให้เป็นหมายเลขที่ถูกต้องทีนี้ก็เรียบร้อย
เพราะเมื่อโปรแกรมตรวจสอบ ตามข้อ 2.1 แล้วก็สามารถทำงานได้ปกติครับ แล้วเลข 3456 ที่ส่งไปให้ user ไปลงทะเบียนเนี่ย
ถ้า user copy โปรแกรมไปใช้กับ com เครื่องอื่นก็ไม่สามารถใช้หมายเลข 3456 ลงทะเบียนโปรแกรมที่ copy ไปได้ครับ

*****โปรแกรมนี้ผมลองใช้ดูแล้วในบริษัท ป้องกันการ copy ข้ามเครื่องได้จริงๆครับ แต่ข้อเสียนะครับ(อันนี้ยังไม่ได้บอก User ครับ)
ถ้ามีการ copy ไปเปิดเครื่องนั้นมั่งเครื่องนี้มั่ง โปรแกรมก็ยังใช้ได้ทีละ 10 ครั้งตลอด(ยังหาทางแก้ไขอยู่ครับแต่ยากชะมัด) แต่Tableที่สำคัญๆผมก็ยัง
ตั้งชื่อให้เป็น UsysTable อยู่ครับป้องกันการ import ได้ชัวร์ ตอนนี้ยังหาวิธีที่ดีกว่านี้ไม่ได้ครับ

************** แล้วก็ต้องขอขอบคุณ อ.สุภาพ และ คุณ Badman เป็นอย่างมากเลยครับเพราะลำพังตัวผมคงไม่มีทาง เขียน code
ยากๆแบบนี้ได้อย่างแน่นอนครับ


5 @R03735
คุณ เม้งไง ความคิดเห็นของคุณน่าสนใจมากค่ะ
มีตัวอย่างให้ศึกษามั้ยค่ะ
6 @R03739
ถ้าไม่รบกวนเกินไป อยากจะขอศึกษาตัวอย่างด้วยคนครับ น่าสนใจ
7 @R03749
ลองไปปรับใช้ดูนะครับ อาจจะไม่ใช่สิ่งที่ดีที่สุด แต่ก็น่าจะมีประโยชน์กับเพื่อนๆครับ
ผมสร้าง Query ไว้ 2อัน เพื่อดูข้อมูลใน table ที่ใช้ usys ในการตั้งชื่อ
เวลาจะ สร้างเป็น mde file ก็ delete query ทั้ง 2 นี้เพื่อไม่ให้ใครเข้าไปดูข้อมูลครับ

userlogin : test
password : test


8 @R03765
ไม่ทราบว่าวิธืนี้ทำยังไงครับ อ. สุภาพ

=======Snip================
หรือจะใช้ระบบนับจำนวนครั้งที่ใช้ ก็น่าจะดีกว่า แต่จะเก็บไว้ที่ไหน ถ้าเก็บไว้ใน Registry ก็น่าจะหาได้ยากกว่าแบบแรก แต่คนเก่งๆ ก็จะหาเจออยู่ดี
=======Snip================

9 @R03769
วิธีง่ายๆ ก็ใช้คำสั่งพวก GetSetting, SaveSetting โดยให้อ่านกระทู้ http://www.thai-access.com/suphap.php?topic_id=390 เพิ่มเติมครับ

ถ้าต้องการความยืดหยุ่นสูง ก็ต้องใช้ API หรือ Window Script Host ก็ได้ครับ
ลองอ่านกระทู้ที่ว่าดูก่อนครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0532s