หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

กระดานข่าวสาร เว็บบอร์ด - www.g2gnet.com
ดาวน์โหลดฟรีโปรแกรม และ Free Souce Code ได้ที่นี่ ...
รู้จักกับเว็บมาสเตอร์ - www.g2gnet.com
::: โปรแกรมมาใหม่ :::
โปรแกรมพิมพ์สติ๊กเกอร์บาร์โค้ด - Barcode Sticker
โปรแกรมพิมพ์สติ๊กเกอร์บาร์โค้ด - Barcode Sticker
โปรแกรมไปรษณีย์ และ จุดชำระค่าบริการ (iPayPost Software)
โปรแกรมไปรษณีย์ และ จุดชำระค่าบริการ
โปรแกรมจุดรับชำระค่าบริการ (iPayLite Software)
โปรแกรมจุดรับชำระค่าบริการ
::: BarcodeSoft :::
::: Printing :::
โปรแกรมพิมพ์รหัสบาร์โค้ด - BarcodeSoft Printing
โปรแกรมรหัสไปรษณีย์ทั่วไทย
::: G2GNet PostCode :::
!!!!! แจกฟรี !!!!!
ดาวน์โหลดโปรแกรมรหัสไปรษณีย์ทั่วไทย G2GNet PostCode Thailand
Visitors - Session views
 3 5 6 3 1 7 1

7 ธันวาคม พ.ศ.2549
115 Users On-Line.
Visitors - Page views
 6 2 5 4 3 6 6
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  
    ดาวน์โหลด และ แนะนำวิธีการติดตั้ง Active Report Professional 2.0
    แจกฟรี Source Code โปรแกรมขายสินค้า - Point Of Sale (โดย เว็บมาสเตอร์-ทองก้อน
    แจกฟรี Source Code การพิมพ์ใบกำกับภาษี - Active Report 2.0 (โดย ctx-9000@hotmail.com)
    SourceCode การดึงข้อมูลมาแสดงผลลงใน SharpGrid (โดย dos_network@hotmail.com)
    แจกฟรี Source Code VB6+Access โปรแกรมฐานข้อมูลครุภัณฑ์
    แจกโปรแกรมดูทีวี ดูหนัง ฟังวิทยุ ฟังเพลงออนไลน์ - G2GnetTV On Line ... ฟรีๆๆๆๆ
          ข้อมูลสถานี/รายการ (XML)  ข้อมูลสถานี/รายการ (HTML)
โปรแกรมระบบบัญชี Profit - Account

การตั้งค่ารูปแบบปฏิทิน - รูปแบบวันที่ โดยไม่ผ่าน Control Panel

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 28/2/2552   เวลา: 18:59
(อ่าน : 12931)/(ตอบ : 7)  ข้อคิดเห็น   |   พิมพ์   |  
เริ่มจากปัญหา ... ในคอมพิวเตอร์เครื่องเดียวกัน หากใช้โปรแกรมของเจ้าอื่น ดังนั้นเขา (หรือ เธอ) ต้องตั้งเป็นปี.ค.ศ. น่ะ ... พอหากมาใช้งานโปรแกรมของผมก็ต้องมาตั้งเป็นปี พ.ศ. ก่อน ... เหอๆๆๆๆ ... นี่คือเหตุการณ์ที่เกิดขึ้นจริง ... ผมตั้งคำถามเอาไว้ว่า เอ๊ะ ... ทำไม ... บริษัท ปอ ปลา ตากลม แห่งนี้ เขาก็มีโปรแกรมเมอร์เยอะเป็นสิบ แล้วทำไมจะไม่มีใครสักคนเลยหรือ ที่จะคิดหาวิธีการแก้ปัญหาให้กับผู้ใช้งานให้มันเข้าท่าเข้าทางกว่านี้ หุหุหุ ... อีกทั้งมูลค่าราคาโปรแกรมก็มากกว่าผมตั้งหลายเท่าตัว น่าจะมีการ Support ต่อผู้ใช้งานให้ดี สมราคาบ้างน่ะ ... ที่กล่าวมานี้ผมไม่ได้มีเจตนาไปต่อว่าใครเขาหรอกครับ ผมเองคิดได้ คนอื่นเขาก็คิดได้เหมือนกันนั่นแหละน่า ต่างกันที่ว่า "จะทำหรือไม่ทำ" ... เพราะหลายต่อหลายคนเมื่อเข้าสู่วังวนของคำว่า "มนุษย์เงินเดือน" กล่าวคือ ทำมาก ทำน้อย ก็ได้เงิน ได้ผลตอบแทนเท่าเดิม เรื่องอะไรตูต้องไปเสนอหน้า หรือ ทำไปทำไมให้มันเหนื่อยแรง (ว่ะ) เหอๆๆๆๆ ... หากใครที่ยังมีแนวคิดแบบนี้อยู่ ผมว่าคงมีอนาคตรุ่งริ่งเป็นแน่แท้ ... ฝากให้เป็นข้อคิด และ แนวทางสำหรับเหล่าน้องๆโปรแกรมเมอร์รุ่นใหม่ๆไว้ล่ะกัน ... ในห้องเรียน ในตำราไม่มีสอนให้หรอกครับ ...
ชีวิตการทำงานของผม ... ก่อนก้าวมาเป็นฟรีแลนซ์เต็มตัว
"ผมไม่เคยสนใจว่าองค์กรจะให้อะไรกับผม ผมสนใจแต่ว่าผมจะได้รับความรู้ ประสบการณ์อะไรไปจากองค์กร"

ดาวน์โหลด
ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
 ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
 ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
 ดาวน์โหลด Microsoft Visual Basic Service Pack 6
ข้อมูลเพิ่มเติม
ทำการอ่านค่ารูปแบบวันที่ของระบบเพื่อนำไปประยุกต์ใช้งานกับ MS Access
เริ่มต้นกระบวนการทำงาน

จาก Control Panel --> Regional and Langauge Options


ก่อนเปลี่ยน ...


สั่งให้โปรแกรมทำงาน
มาดูโค้ดกันเถอะ ...

Option Explicit

Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" ( _
    ByVal Locale As Long, _
    ByVal LCType As Long, _
    ByVal lpLCData As String, _
    ByVal cchData As Long) _
    As Long

Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" ( _
    ByVal Locale As Long, _
    ByVal LCType As Long, _
    ByVal lpLCData As String) _
    As Boolean

