如何跟踪或限制多个上传到SQL Server数据库?

时间:2016-05-23 14:21:15

标签: sql-server excel excel-vba vba

我是开发工作的新手,我正在开发一个带有上传宏按钮的Excel工作表,允许用户将他们的数据上传(插入语句)到我们的SQL Server数据库中。

只有7个用户。如果多次单击上传按钮,我将如何限制上传到我们数据库的数量?

我们正努力让所有7位用户将其提交给负责人,该人员会点击上传但只是想尽量减少用户错误。任何帮助非常感谢。

2 个答案:

答案 0 :(得分:0)

通过正确构建解决方案,有多种方法可以实现这一目标。 最明显的方法是设计数据库模式,使设计不允许重复。

主键应该是你的朋友。确保正确定义了有问题的表上的主键。

因此,即使所有7个用户尝试插入任何次数,也可以减轻重复插入的问题。

答案 1 :(得分:0)

  

将每个用户的上传次数存储在隐藏的工作表中,并在VBA中使用类似的内容:

Sub Upload()

Dim uploadWS As Worksheet
Dim userRow As Range
Const MAX_UPLOADS As Byte = 3 '// Change to whatever you want

Set uploadWS = Sheets("Upload Data")

'// lets assume userID in column A and number of uploads in column B
Set userRow = uploadWS.Range("A:A").Find(Environ$("USERNAME"))

If userRow Is Nothing Then
    With uploadWS.Range("A" & uploadWS.Rows.Count).End(xlUp).Offset(1, 0)
        .Value = Environ$("USERNAME")
        .Offset(0, 1).Value = 1
    End With

    '// Code for uploading here
Else
    With userRow.Offset(0, 1)
        If .Value <= MAX_UPLOADS Then
            .Value = .Value + 1
        Else
            MsgBox "You have exceeded max allowed uploads, please contact admin.", vbOkOnly + vbCritical, "Error"
            Exit Sub
        End If
    End With

    '// Code for uploading here

End If

End Sub