Nhưng trong form hoá đơn của mình chỉ có 1 nút lưu cho tổng thể thui à. Với lại do mình khong biết cú pháp lấy mã HD nên mình làm hk ra
Insert vào 2 bảng cùng lúc
Đúng là chỉ có 1 nút nhưng bạn cần hiểu là khi click 1 nút đó trên máy chủ của bạn sẽ gọi đến 1 function. Trong function bạn vừa gọi thì bạn muốn xử lý bao nhiêu thao tác cũng được.
Vậy thao tác đầu tiên là bạn insert vào bảng hoadon khi bạn gọi hàm insert dữ liệu thì bạn sẽ nhận về được ID của row mà bạn vừa insert. Bạn có thể dùng var_dump() trong php để in ra cấu trúc của biến như thế bạn sẽ biết làm thế nào để lấy được id của hóa đơn. Mình ví dụ nhé:
$row = insert() //Câu lẹnh insert và query SQL của bạn. Cụ thể làm thế nào để insert trong DB thì bạn tự làm nhé.
var_dump($row);
Tất cả để là những query ở mức rất đơn giản thôi mà.
Oh vậy mình hiểu cách thức rồi. Cám ơn bạn nhiều
tham khảo nhé @xuxutrinh
DECLARE @MaHD int
insert into HoaDon (MaNV) values (11)
// lấy MaHD vừa mới insert vào để tiếp tục insert tiếp vào bảng ChiTietHD
SELECT @MaHD = SCOPE_IDENTITY()
insert into ChiTietHD (MaHD, MaMonAn)
values (@MaHD, '01')
Chào bạn , trên thực tế công việc thì thường là không bao giờ để tự động tăng mà ta phải tự thiết lập dữ liệu vào , thứ hai nếu phải truy vấn lại một lần nữa vào database để lấy khóa thì thứ nhất tốn tài nguyên và thời gian , thứ hai nếu lỡ cái thứ hai bị lỗi thì dữ liệu nhập lần đầu sẽ bị mồ côi và bạn lại phải tìm cách xóa nó đi. vậy để xử lí tốt thì bạn sẽ dùng Transaction , mô hình như sau
trans.begin();
int id = // gieo tự động mã ở đây
// kiểm tra id có trùng hay không tại đây hoặc theo cách khác
tạo hóa đơn cha với id trên
tạo hóa đơn con với id trên
trans.comit()
Nếu có lỗi trans.rollBack();
Chúc bạn thành công ^^~
Bạn tạo store procedure thêm bên sql mỗi bản 1 store, rồi vào visual gọi từng store procedure đó, insert vào mấy bảng cũng dc.
vd mình có 2 store thêm là themhoadon va them chitiethoadon
- trong controller:
public ActionResult(Formcollection collection){
private BanHangEntities db = new BanHangEntities();
// them hoa don truoc
// khai bao ma de co thể gán cho bảng chi tiết hóa đơn
int madh = collection[“mahd”];
db.themhoadon(
madh,
collection[“ngaylap”]
);
// them chi tiet hoa don
int madhbangchitiet = mahd
db.themchitiethoadon(
madhbangchitiet,
collection[“soluong”],
collection[gia]
);
}
///
/// phần view
///
@using(BeginForm())
{
<labe
>madh</label>
<input type="text" name="mahd"/>
// va cac truong khac
// luu ý: phần name=“GiaTriNhapVao” phai trung ben controller
<input type="submit" value="them"/>
}
// email của mình: [email protected]