У меня есть форма ASP, которая должна отправлять данные в две разные системы. Сначала данные должны быть помещены в базу данных MS SQL, которая получит идентификатор. Затем мне нужно отправить все эти данные формы во внешнюю систему вместе с этим идентификатором.
Практически все в коде работает просто отлично, данные поступают в базу данных, а данные отправляются во внешнюю систему. Проблема в том, что я не получаю свой идентификатор обратно из SQL при выполнении этого запроса. У меня сложилось впечатление, что это происходит из-за того, как быстро все происходит в коде. Я думаю, что база данных добавляет свою строку в то же время, когда моя страница поста запускает свой запрос для получения идентификатора.
Мне нужно знать, как ждать, пока SQL завершит вставку, или, может быть, подождать определенное время. Я уже пытался использовать хаки для "сна" с ASP, что не помогло.
Я уверен, что смогу добиться этого в .Net, мой опыт больше .Net, чем ASP, но это то, с чем мне приходится работать над моим текущим проектом.
Есть идеи?
EDIT: код записи функции в БД.
driis - Это было мое понимание того, как это должно работать, но мой дополнительный запрос для идентификатора ничего не возвращает, поэтому я считаю, что строка еще не закончила вставку или обновление. Может быть, я ошибаюсь, если это так, это еще больше усложняет. (
В любом случае, здесь указан код функции обновления БД. Имейте в виду, этот код унаследован, остальная часть моего проекта написана мной, но я застрял, используя эти функции от предыдущего разработчика.
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