2
2つのテーブルHistorytable
とstudentInformation table
があると仮定します。vb.netとSQL Serverを使用してレコードが存在するかどうかを確認する方法
If schoolyear and level exist in Historytable
update studentInformationtable
else
INSERT schoolyear,level to Historytable
update studentInformationtable
私のストアドプロシージャコード:
ALTER PROCEDURE [dbo].[InsertUpdate]
@studentID INT,
@SchoolYear Nvarchar(20),
@levels Nvarchar(20),
@FirstName Nvarchar(20),
@SurName Nvarchar(20)
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRAN
IF exists (SELECT SchoolYear, Levels
FROM StudentHistory WITH (updlock, serializable)
WHERE StudentID = @studentID)
BEGIN
UPDATE StudentInformation
SET FirstName = @FirstName ,
Surname = @SurName
WHERE StudentID = @studentID
END
ELSE
BEGIN
INSERT INTO Studenthistory (StudentID, SchoolYear, Levels)
VALUES (@studentID, @SchoolYear, @levels)
UPDATE StudentInformation
SET FirstName = @FirstName,
Surname = @SurName
WHERE StudentID = @studentID
END
COMMIT TRAN
END
vb.netコード
Using cmd As New SqlClient.SqlCommand("dbo.InsertUpdate", cn)
cmd.Parameters.AddWithValue("@studentID", frmView.dgv1.SelectedCells(0).Value)
cmd.CommandType = CommandType.StoredProcedure
cmd.Parameters.Add("@SurName", SqlDbType.VarChar, 100).Value = txtStudLN.Text
cmd.Parameters.Add("@FirstName", SqlDbType.VarChar, 100).Value = txtStudFN.Text
cmd.Parameters.Add("@SchoolYear", SqlDbType.VarChar, 100).Value = cboSchoolYear.Text
cmd.Parameters.Add("@levels", SqlDbType.VarChar, 100).Value = cboGradeLevel.Text
cmd.ExecuteNonQuery()
MsgBox("Update New record successfully")
End Using
問題:それはないINSERT
は、私は何をしたいのはこれです新しいschoolyear
とを挿入すると、履歴テーブルの新しいレコード10。誰かが自分のコードを修正するのを助けることができますか?おかげ
これは魅力的です。時には英語でのプログラミングで私の問題を説明することは本当に難しいです。笑 。私がしたかったのは、各学年の学年とレベルの前の値を維持することです。忍耐力ありがとうございました:) –
喜んで助けてください:-) –