Create CUID
От: Abbat  
Дата: 24.04.02 07:17
Оценка:
Народ .. подскажите.. надо создать таблицу имя которой GUID .. точнее таблица не одна .. соответсвенно в коде :

  Dim Rs, i, sql(12), sqlcmd
  Set Rs = CreateObject("ADODB.Recordset")
  sql(0) = "CREATE TABLE '" + CoCreateGuid + "'("
  sql(1) = "ID uniqueidentifier,"
  sql(2) = "Message nvarchar(250),"
  sql(3) = "AuthorID uniqueidentifier,"
  sql(4) = "TargetUserID uniqueidentifier,"
  sql(5) = "DatePosted datetime"
  sql(6) = ")"
  Set Rs = Nothing


вместо CoCreateGuid надо вставить генератор GUIDа ... подскажите как.. а то что то не разберусь..
Abbat
Re: Create CUID
От: SergeMS Россия  
Дата: 24.04.02 07:23
Оценка: 8 (1)
Здравствуйте Abbat, Вы писали:

A>вместо CoCreateGuid надо вставить генератор GUIDа ... подскажите как.. а то что то не разберусь..


Вот кусок кода из примеров MSDN:

Declare Function CoCreateGuid Lib "OLE32.DLL" (pGuid As GUID) As Long
Private Const S_OK = 0 ' return value from CoCreateGuid
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type


Public Function GetGUID() As String
Dim lResult As Long
Dim lguid As GUID
Dim MyguidString As String
Dim MyGuidString1 As String
Dim MyGuidString2 As String
Dim MyGuidString3 As String
Dim DataLen As Integer
Dim StringLen As Integer
Dim i%

On Error GoTo error_GetGUID

lResult = CoCreateGuid(lguid)

If lResult = S_OK Then
MyGuidString1 = Hex$(lguid.Data1)
StringLen = Len(MyGuidString1)
DataLen = Len(lguid.Data1)
MyGuidString1 = LeadingZeros(2 * DataLen, StringLen) _
& MyGuidString1 'First 4 bytes (8 hex digits)

MyGuidString2 = Hex$(lguid.Data2)
StringLen = Len(MyGuidString2)
DataLen = Len(lguid.Data2)
MyGuidString2 = LeadingZeros(2 * DataLen, StringLen) _
& Trim$(MyGuidString2) 'Next 2 bytes (4 hex digits)

MyGuidString3 = Hex$(lguid.Data3)
StringLen = Len(MyGuidString3)
DataLen = Len(lguid.Data3)
MyGuidString3 = LeadingZeros(2 * DataLen, StringLen) _
& Trim$(MyGuidString3) 'Next 2 bytes (4 hex digits)

GetGUID = MyGuidString1 & MyGuidString2 & MyGuidString3

For i% = 0 To 7
MyguidString = MyguidString & Format$(Hex$(lguid.Data4(i%)), "00")
Next i%

'MyGuidString contains last 8 bytes of Guid (16 hex digits)
GetGUID = GetGUID & MyguidString

Else
GoTo error_GetGUID
End If

Exit Function

error_GetGUID:
GetGUID = ""
Exit Function
End Function
Re: Create CUID
От: SergeMS Россия  
Дата: 24.04.02 07:30
Оценка: 8 (1)
Здравствуйте Abbat, Вы писали:

A>вместо CoCreateGuid надо вставить генератор GUIDа ... подскажите как.. а то что то не разберусь..


Вот еще вариант из MSDN:

'API Calls
Private Declare Function CoCreateGuid Lib "ole32.dll" (pGuid As GUID) As Long
Private Declare Function StringFromGUID2 Lib "ole32.dll" _
(pGuid As GUID, ByVal lpString As Long, ByVal lMaxLen As Long) As Long

Private Type GUID
    GUID1   As Long
    GUID2   As Integer
    GUID3 As Integer
    GUID4(0 To 7)   As Byte
End Type

Public Function GetGUID() As String
    Dim strGUID As String
    Dim lngResult As Long
    Dim udtGUID As GUID

    lngResult = CoCreateGuid(udtGUID)
    strGUID = String$(38, 0)
    StringFromGUID2 udtGUID, StrPtr(strGUID), 39
    GetGUID = Mid$(strGUID, 2, 32)

