-
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
yamakashi2003 > 15-10-20, 11:35 PM
(15-10-20, 09:33 PM)tranthanhan1962 Đã viết:
Sao em gõ như này nó báo lỗi bác ơi,(15-10-20, 06:46 PM)yamakashi2003 Đã viết: Bac ơi cái câu lệnh này nếu mà để STT là khóa chính thì nó báo lỗi và không cho xóa ạ, liệu có cách nào khác ngoài việc bỏ STT là khóa chính không ạ
Cũng vẫn thế! Sử dụng câu lệnh SQL. Thứ tự: 1 gỡ bỏ khóa chính, 2/reset field autonumber, 3/ tạo lại khóa chính cho field autonumber
Câu lệnh gở bỏ khóa chính:
"ALTER TABLE TableA DROP CONSTRAINT PrimaryKey"
Câu lệnh tạo lại khóa chính
"Alter Table TableA Add Constraint STT Primary Key(STT)"
'dien lai so thu tu bang T_BCNK
Dim XoafieldSQL, TaofieldSQL, BoKhoaChinh, TaoKhoaChinh As String
BoKhoaChinh = "ALTER TABLE T_BCNK DROP CONSTRAINT PrimaryKey"
CurrentDb.Execute BoKhoaChinh
XoafieldSQL = "ALTER TABLE T_BCNK DROP COLUMN STT;"
TaofieldSQL = "Alter Table T_BCNK Add COLUMN STT AutoIncrement"
CurrentDb.Execute XoafieldSQL
CurrentDb.Execute TaofieldSQL
TaoKhoaChinh = "Alter Table T_BCNK Add Constraint STT Primary Key(STT)"
CurrentDb.Execute TaoKhoaChinh
nó báo lỗi CHECK constraint "primarykey" does not exist
và bôi vàng CurrentDb.Execute BoKhoaChinh -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
ongke0711 > 16-10-20, 12:20 AM
(15-10-20, 11:35 PM)yamakashi2003 Đã viết: nó báo lỗi CHECK constraint "primarykey" does not exist
và bôi vàng CurrentDb.Execute BoKhoaChinh
Bạn đọc lại cơ bản thiết kế Table CSDL đi. Cái khoá chính (Primary Key) mà cũng đi xoá, sửa lại thứ tự thì potay.
Các Table có Relationship với nhau thông qua khoá chính, bạn xoá nó đi, sửa lại số khác thì lấy gì các Table liên quan tham chiếu quan hệ tới Table vừa bị xoá sửa PK đó???
Ví dụ:
Table tblDMHangHoa
MaHang | Ten Hang
-----------------------------
1 AAA
2 BBB
3 CCC
Table tblXuatHangChiTiet
MaHang | SL Xuat
--------------------------
2 100
==> Khi Xoá sửa [MaHang] (Autonumber) tblDMHangHhoa, MaHang có giá trị 2 bị đổi thành 1 hay 3 thì có phải tblXuatHangChiTiet nó sai mã hàng tè le không?
Bài hướng dẫn của anh tranthanhan1962 là dùng cho trường hợp dùng Field dạng Autonumber làm "số thứ tự" chứ không phải "khoá chính", xoá sửa lại để số được liền mạch. Bạn đọc kỹ rồi mới áp dụng. -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
tranthanhan1962 > 16-10-20, 12:59 AM
Nếu field có khóa chính đang liên kết khóa ngoại thì không thực hiện cách này được, vì không có quyền bỏ primarykey một khóa chính đang liên kết. Làm thủ công còn không được huống gì bằng lệnh, báo lỗi là phải rồi. Muốn xử lý cái này, khóa chính không đươc đặt data type là auto number mà phải chuyển nó thành number. Tạo một field autonumber làm field tạm rồi xử lý số thứ tự trên field này, sau đó dùng update query điều chỉnh giá trị của field khóa chính giống như field tạm, giá trị khóa ngoại sẽ thay đổi giống như khóa chính. Phương pháp thì có một nhưng phải tùy biến cho phù hợp cho từng trường hợp thì mới ra kết quả đúng được. Chúc bạn thành công -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
yamakashi2003 > 16-10-20, 01:13 AM
(16-10-20, 12:59 AM)tranthanhan1962 Đã viết: Nếu field có khóa chính đang liên kết khóa ngoại thì không thực hiện cách này được, vì không có quyền bỏ primarykey một khóa chính đang liên kết. Làm thủ công còn không được huống gì bằng lệnh, báo lỗi là phải rồi. Muốn xử lý cái này, khóa chính không đươc đặt data type là auto number mà phải chuyển nó thành number. Tạo một field autonumber làm field tạm rồi xử lý số thứ tự trên field này, sau đó dùng update query điều chỉnh giá trị của field khóa chính giống như field tạm, giá trị khóa ngoại sẽ thay đổi giống như khóa chính. Phương pháp thì có một nhưng phải tùy biến cho phù hợp cho từng trường hợp thì mới ra kết quả đúng được. Chúc bạn thành công
Em đã tạo 1 file mới toanh, 1 bảng, 1 form để test code của bác mà vẫn lỗi ý thế ạ,
http://www.mediafire.com/file/ro15matjf2...accdb/file
và còn 1 lỗi nữa là code: xoafield và taofield của bác không chạy được với table được link từ file BE ạ
Mong bác chỉ giúp -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
ongke0711 > 16-10-20, 03:32 PM
-
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
tranthanhan1962 > 16-10-20, 06:32 PM
Sao cứ đeo mãi autonumber là số thứ tự. Thiếu gì cách. Qua sông thì phải đi cầu, không có cầu thì đi đò, mà đến cả đò không có thì chặt cây chuối lội qua. Động não tí đi. -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
yamakashi2003 > 16-10-20, 07:07 PM
-
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
thuyyeu99 > 16-10-20, 09:19 PM
Reset autonumber thì dễ thôi nhưng nếu khóa chính thì có thể rắc rối vì có thể liên quan tới các table khác, còn nếu bạn muốn đánh số thứ tự thì cũng đơn giản mà max +1 nếu trùng thì tang thêm 1 -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
tranthanhan1962 > 16-10-20, 11:53 PM
1/Phương pháp trên chỉ OK với 1 field auto number đơn giản.
2/Nếu 1 filed khóa chính và link table có thể sử dụng cách của bạn thuyyeu99, để tạo dãy số thứ tự tăng dần, khi xóa record thì dùng do-while để cập nhật lại số TT,
3/Thực ra trên form cũng chăng cần đánh số thứ tự, chỉ cần sử dụng đoạn mã dưới là xong
Private Sub Form_Load()
Dim intSTT As Integer
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM TABLE-NAME")
intSTT = 1
If Not (rs.EOF And rs.BOF) Then rs.MoveFirst Do Until rs.EOF = True rs.Edit rsISTT = intSTT rs.Update rs.MoveNext intSTT = intSTT + 1
Loop
End If
rs.Close
Set rs = Nothing
End Sub
Đây là trường hợp continuous form còn single thì con dễ hơn = [Form].[CurrentRecord].
Còn report thì chỉ cần 1 phát RunningSum là xong. Đâu ai đánh số TT trực tiếp trên field cho rắc rối -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
tranthanhan1962 > 17-10-20, 12:04 AM
Thực ra tôi cũng không dùng code tạo số TT cho continuous form. Nếu ai có tham khảo bài viết này thì sẽ thấy tôi đánh số TT cho record trên form như thế nào. Tạo field STT rất bất tiện vì mỗi lần xóa phải reset rất bất tiện