• Từ bảng TH chuyển thành 2 bảng con
  • Từ bảng TH chuyển thành 2 bảng con

    daihoangtu > 23-06-14, 09:06 AM

    Chào cả nhà!

    Mình có 1 table TH muốn tách thành 2 bảng table đơn giản DS và CTDS từ bảng TH.
    Hình đính kèm.

    Cảm ơn !

    Links file đính kèm :
    http://www.mediafire.com/download/787bzv...6/Test.mdb
  • RE: Từ bảng TH chuyển thành 2 bảng con

    Minh Tiên > 23-06-14, 11:42 AM

    Chào bạn !
    Như dữ liệu của bạn Up thì ko thể thực hiện tách được, vì:
    - Các trường tên thuốc trong table TH của bạn bạn gõ có dấu tiếng Việt + dấu phẩy (winking nên sẽ ko thể dùng code trong Access được;
    Để làm được như yêu cầu của bạn, theo mình bạn tạo:
    1. table Danhmucthuoc(stt, Mathuoc,Tenthuoc,DVT)
    2. table DanhmucBenhnhan (stt,Mabenhnhan,Tenbenhnhan)
    Khi thiết kế các trường trong table TH bạn thiết kế các Field theo như Mathuoc trong table Danhmucthuoc. Khi nhập thông tin vào table TH bạn nhập: Theo Mabenhnhan, số lượng thuốc, ...
    3. Để tách danh sách như table DS bạn yêu cầu bạn chỉ việc lập query chọn các Field (ID, BABN,HOTEN) như trong qryDS trong File Demo đính kèm là OK !
    4. Để tách thông tin như table CTDS bạn yêu cầu (Mình tạo CTDS_New), bạn tạo 1 sub trên Form1 như sau:
    Mã:
    Private Sub Command0_Click()
        Dim stt As Integer: stt = 0
        Dim intSoluong As Integer
        Dim strHoten As String
        Dim strTenthuoc As String
        Dim i As Integer
        Dim j As Integer
        Dim rst As Recordset
        Dim db As Database
        Set db = CurrentDb()
        Set rst = db.OpenRecordset("CTDS_New")
        If rst.RecordCount > 0 Then
            db.Execute "Delete * from CTDS_New"
        End If
        For i = 1 To DMax("[ID]", "qryDS")
            strHoten = DLookup("[Hoten]", "qryDS", "[ID]=" & i & "")
            For j = 1 To DMax("[stt]", "Danhmucthuoc")
            strTenthuoc = DLookup("[Mathuoc]", "Danhmucthuoc", "[stt]=" & j & "")
            intSoluong = Nz(DLookup(strTenthuoc, "TH", "[Hoten]='" & strHoten & "'"), 0)
            If intSoluong > 0 Then
                stt = stt + 1
                rst.AddNew
                rst!ID = stt
                rst!HOTEN = strHoten
                rst!TENTHUOC = strTenthuoc
                rst!SOLUONG = intSoluong
                rst.Update
            End If
            Next j
        Next i
        DoCmd.OpenTable "CTDS_New"
        rst.Close
        Set db = Nothing
    End Sub
    Gọi thực hiện sub này là OK !
    Demo
    Bạn biến tấu theo yêu cầu của bạn và Nhờ các Pro khác chỉ thêm.
    Mong giúp được bạn !
    Thân chào !