• HIỂN THỊ SỐ TĂNG DẦN TRONG TEXTBOX
  • 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:
    (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)"
    Sao em gõ như này nó  báo lỗi bác ơi,
    '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 007
  • 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 007

    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

    (16-10-20, 01:13 AM)yamakashi2003 Đã viết: 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

    Linked Table không dùng được nhé vì Contraint của linked table chỉ là ảo thôi.
  • 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

    (16-10-20, 06:32 PM)tranthanhan1962 Đã viết: 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.
    À em test thấy code lỗi, thì em báo lại bác thôi ạ
  • 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