比较 ASP Classic 中的 2 个字符串以查找新元素和已删除元素

问题描述

好的,我对此深陷困境,我不知道从哪里开始..在 ASP Classic 中,我有一个来自表单的字符串,我需要将它与来自 DB 的字符串进行比较 .. 来自表单的字符串是应该加载到数据库中的新值,但在此之前我需要知道哪些元素已经在数据库中,哪些是新的,哪些将被删除..让我解释一下“概念”:

我有这两个字符串值:

  • 来自表单(新值): APR、BJE、BNI、KLR、LMO03、LMO05
  • 来自数据库(现有): APR、BJE、BNI、BIA、BOK、CHO

因此在上述情况下,我需要 2 个新变量

变量#1: 这应该包含来自尚未在 DB 中的表单的新条目,在上述情况下,这将包含以下内容

  • KLR、LMO03、LMO05

变量#2: 这应该包含来自 DB 中不在表单中的条目,并且将被删除,在上述情况下,这将包含以下内容

  • BIA、BOK、CHO

我拥有的是:

上面解释的 Requst.Form 和以下选择:

DIM SelectExistingPrivilegeMembersConn,SelectExistingPrivilegeMembeRSSQL,objSelectExistingPrivilegeMembers,PrivIoUslyGroupMembers

PrivIoUslyGroupMembers = ""

Set SelectExistingPrivilegeMembersConn = Server.CreateObject("ADODB.Connection")
SelectExistingPrivilegeMembersConn.ConnectionString="Provider=sqlOLEDB; DATA SOURCE=<SERVER>;UID=<USERNAME>;PWD=<PASSWORD>;DATABASE=<DATABASE>"
SelectExistingPrivilegeMembersConn.Open

SelectExistingPrivilegeMembeRSSQL = "SELECT *  FROM EFP_SITE_PRIVILEGE_MEMBERS WHERE PrivilegeLevelID = " & trim(Request.Form("PrivilegeLevel")) & ";"

Set objSelectExistingPrivilegeMembers = SelectExistingPrivilegeMembersConn.Execute(SelectExistingPrivilegeMembeRSSQL)

While Not objSelectExistingPrivilegeMembers.EOF

        PrivIoUslyGroupMembers = PrivIoUslyGroupMembers + objSelectExistingPrivilegeMembers("PrivilegeUserID") + ","

        objSelectExistingPrivilegeMembers.MoveNext

Wend
objSelectExistingPrivilegeMembers.Close
Set objSelectExistingPrivilegeMembers = nothing

PrivIoUslyGroupMembers = left(PrivIoUslyGroupMembers,len(PrivIoUslyGroupMembers)-1)

我该如何破解?

到目前为止我所拥有的:

我现在已经设法获得第一个变量 NewGroupMembers,但我努力获得变量 GroupMembersRemoved 我很难看到我该怎么做,需要一些帮助。

    DIM SelectExistingPrivilegeMembersConn,NewGroupMembers,GroupMembersRemoved

    NewGroupMembers = ""
    GroupMembersRemoved = ""

    Set SelectExistingPrivilegeMembersConn = Server.CreateObject("ADODB.Connection")
    SelectExistingPrivilegeMembersConn.ConnectionString="Provider=sqlOLEDB; DATA SOURCE=<SERVER>;UID=<USERNAME>;PWD=<PASSWORD>;DATABASE=<DATABASE>"
    SelectExistingPrivilegeMembersConn.Open

    
    ' Getting NewGroupMembers

        Dim values,i
        values = Split(Request.Form("EFPAdminUsers"),",")
        For i = 0 To UBound(values)

            SelectExistingPrivilegeMembeRSSQL = "SELECT COUNT(*) as isUserIn  FROM EFP_SITE_PRIVILEGE_MEMBERS WHERE PrivilegeLevelID = " & trim(Request.Form("PrivilegeLevel")) & " AND PrivilegeUserID = '" & trim(values(i)) & "';"
            
            Set objSelectExistingPrivilegeMembers = SelectExistingPrivilegeMembersConn.Execute(SelectExistingPrivilegeMembeRSSQL)           


            While Not objSelectExistingPrivilegeMembers.EOF


                IF objSelectExistingPrivilegeMembers("isUserIn") <= "0" THEN

                    NewGroupMembers = NewGroupMembers + trim(values(i)) + ","

                END IF

            objSelectExistingPrivilegeMembers.MoveNext

            Wend                

        Next    


    ' Getting GroupMembersRemoved

        

            SelectExistingPrivilegeMembeRSSQL = "SELECT PrivilegeUserID as isUserIn  FROM EFP_SITE_PRIVILEGE_MEMBERS WHERE PrivilegeLevelID = " & trim(Request.Form("PrivilegeLevel")) & ";"
            
            Set objSelectExistingPrivilegeMembers = SelectExistingPrivilegeMembersConn.Execute(SelectExistingPrivilegeMembeRSSQL)           

            While Not objSelectExistingPrivilegeMembers.EOF

                values = Split(Request.Form("EFPAdminUsers"),")
                For i = 0 To UBound(values)


                    IF objSelectExistingPrivilegeMembers("PrivilegeUserID") <> trim(values(i)) THEN

                        GroupMembersRemoved = GroupMembersRemoved + objSelectExistingPrivilegeMembers("PrivilegeUserID") + ","

                    END IF

                Next

            objSelectExistingPrivilegeMembers.MoveNext

            Wend                



    objSelectExistingPrivilegeMembers.Close
    Set objSelectExistingPrivilegeMembers = nothing

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)