Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Liên kết giữa Combo box và Subform
#11
Chào các bạn!
Mình cũng làm trong ngành y, chuyên khoa CDHA (XQ, Sâ, CT Scanner...)
Đứng trên phương diện người lập trình, bạn sẽ tạo dk thuận lợi tốt nhất cho người sử dụng miễn là không vi phạm các qui chuẩn về đạo đức, pháp luật...
VD file Demo lock record mình từng làm ví dụ cho bạn Danh, sau khi trả kết quả, nếu muốn sửa KQ bạn sẽ phải thông qua Admin và tất nhiên là dưới sự giám sát của ban lãnh đạo BV

Về việc nhân bản, nếu người sử dụng cố ý vi phạm, bạn cũng không có cách nào ngăm cản điều đó và trách nhiệm hoàn toàn không liên quan đến người viết phần mềm
VD trong quá trình sử dụng, do có nhiều hồ sơ giống nhau như trong một đợt khám sức khỏe cho nhân viên một công ty lên đến trên 1000 người, các dữ liệu đều giống nhau, chỉ khác tên tuổi người khám. Người dùng có yêu cầu copy dữ liệu để tạo hồ sơ mới nhằm tiết kiện thời gian nhập liệu. Bạn sẽ không hỗ trợ tính năng này?

Về yêu cầu của bạn Danh mình nghĩ chỉ đơn giản là lấy dữ liệu từ bảng chứa các kết quả mẫu cho các vùng khảo sát đưa vào dữ liệu của từng BN,Sau Khi khám BS chuyên khoa sẽ sửa đổi kq nếu có bệnh lý, sau đó ký tên và hoàn toàn chịu trách nhiệm về KQ đó. Nếu có gì sai sót, Bs đó sẽ phải liên hệ quản trị viên để sửa đổi và tất nhiên dữ liệu trước và sau khi sửa, thời gian sửa đều được lưu lại để đề phòng các tố tụng kiện cáo sau này

Vài lời góp ý, nếu có gì chưa hợp lý mong các bạn nhiệt tình trao đổi! 015
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn danhxetnghiem , Noname , bvchauthanh
#12
Mình làm hoài mà không hiểu cách kết nối, Xin mọi người chỉ giúp
File demon
Chữ ký của danhxetnghiem Đừng bao giờ so sánh đoạn đầu của bạn với đoạn giữa của người khác
Reply
Những người đã cảm ơn bvchauthanh
#13
1/ Table1 bạn nên dùng nhiều trường trong đó có 1 trường LoaiSA (Siêu âm tổng quát, Siêu âm thai....) dùng để kết nối với combo Vùng khảo sát của bạn. các trường còn lại ghi kết quả siêu âm mẫu như Gan, Dạ dày, Lách, Mật, Tử cung...(vùng nào có Trái Phải thì ghi rõ ví dụ GanTrai, GanPhai...)
2/ Khuyên bạn nên dùng SubForm lấy nguồn từ Table1 và link với maiform qua loaiSA và cboVungKS

Bạn theo hướng này giải quyết tiếp nhé. Có gì khó khăn ta lại cùng trao đổi
Thân mến
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn danhxetnghiem , Noname , bvchauthanh
#14
Gửi tặng bạn Danhxetnghiem file đính kèm! Bạn hãy thử cố gắng hiểu cách làm xem sao? Nên mày mò một chút nhé!
http://www.sfdp.net/thuthuataccess/thuth...ects=0&d=1
Có gì thì cứ trao đổi tiếp. Vì giờ mình hơi vội nên chỉ có thể bố trí một lúc làm mẫu cho bạn 1 form demo.
Thân
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn danhxetnghiem , Noname , bvchauthanh
#15
(03-04-14, 04:54 PM)paulsteigel Đã viết: Gửi tặng bạn Danhxetnghiem file đính kèm! Bạn hãy thử cố gắng hiểu cách làm xem sao? Nên mày mò một chút nhé!
http://www.sfdp.net/thuthuataccess/thuth...ects=0&d=1
Có gì thì cứ trao đổi tiếp. Vì giờ mình hơi vội nên chỉ có thể bố trí một lúc làm mẫu cho bạn 1 form demo.
Thân

