BMS-HOSxP Community

HOSxP => Development => ข้อความที่เริ่มโดย: SBR10993 ที่ สิงหาคม 24, 2006, 14:51:12 PM

หัวข้อ: GUID function สำหรับ VB Developer ครับ
เริ่มหัวข้อโดย: SBR10993 ที่ สิงหาคม 24, 2006, 14:51:12 PM
หากไม่ถนัดสำหรับ select guid() ใน mysql ก็ใช้ฟังชั่นตัวนี้ดูก็ได้ครับ..ได้ผลดีอยู่แต่ว่าเป็นวีบี ไม่ใช่ delphi ครับ
*-------------------------------------------------------
Option Explicit
Type GUID
    l1 As Long
    l2 As Long
    l3 As Long
    l4 As Long
End Type
Declare Function CoCreateGuid Lib "OLE32.DLL" (lpGuid As GUID) As Long
Declare Function StringFromGUID2 Lib "OLE32.DLL" (lpGuid As GUID, ByVal lpString As String, ByVal cbBytes As Integer) As Integer

Public Function UniqueValue() As String
Dim id As GUID
Dim sTemp$
Dim nLen%, hr&

hr = CoCreateGuid(id)
If (hr = 0) Then
    sTemp = StrConv(String(38, Chr(0)), vbUnicode)
    nLen = StringFromGUID2(id, sTemp, Len(sTemp))
    sTemp = StrConv(sTemp, vbFromUnicode)
    If (nLen > 0) Then
        If (Left(sTemp, 1) = "{") Then sTemp = Right(sTemp, Len(sTemp) - 1)
        If (Right(sTemp, 1) = "}") Then sTemp = Left(sTemp, Len(sTemp) - 1)
        nLen = InStr(sTemp, "-")
        Do While (nLen <> 0)
            sTemp = Left(sTemp, nLen - 1) & Right(sTemp, Len(sTemp) - nLen)
            nLen = InStr(sTemp, "-")
        Loop
    Else
        sTemp = ""
    End If
End If
UniqueValue = sTemp

End Function

*----------------------------------------------------------------------
หัวข้อ: Re: GUID function สำหรับ VB Developer ครับ
เริ่มหัวข้อโดย: manoi ที่ สิงหาคม 24, 2006, 19:33:45 PM
โค๊ด: [Select]
[code lang=vb]

Option Explicit
Type GUID
    l1 As Long
    l2 As Long
    l3 As Long
    l4 As Long
End Type
Declare Function CoCreateGuid Lib "OLE32.DLL" (lpGuid As GUID) As Long
Declare Function StringFromGUID2 Lib "OLE32.DLL" (lpGuid As GUID, ByVal lpString As String, ByVal cbBytes As Integer) As Integer

Public Function UniqueValue() As String
Dim id As GUID
Dim sTemp$
Dim nLen%, hr&

hr = CoCreateGuid(id)
If (hr = 0) Then
    sTemp = StrConv(String(38, Chr(0)), vbUnicode)
    nLen = StringFromGUID2(id, sTemp, Len(sTemp))
    sTemp = StrConv(sTemp, vbFromUnicode)
    If (nLen > 0) Then
        If (Left(sTemp, 1) = "{") Then sTemp = Right(sTemp, Len(sTemp) - 1)
        If (Right(sTemp, 1) = "}") Then sTemp = Left(sTemp, Len(sTemp) - 1)
        nLen = InStr(sTemp, "-")
        Do While (nLen <> 0)
            sTemp = Left(sTemp, nLen - 1) & Right(sTemp, Len(sTemp) - nLen)
            nLen = InStr(sTemp, "-")
        Loop
    Else
        sTemp = ""
    End If
End If
UniqueValue = sTemp

