2011-09-07 70 views
0

我不是专业的程序员,而是需要帮助的发烧友。这里是我的挑战:将旧数据存储在一列中,并在同一表格的另一列中更新新数据

我有一张充满员工数据的表格。

目前,我们的任何员工都可以去“更新”的网页上我们的网站,并通过以前一个是显示在文本框中键入他的姓氏,然后点击提交,他最后一次名称将在数据库中更新。但是,我的主管希望将姓氏保留在之前的姓氏与新姓氏保持一致。她的想法是当在文本框中他姓员工类型,它将触发数据库存储在一个名为“别名”一栏他以前姓氏,然后在更新他的姓“姓氏“列。我该如何继续?

下面是表的结构:我明白任何帮助和/或建议,我可以得到

PeopleID (int) 
JobIDNum (int) 
EmployeeIDNum (varchar(25)) 
Email (varchar(100)) 
Password (varchar(50)) 
LastName (varchar(50)) 
FirstName (varchar(25)) 
Deleted (char(1)) 
Alias (varchar(50)) 

+0

您可以使用UPDATE触发器来实现相同的。 – Chandu

回答

0
UPDATE TABLENAME 
    SET Alias = LastName, LastName = @LastName 
WHERE PeopleID = @PeopleID 

@LastName值的参数,@PeopleID是对应人的ID。

0

建议您可以从ASP调用的存储过程。

CREATE PROC UpdateEmp 
    @EmpID int, 
    @LastName varchar(50), 
    --all the others properties you need to update this person 
AS 
BEGIN 

    UPDATE Employee 
    SET Alias = LastName, 
     LastName = @LastName, 
     --all the other properties you want updated. 
    WHERE PeopleID = @EmpID; 

END 

呼叫在您的ASP代码这个存储过程是这样的:

Dim cmd 
Dim ln 
Dim retCount  
Dim conn 
Set conn= Server.CreateObject("ADODB.Connection")  
Set cmd = Server.CreateObject("ADODB.Command")  
conn.Open "some connection string" 
With cmd 
    .ActiveConnection = conn 
    .Commandtext = "UpdateEmp" 
    .CommandType = adCmdStoredProc 
    .Parameters.Append .CreateParameter("@EmpID", adInteger, adParamInput, 10) 
    .Parameters("@EmpID") = 22 'some Employee you get from your code 
    .Parameters.Append .CreateParameter("@LastName", adVarChar, adParamInput, 50) 
    .Parameters("@LastName") = "MyLastName" 'some Employee you get from your code 
    .Execute ln, , adExecuteNoRecords 
End With   
Set cmd = Nothing 
+0

谢谢你的帮助!我的工作地点仍然使用经典ASP,所以我需要稍微更改ASP代码。 – Meng

+0

当我检查存储过程的语法时,它说:“错误156:关键字'AS'附近的语法错误。任何想法为什么?谢谢! – Meng

+0

Meng:这是在LastName之后的逗号varchar(50) –

0

试试这个更新语句:

UPDATE Employee 
Set LastName = @NewLastName, 
    Alias = LastName 
WHERE PeopleId = @Whatever 
相关问题