Đang ngồi mài mò file demon của bạn paulsteigel rất là hay. Mà tự nhiên nhớ đến file demon lúc trước của bạn MatTroiNguQuen, nên mình sửa một tý để thành phần mềm siêu âm mà rắc rối ở một chổ mong mọi người chỉ giáo giùm. dù đã nghiêm cứu ở file của paulsteigel nhưng vẫn không áp dụng vào đây được.

File demon sieu am

Vấn đề:
Làm sao để Chọn vùng khảo sát ở Combo box, thì Subform bên dưới sẽ hiển thị một ô chỉ số bình thường, và hiện luôn mẫu kết qủa của một người bình thường mình đã soạn sẵn.

Mong mọi người giúp đở,
Chữ ký của danhxetnghiem Đừng bao giờ so sánh đoạn đầu của bạn với đoạn giữa của người khác
Reply
Những người đã cảm ơn bvchauthanh
#16
Bạn theo hướng bài 13 của tôi rồi làm thử xem sao?
Chữ ký của Xuân Thanh Trăm năm trước thì ta chưa gặp
Trăm năm sau biết gặp được không?
Cuộc đời sắc sắc không không
Thì thôi ta cứ hết lòng vì nhau
ღღღღღTài sản của Xuân Thanh (View All Items) ღღღღღ
Reply
Những người đã cảm ơn danhxetnghiem , bvchauthanh
#17
(05-04-14, 10:55 PM)Xuân Thanh Đã viết: Bạn theo hướng bài 13 của tôi rồi làm thử xem sao?

Mình đang làm theo hướng bài 13 đó, nhưng không biết sao kết nối từ trên combo xuống Sub không được?
Chữ ký của danhxetnghiem Đừng bao giờ so sánh đoạn đầu của bạn với đoạn giữa của người khác
Reply
Những người đã cảm ơn bvchauthanh
#18
Một vài góp ý
Bạn hãy phân tích kỹ lại một chút về nghiệp vụ lập trình. Vì bạn quan tâm đến khía cạnh lập trình nên tôi sẽ trả lời dưới góc độ lập trình một chút.
Trước khi nói đến viết code, người ta cần quan tâm:
Mục tiêu của một đoạn code, một thiết kế là làm gì? Trong ví dụ của bạn, mục tiêu được xác định là
Trích dẫn:"Sau sự kiện chọn một mục trong Combo Box, trong Sub-Form sẽ hiển thị ra một số nội dung có sẵn cho tiện
Tuy nhiên, quay lại ý định thiết kế Form của bạn, có một vấn đề khác:
1. Bạn đang thiết kế một hồ sơ khám bệnh
Như vậy với mỗi bệnh nhân sẽ có một hồ sơ khám bệnh với các hồ sơ khám có thể là đã có hoặc chưa có;
2. Khi bạn chọn một mục trong Combo box, một hồ sơ khám bệnh mẫu sẽ hiện ra để người dùng đỡ phải đánh. Lúc này có 2 tình huống
+ Bạn muốn hiện ra hồ sơ mẫu nhưng chỉ để xem hay là để sử dụng: Nếu để xem thì không vấn đề gì. Nhưng nếu để sử dụng thì diều đó có nghĩa rằng hồ sơ mẫu đó sẽ có thể trở thành một hồ sơ khám mới của bệnh nhân với mục khám bạn vừa chọn;
+ Có thể bệnh nhân đó đã có một hồ sơ khám bệnh như vậy trong cơ sở dữ liệu. Bạn có mong đợi là tải hồ sơ khám đó ra hay là kệ, không quan tâm, cứ lấy hồ sơ mới là được?
Quay lại phần ví dụ tôi đã viết cho bạn, tôi đã viết thành gần như một ứng dụng với đầy đủ các mối liên hệ chỉ rõ tình huống nói trên. Có chăng tôi chưa đưa nội dung hiển thị lịch sử khám nhiều lần của bệnh nhân mà thôi.
Bước 1: Hãy quan sát các mối quan hệ bảng
Tôi thiết lập 4 bảng trong đó bảng trọng tâm là tblPatientRecord (Hồ sơ bệnh nhân). Bảng này quản lý thông tin chung về Hồ sơ bệnh nhân.
   
