Возможность обновления новых данных в одном столбце, но не в состоянии хранить старые данные в другом - PullRequest
0 голосов
/ 03 февраля 2012

Я опубликовал вопрос 4 месяца назад в Сохранение старых данных в одном столбце и обновление новых данных в другом столбце в той же таблице .

Теперь я снова работаю над кодами, и вот моя проблема. После того, как я нажал кнопку «Обновить» на веб-странице, old (previous) LastName не сохранялся в столбце Alias ​​. Фактически, new LastName сохраняется в столбцах LastName (для нового LastName) и Alias ​​ (предположительно для предыдущего LastName). Мне нужно, чтобы old LastName был сохранен в столбце Alias ​​. Пожалуйста, просмотрите ниже и посмотрите, что я сделал не так. Заранее спасибо!

Хранимая процедура

ALTER PROCEDURE [dbo].[KeepAliasName]
@PeopleID int,
@LastName varchar(25)

AS BEGIN

UPDATE People
SET Alias = LastName,
LastName = @LastName

WHERE CAST(PeopleID AS Varchar(25)) = @PeopleID

END

Коды, которые вызывают хранимую процедуру

Dim oCmd1
Dim ln
Dim retCount

Set oCmd1 = Server.CreateObject("ADODB.Connection")
Set oCmd1 = Server.CreateObject("ADODB.Command")

''' EXECUTE THE COMMAND TO CREATE THE RECORDSET
With oCmd1
.ActiveConnection = Connect
.Commandtext = "KeepAliasName"
.CommandType = adoCmd1StoredProc
.Parameters.Append .CreateParameter("@PeopleID", adInteger, adParamInput, 25)
.Parameters("@PeopleID") = pID 'some Employee you get from your code
.Parameters.Append .CreateParameter("@LastName", adVarChar, adParamInput, 25)
.Parameters("@LastName") = lastnameVal 'some Employee's name you get from your code
.Execute ln, , adExecuteNoRecords
End With

Set oCmd1 = Nothing

1 Ответ

0 голосов
/ 03 февраля 2012

Что ж, если не наступит момент Doh, например, установка новой фамилии на старую фамилию, y = единственное объяснение состоит в том, что dbms выполняет два набора в обратном порядке!

Хотя это легко выяснить.

ALTER PROCEDURE [dbo].[KeepAliasName]
@PeopleID int,
@LastName varchar(25)


AS BEGIN

UPDATE People
SET Alias = LastName

WHERE CAST(PeopleID AS Varchar(25)) = @PeopleID

UPDATE People
SET LastName = @LastName

WHERE CAST(PeopleID AS Varchar(25)) = @PeopleID

END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...