Public Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long

Global DefaultCalendarType As String    ' เก็บค่าปฏิทินเดิมเอาไว้
Global DefaultShortDate As String             ' เก็บรูปแบบวันที่ (dd/MM/yy)
Global DefaultLongDate As String             ' เก็บรูปแบบวันที่ (dd/MM/yyyy)

' โปรแกรมย่อย (Main) ที่เป็น Start up Project ได้ทันที
Sub Main()
    
    Dim LCID As Long
    Dim Symbol As String
    Dim iRet As Long
    
    ' หาค่า Locale ID (information) ในระบบ ... ไทยแลนด์ = 1054
    LCID = GetSystemDefaultLCID()
    
    ' ส่วนแรกจะเป็นการปรับรูปแบบปฏิทินจากอะไรก็แล้วแต่ ... ให้เป็น พุทธศักราช (พ.ศ.)
    ' ค่าคงที่ที่ประกาศไว้ Module RegionalSetting ... ผมยกเอามาให้ดูครับ ... พี่น้อง
    ' Public Const LOCALE_ICALENDARTYPE   As Long = &H1009
    
    ' กระโดดไปโปรแกรมย่อย GetUserLCID เพื่อหาค่าว่าปฏิทินใช้ในรูปแบบไหนกันแน่
    Symbol = GetUserLCID(LCID, LOCALE_ICALENDARTYPE)
    ' ค่าที่จะถูก Return กลับมา (String) เช่น "1" หรือ "7"
    ' --> "1" Gregorian (localized)
    ' --> "2" Gregorian (English strings always)
    ' --> "3" Era: Year of the Emperor (Japan)
    ' --> "4" Era: Year of Taiwan Region
    ' --> "5" Tangun Era(Korea)
    ' --> "6" Hijri (Arabic lunar)
    ' --> "7" Thai ... ไทยแลนด์มีค่าเท่ากับ 7
    ' --> "8" Hebrew (Lunar)
    ' --> "9" Gregorian Middle East French
    ' --> "10" Gregorian Arabic calendar
    ' --> "11" Gregorian Transliterated English
    ' --> "12" Gregorian Transliterated French
    
    ' เก็บค่าเอาไว้ในตัวแปรแบบ Global ... สำหรับตอนที่ปิดโปรแกรมแล้วก็ค่อยคืนค่ากลับไปตามเดิม
    ' จะได้ไม่ต้องไปนั่งทะเลาะกับเจ้าของโปรแกรมอื่นที่เขาใช้อ่านปี ค.ศ.
    DefaultCalendarType = Symbol
    
    ' เปลี่ยนค่าปฏิทินให้เป็น พุทธศักราช
    Symbol = "7"
    ' หรือทดสอบกำหนด Symbol = "1" ... ก็จะเห็นเป็นปี ค.ศ.
    ' หากว่า iRet ถูกส่งกลับมาเป็น 0 คือ มีการเกิด Error ขึ้นมาน่ะครับ
    iRet = SetLocaleInfo(LCID, LOCALE_ICALENDARTYPE, Symbol)
    
    ' สำหรับรูปแบบวันที่แบบสั้น - Short Date
    Symbol = GetUserLCID(LCID, LOCALE_SSHORTDATE)
    ' เก็บค่าเดิม ... เพื่อไม่ต้องการไปทะเลาะกับใคร ... 55555+
    DefaultShortDate = Symbol
    ' เปลี่ยนค่าตามที่ต้องการ ... M ตัวใหญ่น่ะครับ
    Symbol = "dd/MM/yy"
    iRet = SetLocaleInfo(LCID, LOCALE_SSHORTDATE, Symbol)
    
    
    ' สำหรับรูปแบบวันที่แบบยาว -  Long Date
    Symbol = GetUserLCID(LCID, LOCALE_SLONGDATE)
    DefaultLongDate = Symbol
    ' เปลี่ยนค่าตามที่ต้องการ
    Symbol = "dd/MM/yyyy"
    iRet = SetLocaleInfo(LCID, LOCALE_SLONGDATE, Symbol)