Bảng tblDiagnosisRecord để quản lý các dạng xét nghiệm khác nhau của bệnh nhân đó;
Bảng tblDiagnosisProfile để quản lý các dạng hồ sơ khám mẫu;
Bảng tblDiagnosisDetails để quản lý các hồ sơ khám cụ thể của bệnh nhân với bình luận của bác sĩ.
Với cách cấu trúc trên thì có thể giải quyết được yêu cầu của bạn trong quản lý hồ sơ khám mấu.

Bước 2: Tạo form quản lý hồ sơ bệnh nhân frmPatientRecords
Form này có cấu trúc như bạn mong đợi trong đó có combo box Vùng khảo sát để lựa chọn.
Hãy xem thủ tục Combo2_AfterUpdate()
Mã PHP:
Private Sub Combo2_AfterUpdate()
    If 
Nz(Combo20) <> 0 Then
        
' Kiem tra xem da co ket qua kham nay trong CSDL chua?
        Dim currentProfileID As Long
        currentProfileID = GetRecordID("Select a.ID FROM tblDiagnosisRecord AS a WHERE " & _
        "a.PatientID = " & Me.ID & " AND a.DiagnosisID = " & Combo2 & ";")
        If currentProfileID > 0 Then
            ' 
Co du lieu roivi moi khi tao moi deu xoa so lieu cu trong bang details nen khong kiem tra nua
            
' mo form so lieu ngay
            ' 
Chuyen noi dung subform thanh doi tuong moi
            With frmDiagnosisRecord
                
.SourceObject "tblDiagnosisDetails"
                
.LinkChildFields ""
                
.LinkMasterFields ""
                
With .Form
                    
.AllowAdditions False
                    
.AllowDeletions False
                    
.Filter "ID=" currentProfileID
                    
.FilterOn True
                End With
            End With
        
Else
            
' nhap so lieu mau
            With frmDiagnosisRecord
                .SourceObject = "tblDiagnosisProfile"
                .LinkChildFields = ""
                .LinkMasterFields = ""
                With .Form
                    .AllowAdditions = False
                    .AllowDeletions = False
                    .Filter = "JobCategory=" & Combo2
                    .FilterOn = True
                End With
            End With
        End If
    End If
