gpt4 book ai didi

sql - 在插入之前检查 SQL Server 表中是否已存在记录

转载 作者:行者123 更新时间:2023-12-04 20:49:17 27 4
gpt4 key购买 nike

我有一个包含 5 列和 3 行数据的 Excel 表。每次数据更改时,它都会上传到数据库。下面是我将数据从 Excel 表发送到 SQL Server 中现有表的代码。挑战在于,数据库接受唯一的 ID 值。如果您在 Excel 表中的 ID 已存在于数据库中时如何更改代码,我将不胜感激?代码以以下消息终止:

Duplicates are not allowed!


Sub IMPORT()

Dim con As ADODB.Connection
Dim cmd As ADODB.Command

Set con = New ADODB.Connection
Set cmd = New ADODB.Command

Dim r As Range

con.ConnectionString = sqlconstr
con.Open "Provider=sqloledb;Data Source=DS;Initial Catalog=AUTO;Integrated Security=SSPI"

cmd.ActiveConnection = con

For Each r In Range("a2", Range("a2").End(xlDown))

If r.Offset(0, 4).Value <> "" Then

cmd.CommandText = cmd.CommandText & _
GetInsertText( _
r.Offset(0, 0).Value, _
r.Offset(0, 1).Value, _
r.Offset(0, 2).Value, _
r.Offset(0, 3).Value, _
r.Offset(0, 4).Value _
)

End If

Next r

Debug.Print cmd.CommandText

cmd.Execute

con.Close
Set con = Nothing

msgbox "Import successful"

End Sub
Function GetInsertText(ID As String, Date1 As Date, Date2 As Date, Reference As String, Price As Double)

sql = _
"insert into dbo.TP (" & _
"ID, Date1, Date2, Reference, Price)" & _
"values (" & _
"'" & ID & "'," & _
"'" & Format(Date1, "yyyy-mm-dd") & "'," & _
"'" & Format(Date2, "yyyy-mm-dd") & "'," & _
"'" & Reference & "'," & _
Replace(Format(Price, "#0.00"), ",", ".") & ");"

GetInsertText = sql

End Function

最佳答案

我不确定语法是否正确,但你可以尝试这样的事情:

Function ExistsAlready(ID As String, conn as Object) As Boolean

Dim cmd As ADODB.Command

Set cmd = New ADODB.Command

cmd.CommandText = "select count(*) from dbo.TP where ID = '" & ID & "'"
cmd.ActiveConnection = con
Set rs = cmd.Execute

ExistsAlready= rs.Fields(0).Value

End Function
那么您可以使用它来检查您的表中是否已经存在 ID。

关于sql - 在插入之前检查 SQL Server 表中是否已存在记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67776623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com