End Sub

' โปรแกรมย่อยที่ใช้ในการหาค่ารูปแบบต่างๆ ... และส่งค่ากลับไปเป็นแบบ String
' ศึกษาเรื่องของการรับส่งค่าด้วย ByVal และ ByRef ด้วยน่ะครับผม
' http://www.g2gnet.com/News/activeNews_view.asp?articleID=101
Public Function GetUserLCID(ByRef LCID As Long, ByVal LCType As Long) As String

    Dim Symbol As String
    Dim iRet As Long

    ' หาขนาดของชนิดข้อมูลที่ต้องการ (Locale Type) เช่น ...
    ' กรณีของรูปแบบปฏิทิน LOCALE_ICALENDARTYPE = &H1009  หรือ 4105 (ฐาน 10)
    ' กรณีของวันที่แบบสั้น LOCALE_SSHORTDATE = &H1F หรือ 31 (ฐาน 10)
    ' ค่าที่ว่ามานี้ เป็นการกำหนดค่าคงที่เอาไว้ เพื่อใช้งานผ่านทาง WinAPI น่ะครับผม
    iRet = GetLocaleInfo(LCID, LCType, Symbol, Len(Symbol))
    
    ' ไม่มีการเกิด Error ... ค่า iRet จะไม่เป็น 0 (หากเป็น 0 หรือเป็น เท็จ หรือ False นั่นเองครับ ... จำไว้ให้ดี)
    If iRet Then
        ' จับจองพื้นที่ในหน่วยความจำ (Buffer) ... Space เป็นการกำหนดขนาดตามจำนวนของ iRet
        Symbol = Space$(iRet)
        
        ' และเรียกซ้ำอีกครั้ง ... เพื่อกำหนดขนาดหน่วยจำที่ต้องการ (Buffer)
        iRet = GetLocaleInfo(LCID, LCType, Symbol, Len(Symbol))
        ' หากสามารถทำงานได้สำเร็จ ... iRet ต้องมากกว่า 0
        If iRet Then
            ' นั่นคือ iRet จะเป็นตัวกำหนดขนาดของหน่วยความจำเอาไว้
            ' คืนค่ากลับผ่านทางฟังค์ชั่น (String)
            GetUserLCID = Left$(Symbol, iRet - 1)
        End If
        
        ' จาก Statement ด้านบน เขียนสั้นแบบนี้ก็ได้ ... If iRet Then GetUserLCID = Left$(Symbol, iRet - 1)
        
    End If
    
End Function
Conclusion:
จากโปรแกรมย่อย GetUserLCID (ฟังค์ชั่น) ตัวนี้ ... พี่น้องสามารถนำไปประยุกต์ใช้งานได้อย่างกว้างขวางมากมาย ไม่ว่าจะเป็นเรื่องของรูปแบบของตัวเลข เวลา หรือ สกุลเงิน เพื่อจัดรูปแบบให้ตรงกับระบบฐานข้อมูล (DataBase) แต่ละตัวที่ได้เลือกมาใช้งาน ... แบบเป็นอิสระ โดยไม่ต้องไปพะวงว่าจะมีผลกระทบต่อการใช้งานโปรแกรมอื่นๆที่อยู่ในเครื่องเดียวกันหรือไม่

ร่วมแสดงความคิดเห็น

[ความเห็นที่:  1] จากคุณ : Mr.Den เมื่อ 2/3/2552 11:30:59  IP: 58.9.102.118

เยี่ยมยอดครับ..มืออาชีพมากครับ..

ขอบคุณมากครับ.

[ความเห็นที่:  2] จากคุณ : ctx-90,000 เมื่อ 4/3/2552 15:44:40  IP: 117.47.73.154

