【问题标题】:VB Script to create guid based on creted date timeVBScript 根据创建的日期时间创建 uuid
【发布时间】:2011-12-16 16:53:57
【问题描述】:

我有以下 VB Scrtip,我在 excel 中使用它来生成 GUID。理想情况下,我希望 GUID 不仅基于随机创建的日期时间。无论如何修改此脚本以根据日期和时间构建 GUID?

 Private Type GUID
 Data1 As Long
 Data2 As Long
 Data3 As Long
 Data4(8) As Byte
 Private Declare Function CoCreateGuid _
 Lib "ole32.dll" _
 (ByRef pGUID As GUID) As Long

 Private Declare Function StringFromGUID2 _
 Lib "ole32.dll" _
 (ByRef rGUID As Any, _
 ByVal lpstrCLSID As Long, _
 ByVal cbMax As Long) As Long

 Function CreateGUID() As String

 Dim b() As Byte
 Dim BuffSize As Long
 Dim RetVal As Long
 Dim MyGUID As GUID
 BuffSize = 40
 ReDim b(BuffSize * 2) As Byte  
 RetVal = CoCreateGuid(MyGUID)
 RetVal = StringFromGUID2(MyGUID, VarPtr(b(0)), BuffSize)
 CreateGUID = Left$(b, RetVal - 1)
 End Function

非常感谢

【问题讨论】:

  • 你到底在追求什么?有 GUID 实现将 data4 的最后一部分替换为时间戳,并且有顺序 GUID .. 为什么您需要它们不处于自然随机状态?
  • 我知道它可以用 CombGuid 完成。但无法弄清楚使用 VBS 的方法。我更喜欢使用这种 CombGuid 格式来避免索引碎片。再次感谢。
  • 你想要这个在 vbs/vba 还是 vb6 中(例如),你提到索引是你使用 sql server 吗?

标签: vba vb6 guid


【解决方案1】:

GUID 通常具有日期/时间组件以及其他数据。如果您不希望它们成为 GUID,您可以组成任何您想要的字符串,但您需要想出自己的方法来避免冲突,尤其是使用真正的 GUID。

【讨论】:

  • 我真的不知道 GUID 与小费/日期有关...不只是与 MAC 地址有关吗?还是我混淆了什么?
  • 它们由几个部分组成,具体取决于version,原始规范使用的是mac地址。
猜你喜欢
  • 2021-08-06
  • 2018-07-25
  • 2018-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-29
  • 1970-01-01
  • 2022-11-29
相关资源
最近更新 更多