2011-09-07 16 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 
相關問題