เยี่ยมหละเน๊าะ
ของเขาดีจริงๆ  หนึ่งกำลังใจในการสร้างสรรค์ผลงานครับ
จาก ทหารน้อยผู้ด้อยปริญญา วาสนา รร.นายสิบ 

[ความเห็นที่:  3] จากคุณ : ctx-90,000 เมื่อ 4/3/2552 15:48:39  IP: 117.47.73.154

"ต่างกันที่ว่า "จะทำหรือไม่ทำ" ... เพราะหลายต่อหลายคนเมื่อเข้าสู่วังวนของคำว่า "มนุษย์เงินเดือน" กล่าวคือ ทำมาก ทำน้อย ก็ได้เงิน ได้ผลตอบแทนเท่าเดิม เรื่องอะไรตูต้องไปเสนอหน้า หรือ ทำไปทำไมให้มันเหนื่อยแรง (ว่ะ) เหอๆๆๆๆ ... หากใครที่ยังมีแนวคิดแบบนี้อยู่ ผมว่าคงมีอนาคตรุ่งริ่งเป็นแน่แท้ ... "

ผมชอบตรงนี้มากกว่า แม้แต่ในระบบราชการ
ได้ครับพี่  นี่ลูกหลานผม  ฝากด้วยครับนาย  ผมหละเบื่อ

[ความเห็นที่:  4] จากคุณ : ทาโร่ เมื่อ 10/6/2552 9:46:18  IP: 125.24.197.44

เจ๋งไปเลย 

[ความเห็นที่:  5] จากคุณ : นัน เมื่อ 10/7/2552 14:54:57  IP: 168.120.34.33

ได้ลองใช้แล้วครับ ติดปัญหา คือ ตรง Regional ยังไม่เป็น THAI ครับ แต่ รูปแบบ วันที่ถูกต้องครับ 
ขอบคุณครับ

[ความเห็นที่:  6] จากคุณ : อุด เมื่อ 7/8/2552 10:57:18  IP: 125.26.72.78

ท่านเทพ visual basic ผมอยากทราบว่าที่ท่านเขียนโค๊ดมาให้ดูถ้าผมพิมพ์ตามท่านทั้งหมดมันจะรันขึ้นมาได้หรือป่าวคับ อยากทราบจริงๆ เมล์มาบอกผมด้วยนะท่านเทพ ที่ clash_oud@hotmail.com ขอบพระคุณอย่างสูงนะครับท่านเทพ 

[ความเห็นที่:  7] จากคุณ : สมชาย เมื่อ 2/10/2553 0:35:22  IP: 117.47.248.78

gadget รูปปฏิทินที่ตั้งไว้ในหน้าเดสท๊อป ถ้าอยากจะให้มันเรียงเริ่มจากวันอาทิตย์ ไปถึงวันเสาร์เหมือนกับการเรียงของปฏิทินไทยที่ใช้กัน จะสามารถทำได้ไหมครับ  รบกวนถามหน่อยครับ  ขอบคุณครับ หากไม่เป็นการรบกวน ผมขอฝากเมล์ไว้นะครับ elderest@hotmail.com


ก่อนการคลิ๊กโพสต์ข้อความ ขอความกรุณาใช้ถ้อยคำที่สุภาพด้วยครับ เว็บไซต์แห่งนี้เป็นแหล่งเผยแพร่ความรู้ ดังนั้นสำหรับท่านที่พยายามจะป่วนเว็บไซต์ หากท่านเป็น "คนไทย" เช่นเดียวกันกับผม ก็ขอความกรุณาได้โปรดเห็นใจ "คนไทย" อีกจำนวนไม่น้อย ที่เข้ามาขอความช่วยเหลือ จากเว็บไซต์ของผมด้วยน่ะครับ และหากท่านใดไม่เข้าใจในตรงจุดไหน ก็ขอให้ระบุสิ่งที่อยากจะถามออกมา บทความของผมแทบทั้งหมดต้องอาศัยทักษะการปฏิบัติเป็นหลัก ดังนั้นขอให้ดู และ ทดสอบจากโค้ดโปรแกรมประกอบตามไปด้วย
IP Address: 54.226.252.142
ชื่อของคุณ:

ข้อคิดเห็น:

4 + 2 = ?  (กรุณาป้อนคำตอบลงในช่องด้านล่างให้เป็น ภาษาไทย ตามผลบวกของตัวเลขให้ถูกต้องก่อนด้วยน่ะครับ เช่น ศูนย์)
  


จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
Copyright © 2005 g2gNet.Com All rights reserved.
Email: thongkorn@hotmail.com หรือ โทร. 08-6862-6560