fsk33 2024-11-12 16:16 采纳率: 77.4%
浏览 13
已结题

vb6.0如何向数据库中添加自动生成的字段数据。

我用VB6.0编程,已连接sql server数据库(Selectsqlbd2),需要向数据表Pub_Exam添加或更新数据,在添加时,表中字段Exam_GUID不能为空,而且估计是自动生成的(过往数据是很长的一串类似16进制代码,如17A60D12-63DF-4CC6-9A02-C6EE3002A3AB),我应该如何操作呢。以下为VB6代码。(是vb6.0,不是vb.net,选项里没有vb6)

Dim SQL As String
SQL = "select * from Pub_Exam where Exam_HisCode='" & Exam_HisCode & "'"
Set rrsbd2 = Selectsqlbd2(SQL)
If rrsbd2.EOF = True Then
rrsbd2.AddNew
rrsbd2("Exam_HisCode") = Exam_HisCode
rrsbd2("Pat_Name") = Pat_Name
rrsbd2("Pat_Sex") = Pat_Sex
Exam_GUID这里不知道如何写!
Else
rrsbd2("Pat_Name") = Pat_Name
rrsbd2("Pat_Sex") = Pat_Sex
End If
rrsbd2.Update
MsgBox "报告数据推送机构服务器成功!", 0 + 64, "提示 "
Exit Sub

  • 写回答

23条回答 默认 最新

  • 程序猿小D 2024-11-12 16:18
    关注
    
    在VB6中操作SQL Server数据库时,如果你需要生成一个类似GUID(全局唯一标识符)的值,你可以使用SQL Server的NEWID()函数来生成一个新的GUID。在你的代码中,你可以在添加新记录时调用这个函数来设置Exam_GUID字段。
    
    以下是修改后的代码,包括生成新的GUID并设置到Exam_GUID字段:
    
    vb
    Dim SQL As String
    SQL = "SELECT * FROM Pub_Exam WHERE Exam_HisCode='" & Exam_HisCode & "'"
    Set rrsbd2 = Selectsqlbd2.Execute(SQL)  ' 确保这里使用的是正确的执行方法,根据你的连接对象类型调整
     
    If rrsbd2.EOF Then
        ' 如果没有找到记录,添加新记录
        rrsbd2.AddNew
        rrsbd2("Exam_HisCode") = Exam_HisCode
        rrsbd2("Pat_Name") = Pat_Name
        rrsbd2("Pat_Sex") = Pat_Sex
        ' 使用SQL Server的NEWID()函数生成新的GUID
        rrsbd2("Exam_GUID") = Selectsqlbd2.Execute("SELECT NEWID() AS NewGuid").Fields("NewGuid").Value
    Else
        ' 如果找到记录,更新现有记录
        rrsbd2.Edit
        rrsbd2("Pat_Name") = Pat_Name
        rrsbd2("Pat_Sex") = Pat_Sex
        rrsbd2.Update
    End If
     
    ' 注意:这里假设rrsbd2是一个Recordset对象,并且Selectsqlbd2是一个正确配置的ADODB.Connection对象
    ' 如果rrsbd2是在执行查询后直接使用的,确保它没有被提前关闭或释放
     
    ' 更新数据库后,通常不需要再次调用rrsbd2.Update在AddNew或Edit之后(因为已经在Edit块中调用了)
    ' 除非你在循环或多次修改中忘记调用Update
     
    ' 显示消息框
    MsgBox "报告数据推送机构服务器成功!", vbInformation, "提示"
     
    ' 清理
    Set rrsbd2 = Nothing
    ' 确保连接也被适当关闭,尽管这通常在程序的其它部分处理
     
    Exit Sub
    注意:
    
    确保Selectsqlbd2是一个有效的ADODB.Connection对象,并且你已经正确设置了它的连接字符串。
    使用Execute方法执行SQL语句时,请确保SQL注入的风险被妥善处理(虽然在这个例子中,由于只是根据Exam_HisCode查询,风险相对较低)。在实际应用中,考虑使用参数化查询来防止SQL注入。
    上面的代码假设rrsbd2是一个Recordset对象,并且Execute方法返回了一个可以直接操作的Recordset。根据你的实际连接对象和设置,可能需要对这部分代码进行调整。
    vbInformation是MsgBox函数的图标常量之一,用于显示信息消息框。
    希望这可以帮助你解决问题!
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(22条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月14日
  • 已采纳回答 11月14日
  • 创建了问题 11月12日

悬赏问题

  • ¥50 gki vendor hook
  • ¥15 centos7中sudo命令无法使用
  • ¥15 灰狼算法和蚁群算法如何结合
  • ¥15 这是一个利用ESP32自带按键和LED控制的录像代码,编译过程出现问题,请解决并且指出错误,指导如何处理 ,协助完成代码并上传代码
  • ¥20 stm32f103,hal库 hal_usart_receive函数接收不到数据。
  • ¥20 求结果和代码,sas利用OPTEX程序和D-efficiency生成正交集
  • ¥50 adb连接不到手机是怎么回事?
  • ¥20 抓取数据时发生错误: get_mooncake_data() missing 1 required positional argument: 'driver'的问题,怎么改出正确的爬虫代码?
  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联