AnNguyen > 08-01-20, 12:11 PM
alter PROCEDURE [dbo].[qr_TaoMaHS] ( @HDD varchar(100), @mahs varchar(15) , @tenhs nvarchar(40),@ngaysinh date, @lophoc nvarchar(15), @tenph nvarchar(40), @sdt varchar(40), @email varchar(50)
, @ngay_GD date, @matruong varchar(15), @gioitinh nvarchar(5), @doituong_db nvarchar(100)
)
AS
BEGIN
DECLARE @ma_HSM varchar(15)
DECLARE @id_MaHS int
set @id_MaHS =(select max(cast(SUBSTRING(mahs, 4, 5) as int)) from tbHocSinh where mahs like '%HSM%%') --- lay ra ma hs lon nhat de reset ID identity
DBCC CHECKIDENT ('tb_TaoMaHS', RESEED, @id_MaHS) -- reset lai ID
insert into tb_TaoMaHS (name_HDD) values(@HDD) -- Thêm tạm thời vào bảng tạo mã để tự động sinh ra ID
set @id_MaHS = (select ID from tb_TaoMaHS where Name_HDD=@HDD) -- Lấy ra ID vừa tạo xong
set @ma_HSM= concat('HSM',@id_MaHS)
select @ma_HSM as MaHS -- giá trị cần trả về
INSERT INTO tbHocSinh (mahs,tenhs,ngaysinh,lophoc,tenph,sdt,email,ngayghidanh,matruong,gioitinh,doituong_db)
VALUES (@ma_HSM, @tenhs, @ngaysinh, @lophoc, @tenph, @sdt, @email, @ngay_GD, @matruong, @gioitinh, @doituong_db)
delete from tb_TaoMaHS where name_HDD=@HDD -- sau đó xóa HDD đã tạo đi
END
If Not rst.EOF Then ' trong proc luu PhatSinh No da luu luon uu dai khac, chi k luu hoc phi. va tra ve ID thu phi vua luu
MsgBox rst.Fields("MaHS").Value
End If
ongke0711 > 09-01-20, 09:35 PM
AnNguyen > 14-01-20, 10:29 AM
(09-01-20, 09:35 PM)ongke0711 Đã viết: Nếu em muốn lấy giá trị trả về từ SP thì phải có tham số OUTPUT trong Declare biến.Anh ơi, nhưng khi em gọi PRoc ra thì em gọi cái Output kia thế nào ạ.
Anh thấy trong cái SP của em không có tham số OUTPUT. Nếu muốn lấy cái ma_HSM thì khai báo:
---------------------------------------------------------------------
ALTER PROCEDURE [dbo].[qr_TaoMaHS]
@HDD varchar(100),
@mahs varchar(15) ,
@tenhs nvarchar(40),
@ngaysinh date,
@lophoc nvarchar(15),
@tenph nvarchar(40),
@sdt varchar(40),
@email varchar(50),
@ngay_GD date,
@matruong varchar(15),
@gioitinh nvarchar(5),
@doituong_db nvarchar(100)
@ma_HSM varchar(15) OUTPUT
--------------------------------------------------------
Còn việc đứng trước hay sau câu lệnh Ins, Upd... thì không thành vấn đề, quan trong là đã có trị để gán cho tham số OUTPUT chưa thôi.
Sub Pro_qr_ThemHS(HDD, mahs, tenhs, ngaysinh, lophoc, tenph, sdt, email, ghidanh, matruong, gioitinh, doituong_db)
Dim cnn As New ADODB.Connection
cnn.ConnectionString = Chuoi_Conn
cnn.Open
Dim cmd1 As New ADODB.Command
Set cmd1.ActiveConnection = cnn
Set rst = New ADODB.Recordset
With cmd1
.CommandText = "dbo.qr_TaoMaHS" ' gan ten stored proc
.CommandType = adCmdStoredProc
.Parameters.Append .CreateParameter("HDD", adVarChar, adParamInput, 100, HDD) ' gan ma hs
.Parameters.Append .CreateParameter("mahs", adVarChar, adParamInput, 15, mahs) ' gan ma hs
.Parameters.Append .CreateParameter("tenhs", adLongVarWChar, adParamInput, -1, tenhs) ' gan ma hs
.Parameters.Append .CreateParameter("ngaysinh", adDate, adParamInput, 0, ngaysinh) ' gan ma hs
.Parameters.Append .CreateParameter("lophoc", adLongVarWChar, adParamInput, -1, lophoc) ' gan ma hs
.Parameters.Append .CreateParameter("tenph", adLongVarWChar, adParamInput, -1, tenph) ' gan ma hs
.Parameters.Append .CreateParameter("sdt", adVarChar, adParamInput, 40, sdt) ' gan ma hs
.Parameters.Append .CreateParameter("email", adVarChar, adParamInput, 50, email) ' gan ma hs
.Parameters.Append .CreateParameter("ghidanh", adDate, adParamInput, 0, ghidanh) ' gan ma hs
.Parameters.Append .CreateParameter("matruong", adVarChar, adParamInput, 15, matruong) ' gan ma hs
.Parameters.Append .CreateParameter("gioitinh", adLongVarWChar, adParamInput, -1, gioitinh) ' gan ma hs
.Parameters.Append .CreateParameter("doituong_db", adLongVarWChar, adParamInput, -1, doituong_db) ' gan ma hs
.Parameters.Append .CreateParameter("@ma_HSM", adVarChar, adParamOutput, 15, mahs)
'.Execute
End With
rst.Open cmd1, , adOpenKeyset, adLockPessimistic
If Not rst.EOF Then ' trong proc luu PhatSinh No da luu luon uu dai khac, chi k luu hoc phi. va tra ve ID thu phi vua luu
MsgBox rst.Fields("MaHS").Value
End If
' Trong ham nay da thuc hien luu uu dai khac neu duoc nhap, chi co uu dai hoc phi can lam rieng
End Sub
ongke0711 > 14-01-20, 12:12 PM
AnNguyen > 14-01-20, 01:01 PM