End Sub 
Thủ tục này thực hiện 2 việc: Kiểm tra trong bảng tblDiagnosisDetails, nếu bệnh nhân này đã có hồ sơ khám thì tải thông tin hồ sơ khám của bệnh nhân này vào thông qua subform tblDiagnosisDetails. Nếu chưa có thì kiểm tra bảng tblDiagnosisProfile xem có hồ sơ khám mẫu này không, nếu có thì tải từ bảng này vào thông qua subform tblDiagnosisProfile.
Kỹ thuật mà tôi có trong phần này đó là việc chuyển đối tượng nguồn của điều khiển hiển thị Sub-Form. Ngoài ra, cũng xóa liên kết Subform với Combobox .LinkChildFields = "" và .LinkMasterFields = "". Thay vào đó thì điều chỉnh dữ liệu nguồn của form thông qua bộ lọc .Filter = "JobCategory=" & Combo2 và .FilterOn = True.
Bước 3: Tương tác với hồ sơ mẫu
Khi người dùng chọn một hồ sơ mẫu, nhấn nút Tạo Hồ sơ, bác sĩ sẽ được tương tác với hồ sơ khám và phải gõ vào những nhận định trong subform. Nút Tạo hồ sơ sẽ thực hiện việc Kiểm tra xem bệnh nhân này có hồ sơ khám mẫu chưa? Nếu có rồi thì xóa hồ sơ này và ghi đè bằng hồ sơ mẫu trong bảng mẫu.
Nếu bệnh nhân đã có hồ sơ khám thì bác sĩ có thể chủ động sửa luôn nội dung trong hồ sơ khám của anh ta. Tôi chủ động bắt buộc bác sĩ phải nhập vào kết luận của anh ta để tránh trường hợp ông ta lười thì sẽ để nguyên mà không thèm sửa đổi! Nếu bạn vẫn muốn nhất quyết thực hiện điều này thì có thể thêm một cảnh báo "Thông tin sau đây chỉ có giá trị tham khảo, Bạn phải cập nhập lại theo tình hình thực tế, nếu chương trình không phát hiện thay đổi nào của bạn, thì sẽ tự động xóa hồ sơ mẫu này."
Mã PHP:
Private Sub cmdCreate_Click()
    If 
Nz(Combo20) = 0 Then Exit Sub
    Dim SqlStr 
As StringDiagnosisID As Long
    
    
' Nhap ten benh nhan vao danh sach kham
    '
Xoa ket qua kham truoc do co trung loai kham va nghiep vu
    SqlStr 
"DELETE * FROM tblDiagnosisRecord AS a WHERE a.PatientID = " Me.ID _
    
" AND a.DiagnosisID = " Combo2 ";"
    
CurrentDb.Execute SqlStr

    
' Them ho so kham moi
    SqlStr = "INSERT INTO tblDiagnosisRecord ( PatientID, DiagnosisID )  SELECT " & Me.ID & ", " & _
    Combo2 & ";"
    CurrentDb.Execute SqlStr
    
    ' 
Lay ID moi vua duoc them
    DiagnosisID 
GetRecordID("Select a.ID FROM tblDiagnosisRecord AS a WHERE a.PatientID = " Me.ID _
    
" AND a.DiagnosisID = " Combo2 ";")
    
    
' Dua ho so nay vao tai lieu
    SqlStr = "INSERT INTO tblDiagnosisDetails ( DiagnosisRecordID, DiagnosisProfileID) SELECT " & _
    DiagnosisID & ", a.ID FROM tblDiagnosisProfile AS a WHERE a.JobCategory=" & Combo2 & ";"
    CurrentDb.Execute SqlStr
    
    ' 
Chuyen noi dung subform thanh doi tuong moi
    With frmDiagnosisRecord
        
.SourceObject "tblDiagnosisDetails"
        
.Form.AllowAdditions False
        
.Form.AllowDeletions False
        
.Form.Filter "ID=" DiagnosisID
        
.Form.FilterOn True
    End With
End Sub 
Xem các bình luận trong thủ tục này bạn sẽ nắm được phần giải thích trên đây của tôi.
File mới tôi có bổ sung thêm nút tạo hồ sơ khám mới bên cạnh hộp vùng khảo sát.
Xin chia sẻ vài điều như vậy
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn danhxetnghiem , Noname , bvchauthanh , Che_Guevara


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] cách lọc ngày khám liền kề nhau dongdv78 2 664 12-06-14, 12:41 AM
Bài mới nhất: morosumo
  Hướng Dẫn Tạo danh sách tùy chọn cho combo box trunghieu 6 1,327 10-04-14, 06:33 PM
Bài mới nhất: trunghieu
  Giúp dùm ẩn hiện Text box và combo box stone18k 4 1,118 16-06-13, 10:39 AM
Bài mới nhất: stone18k

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