End Function
หัวข้อ: Re: GUID function สำหรับ VB Developer ครับ
เริ่มหัวข้อโดย: SBR10993 ที่ สิงหาคม 24, 2006, 22:15:02 PM
มีอีกครับ...
' VBIDEUtils#****************************************************
' * Programmer Name  : kanchit pinijmontree
' * Web Site         : http://10.136.215.19/codeCreate/
' * E-Mail           : chit164@hotmail.com
' * Date             : 22/8/49
' * Time             : 15:50
' * Module Name      : GUID_Module
' * Module Filename  : sGUID.bas
' *************************************************************
' * Comments         : Create a Globally Unique Identifier (GUID)
' *
' * Samples:
' *  {3201047B-FA1C-11D0-B3F9-004445535400}
' *  {0547C3D5-FA24-11D0-B3F9-004445535400}
' *
' *************************************************************

Option Explicit
DefLng A-Z

Private Type GUID
   Data1          As Long
   Data2          As Integer
   Data3          As Integer
   Data4(0 To 7)  As String * 1
End Type

Declare Function CoCreateGuid Lib "ole32.dll" (tGUIDStructure As GUID) As Long

Const mciLen As Integer = 4

' #VBIDEUtils#***************************************************
' * Programmer Name  : kanchit pinijmontree
' * Web Site         : http://10.136.215.19/codeCreate/
' * E-Mail           : chit164@hotmail.com
' * Date             : 22/8/49
' * Time             : 15:50
' * Module Name      : GUID_Module
' * Module Filename  : sGUID.bas
' *************************************************************
' * Comments         : Create a Globally Unique Identifier (GUID)
' *
' * Samples:
' *  {3201047B-FA1C-11D0-B3F9-004445535400}
' *  {0547C3D5-FA24-11D0-B3F9-004445535400}
' *
' **************************************************************

Public Function CreateGUID() As String
 ' VBIDEUtils#****************************************************
 ' * Programmer Name  : kanchit pinijmontree
' * Web Site         : http://10.136.215.19/codeCreate/
' * E-Mail           : chit164@hotmail.com
' * Date             : 22/8/49
' * Time             : 15:50
' * Module Filename  : sGUID.bas
' * Module Name      : GUID_Module
' * Procedure Name   : CreateGUID
' * Parameters       :
' *************************************************************
   ' * Comments         : Create a Globally Unique Identifier (GUID)
   ' *
   ' *
   ' ************************************************************
   
   Dim sGUID   As String       'store result here
   Dim tGUID   As GUID         'get into this structure
   If CoCreateGuid(tGUID) = 0 Then 'use API to get the GUID
      With tGUID              'build return string
         sGUID = "{" & PadLeft(Hex(.Data1), mciLen * 2) & "-"
         sGUID = sGUID & PadLeft(Hex(.Data2), mciLen) & "-"
         sGUID = sGUID & PadLeft(Hex(.Data3), mciLen) & "-"
         sGUID = sGUID & FormatGUIDData4(.Data4())
      End With
      sGUID = sGUID & "}"     'ending brace
      CreateGUID = sGUID
   End If
   
End Function

Private Function FormatGUIDData4(aryData4() As String * 1) As String
   
   Dim I       As Integer      'loop thru the array
   Dim sGUID   As String       'store result here
   Dim sTemp1  As String       'first part here
   Dim sTemp2  As String       'second part here
   
   For I = LBound(aryData4()) To UBound(aryData4())   'process string array
      If I < 2 Then           'first part
         sTemp1 = sTemp1 & Hex(Asc(aryData4(I)))
      Else                    'second part
         sTemp2 = sTemp2 & Hex(Asc(aryData4(I)))
      End If
   Next
   sGUID = PadLeft(sTemp1, mciLen) & "-" & PadLeft(sTemp2, mciLen * 3) 'pad left with zeros
   FormatGUIDData4 = sGUID                     'return what we created

End Function

Private Function PadLeft(sString As String, iLen As Integer) As String
   
   ' Pad with left zeros if needed
   Dim sTemp         As String
   sTemp = Right$(String$(iLen, "0") & sString, iLen)
   PadLeft = sTemp
   
End Function