End Function
Re[2]: Create CUID
От: Abbat  
Дата: 24.04.02 07:33
Оценка:
Здравствуйте SergeMS, Вы писали:

SMS>Здравствуйте Abbat, Вы писали:


Вы чуть-чуть не поняли.. мне нужен генератор GUIDа .. причем желательно стандартный.. мне нужно задавать каждый раз уникальный гуид как имя таблицы..
Abbat
Re[3]: Create CUID
От: SergeMS Россия  
Дата: 24.04.02 07:36
Оценка:
Здравствуйте Abbat, Вы писали:

A>Вы чуть-чуть не поняли.. мне нужен генератор GUIDа .. причем желательно стандартный.. мне нужно задавать каждый раз уникальный гуид как имя таблицы..


функция GetGUID() — это и есть генератор GUID'а
Re[4]: Create CUID
От: Abbat  
Дата: 24.04.02 07:40
Оценка:
Здравствуйте SergeMS,

Мне хотелось бы узнать.. нет ли стандартной функции для этого дела..
Abbat
Re[5]: Create CUID
От: SergeMS Россия  
Дата: 24.04.02 07:41
Оценка:
Здравствуйте Abbat, Вы писали:

A>Мне хотелось бы узнать.. нет ли стандартной функции для этого дела..


в этой функции используются стандартные функции Win32 API
Re[2]: Create CUID
От: Abbat  
Дата: 24.04.02 07:43
Оценка:
Спасибо большое.. я воспользовался этим участком кода..
Спасибо за внимание! и отдельное спасибо SergeMS ..
Abbat
Re: Create CUID
От: Lexey Россия  
Дата: 24.04.02 07:48
Оценка:
Здравствуйте Abbat, Вы писали:

A> Народ .. подскажите.. надо создать таблицу имя которой GUID .. точнее таблица не одна .. соответсвенно в коде :

A>

A>  Dim Rs, i, sql(12), sqlcmd
A>  Set Rs = CreateObject("ADODB.Recordset")
A>  sql(0) = "CREATE TABLE '" + CoCreateGuid + "'("
A>  sql(1) = "ID uniqueidentifier,"
A>  sql(2) = "Message nvarchar(250),"
A>  sql(3) = "AuthorID uniqueidentifier,"
A>  sql(4) = "TargetUserID uniqueidentifier,"
A>  sql(5) = "DatePosted datetime"
A>  sql(6) = ")"
A>  Set Rs = Nothing
A>  
A>


A>вместо CoCreateGuid надо вставить генератор GUIDа ... подскажите как.. а то что то не разберусь..


Если это для SQL2k, то можно засунуть это дело в SP, а в ней использовать NEWID().
Re: Create CUID
От: Abbat  
Дата: 24.04.02 09:59
Оценка:
А вообще народ.. если кому надо вот оптимальный код:


Public Function GetGUID() As String

  Dim a As CYWUGUIDLib.GUIDUtils
 
  Set a = CreateObject("CyWUGUID.GUIDUtils.1")
  GetGUID = a.AsString

End Function
Abbat
Re[2]: А где взять CyWUGUID
От: Vi2 Удмуртия http://www.adem.ru
Дата: 24.04.02 10:05
Оценка:
Здравствуйте Abbat, Вы писали:

A>А вообще народ.. если кому надо вот оптимальный код:


A>Public Function GetGUID() As String
A>  Dim a As CYWUGUIDLib.GUIDUtils
A>  Set a = CreateObject("CyWUGUID.GUIDUtils.1")
A>  GetGUID = a.AsString
A>End Function

Может и оптимальней, но CyWUGUID.DLL нужно иметь.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re[3]: А где взять CyWUGUID
От: kig Россия  
Дата: 24.04.02 16:31
Оценка:
Здравствуйте Vi2, Вы писали:

Vi2>Здравствуйте Abbat, Вы писали:


A>>А вообще народ.. если кому надо вот оптимальный код:


Vi2>
A>>Public Function GetGUID() As String
A>>  Dim a As CYWUGUIDLib.GUIDUtils
A>>  Set a = CreateObject("CyWUGUID.GUIDUtils.1")
A>>  GetGUID = a.AsString
A>>End Function
Vi2>

Vi2>Может и оптимальней, но CyWUGUID.DLL нужно иметь. :(

В Cybiko Inc. :)) :)) :))
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.