是否可以将数据提交到SQL数据库,等待完成,然后使用经典ASP返回从SQL生成的ID?

Cor*_*eyT 4 sql forms ado asp-classic

我有一个ASP表单,需要将数据提交到两个不同的系统.首先,数据需要进入MS SQL数据库,这将获得一个ID.然后,我需要将所有表单数据连同该ID一起提交给外部系统.

几乎所有代码都可以正常工作,数据进入数据库,数据将进入外部系统.问题是当我执行该查询时,我没有从SQL中获取我的ID.我觉得这种情况正在发生,因为代码中出现的速度有多快.我想,数据库正在添加它的行,同时我的帖子页面运行它的查询以获取ID.

我需要知道一种等待SQL完成插入或等待特定时间的方法.我已经尝试使用黑客用ASP"睡觉",这没有帮助.

我相信我可以在.Net中实现这一点,我的背景比ASP更多.Net,但这是我必须在我当前的项目中使用的.

有任何想法吗?

编辑:从函数写入DB的代码.

driis - 这是我对这应该如何工作的理解,但我对ID的后续查询没有返回任何内容,所以我的结果还没有完成插入或更新.也许我错了,如果是这样,那就更复杂了.:(

这里的任何一种方式都是来自更新数据库的函数的代码.请注意,这个代码是继承的,我的项目的其余部分是由我编写的,但是我仍然坚持使用以前开发人员的这些函数.

Sub DBWriteResult
    Dim connLeads
    Dim sSQL
    Dim rsUser
    Dim sErrorMsg
    Dim sLeads_Connection


  ' Connect to the Leads database
  ' -------------------------------------------------------------------
    sLeads_Connection = strDatabaseConnection


    Set connLeads = CreateObject("ADODB.Connection")
    connLeads.Provider = "SQLOLEDB.1"
    On Error Resume Next
    connLeads.Open sLeads_Connection

    If Err.number <> 0 Then

    ' Bad connection display error
        ' -----------------------------------------------------------------    
       Response.Write "Database Write Error: 001 Contact Programmer"
       Set connLeads = Nothing
       Exit Sub
    Else

    ' Verify the transaction does not already exist. 
    ' -----------------------------------------------------------------------
      Set rsUser = Server.CreateObject("ADODB.Recordset")
      rsUser.LockType = 3
      rsUser.CursorLocation = 3
      sSQL = "SELECT * "             
      sSQL = sSQL & " FROM Leads;" 
      rsUser.Open sSQL, connLeads, adOpenDynamic    

      Response.Write Err.Description
      If Err.number = 0 Then
        ' Add the record
        ' -----------------------------------------------------------
            rsUser.AddNew
            rsUser.Fields("LeadDate") = Date()&" "&Time()
            rsUser.Fields("StageNum") = ESM_StageNum
            rsUser.Fields("MarketingVendor") = ESMSourceData
            rsUser.Fields("FirstName") = ESM_FirstName
            rsUser.Fields("Prev_LName") = Request.Form ("Prev_LName")
            rsUser.Fields("LastName") = ESM_LastName
            rsUser.Fields("ProgramType") = ESM_ProgramType
            rsUser.Fields("ProgramofInterest") = ESM_ProgramofInterest
            rsUser.Fields("Phone1") = Phonenumber
                rsUser.Fields("Phone2") = ESM_Phonenumber2
            rsUser.Fields("Address1") = ESM_Address
            rsUser.Fields("Address2") = ESM_Address2
            rsUser.Fields("City") = ESM_City
            rsUser.Fields("State") = ESM_State
            rsUser.Fields("Region") = ESM_Region
            rsUser.Fields("Zip") =  ESM_Zip
            rsUser.Fields("Country") = ESM_Country
            rsUser.Fields("Email") = ESM_Email
            rsUser.Fields("MilitaryBranch") = ESM_MilitaryBranch
            rsUser.Fields("MilitaryStatus") = ESM_MilitaryStatus
            rsUser.Fields("BestTimeToCall") = ESM_BestTimeToCall
            rsUser.Fields("DateofBirth") = ESM_DateofBirth

            rsUser.Update
    Else
 ' There was an error
 Response.Write "There was an error. Error code is: "&Err.number&" "&Err.Desc

     End if

    End If

      ' Close the recordset
      ' ---------------------------------------------------------------
        Call rsUser.Close
        Set rsUser.ActiveConnection = Nothing
        Set rsUser = Nothing


  ' Destroy the connection to the database
  ' -------------------------------------------------------------------
    Set connLeads = Nothing

  End Sub
Run Code Online (Sandbox Code Playgroud)

rou*_*tic 5

听起来你正试图这样做:

  1. 在DB 1中插入一些数据
  2. 从插入的数据中检索ID
  3. 将数据+ ID发送到DB 2

这是一个很好的五年,但我相信它看起来像这样:

dim connStr1
connStr1 = "[connection string 1]"

dim conn1
set conn1 = server.createobject("adodb.connection")
conn1.open connStr1

dim sql
sql = " SET NOCOUNT ON " & vbCrLf & _
      " INSERT FOO (a, b, c) VALUES (1, 2, 3) " & vbCrLf & _
      " SET NOCOUNT OFF " & vbCrLf & _
      " SELECT SCOPE_IDENTITY() "

dim rs
set rs = conn1.execute(sql)
rs.close

dim id
set id = CInt(rs(0))

conn1.close

dim connStr2
connStr2 = "[connection string 2]"

dim conn2
set conn2 = server.createobject("adodb.connection")
conn2.open connStr2
conn2.execute("INSERT FOO (id, a, b, c) VALUES (" & id & ", 1, 2, 3)")
conn2.close
Run Code Online (Sandbox Code Playgroud)

祝你好运,离开我的草坪!