-
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
ongke0711 > 17-10-20, 06:18 PM
Nói túm lại, Access tạo ra trường dạng Auto Number không phải để đánh số thứ tự mà là để tạo khoá chính (Primary Key) không trùng một cách tự động và đơn giản nhất.
Bạn nào tìm cách sử dụng trường dạng Auto number để làm "số thứ tự" là sai bài rồi.
- Khẳng định lại một lần nữa (như ý anh tranthanhan1962) là lập trình Access không có tạo Field [số thứ tự] sẳn trong Table như Excel, đối với Form hay Report thì khi chạy mới tạo thêm cột Stt để dễ nhìn hoặc để in ra báo cáo mà thôi.
- Việc Reset field dạng AutoNumber chi dùng trong giai đoạn thiết kế CSDL, không dùng khi ứng dụng đã hoàn chỉnh, đi vào hoạt động. Trong giai đoạn thiết kế, có Table dùng AutoNumber làm khoá chính (PK) - Thường là các Table dạng "Danh mục", số lượng record ít - khi thêm bớt, sửa xoá làm cột PK này nhảy số tùm lum không còn liên tiếp nữa. Sau khi thiết kế hoàn chỉnh ứng dụng sẽ Reset lại trường này để nó nhìn trật tự trước khi giao ứng dụng cho người ta. Tôi thì thường làm thủ công: xoá cột AutoNumber -> chạy Compact & Repair Database -> tạo lại cột AutoNumber.
Các bạn thường thấy các bài viết "Tạo số thứ tự tăng dần..." thực chất không liên quan gì đến trường AutoNumber. Việc tạo STT tăng dần chỉ là môt phần trong việc tạo ra mã khoá chính không trùng. Mã khoá chính này sẽ bao gồm một số thông tin có ý nghĩa + số thứ tự và có số lượng ký tự cố định chứ không phải tăng dần số ký tự như field AutoNumber.
(Đọc link theo bài #3 của anh Xuân Thanh đã đề cập ở trên)
Ví dụ:
Số CT:
PN-20201017-001 --> Phiếu nhập + Ngày + số thứ tự phiếu trong ngày
Mã nhân viên:
PKT001 --> Phòng kế toán nhân viên 001
PKD001 --> Phòng kinh doanh nhân viên 001
@yamakashi2003: câu lệnh Reset AutoNumber của anh tranthanhan1962 ở trên không lỗi. Lỗi như hình chụp bạn gửi chẳng qua là bạn đã chạy lệnh xoá PrimaryKey 1 lần rồi ("ALTER TABLE T_BCNK DROP CONSTRAINT PrimaryKey"), thì khi bấm chạy lần 2 nó không tìm thấy PK nên báo lỗi "Check contraint...". (Không tìm thấy PK ở đây là Field đó vẫn tồn tại nhưng đã xoá thuộc tính PrimaryKey)
-
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
tranthanhan1962 > 17-10-20, 06:50 PM
Cám ơn ongke0711 đã trả lời thay tôi. -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
yamakashi2003 > 17-10-20, 08:38 PM
(17-10-20, 06:18 PM)ongke0711 Đã viết: @yamakashi2003: câu lệnh Reset AutoNumber của anh tranthanhan1962 ở trên không lỗi. Lỗi như hình chụp bạn gửi chẳng qua là bạn đã chạy lệnh xoá PrimaryKey 1 lần rồi ("ALTER TABLE T_BCNK DROP CONSTRAINT PrimaryKey"), thì khi bấm chạy lần 2 nó không tìm thấy PK nên báo lỗi "Check contraint...". (Không tìm thấy PK ở đây là Field đó vẫn tồn tại nhưng đã xoá thuộc tính PrimaryKey)
Cảm ơn bác, thực chất là em thấy code báo lỗi thì em báo lại để mọi người theo dõi thôi, chứ em không theo cái vụ đánh STT
không tìm thấy PK ở đây là Field đó vẫn tồn tại nhưng đã xoá thuộc tính PrimaryKey) => trong code có câu lệnh tạo khóa chính khi kết thức quá trình, và em nhận thấy khi chạy code lần đầu sẽ ok, nhưng lần 2 trở đi mới báo lỗi, vào phần design của table thì vẫn thấy có biểu tượng khóa chính ở STT.
chắc việc tạo PK bằng code có sự khác biệt với tạo thủ công, nên nó báo lỗi -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
tranthanhan1962 > 17-10-20, 10:12 PM
@yamakashi2003:
1/Nếu cùng một lệnh máy chạỵ luc OK, lúc báo lỗi, hoặc máy này chạy OK máy khác chạy bị lỗi kiểm tra lại xem lỗi do cái gì, do thao tác hay do lệnh ... Từ từ nghiên cứu xử lý.
2/Có khi do thiết đặt reference thiếu thư viện nó cũng bị lỗi.
3/Đang xử dụng phần mềm bẻ khó@ có khi lỗi do win, có khi lỗi do office không ai biết máy của bạn đang sử dụng bộ win hay bộ office bẻ khó@ nào. Mà có biết cũng chẳng làm gì được.
4/ Đa số anh em hỗ trợ khi đưa code lên đã text OK rồi mới đưa lên (đưa code tào lao bạn không biết thì cũng có anh em khác biết họ cười cho thối mặt). Nếu báo lỗi hãy đọc kỹ xem đó là lỗi gì (không biết thì chịu khó dùng google dịch microsoft có hướng dẫn hết).
5/ Anh em cỡ thành viên đẳng cấp trở lên thường xử dung win và office bản quyền hoặc ít lắm cũng dùng những bản activate tương đối chuẩn, thiết đặt reference bài bản nên lệnh chạy OK. Nhưng khi về máy của người cần trợ giúp nhiều khi lỗi tè le thì làm sau biết đươc. Nếu bị lỗi phải từ từ kiểm tra rồi xử lý chứ mỗi cái mỗi poste lên ai mà ngồi đó suy nghĩ cho bạn.
Nếu như viết phần mềm dễ như ăn cỗ thì ai cũng viết cả rồi. Chúng tôi đôi khi cũng điên đầu vì chương trình viết xong test máy minh chạy ầm ầm, chạy OK. Đem qua máy khách hàng thì lỗi tùm lum, tứa lưa... cũng phải căng đầu xử lý. Không xử lý đươc thì mất uy tín, mất mối (mấy vụ chạy trên máy này được chạy trên máy kia không được thì hỏi ai).
Khi một vấn đề bạn đưa lên có người hỗ trợ tất nhiên phương pháp của họ OK trên máy của họ (họ đâu thể nào có cái máy y như máy của bạn). Khi đem về máy của bạn bị lỗi thì họ làm sao biết được lý do lỗi (vì trên máy họ đã test OK rồi mà). Nếu bạn là khách hàng hoặc học viên của họ, tất nhiên họ sẽ có trách nhiệm. Họ sẽ xách xe chạy lại nhà bạn hay sử dụng TeamView để tìm ra lỗi và xử lý cho bạn. Còn ở đây anh em hỗ trợ nhau với tinh thần không vụ lợi cách xử lý của bạn dễ làm người giúp đỡ chán nản. Nếu có một ngày câu hỏi của bạn không có người hồi đáp là điều tất nhiên. Tôi thấy bác ongke0711 cũng bắt đầu chán rồi đó -
RE: HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
ongke0711 > 17-10-20, 11:54 PM
(17-10-20, 08:38 PM)yamakashi2003 Đã viết: ... và em nhận thấy khi chạy code lần đầu sẽ ok, nhưng lần 2 trở đi mới báo lỗi, vào phần design của table thì vẫn thấy có biểu tượng khóa chính ở STT.
chắc việc tạo PK bằng code có sự khác biệt với tạo thủ công, nên nó báo lỗi
Bạn thay câu lệnh này xem sao.
Mã PHP:ALTER TABLE T_BCNK DROP CONSTRAINT STT