⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmsearch.frm

📁 VB6.0编写的医院影像系统
💻 FRM
📖 第 1 页 / 共 3 页
字号:
        If .BOF And .EOF Then Exit Sub      '如果记录集为空,则退出过程
        If .EOF Then .MoveLast
        If .BOF Then .MoveFirst
    End With
    
    Screen.MousePointer = vbHourglass
    DoEvents
    
    '如果记录查询窗体已经加载,则这将刷新报告的显示
    If frmSearch.Loaded Then
        ShowReport
    End If

    If frmImageResult.Loaded Then
        ShowReportImage
    End If

    '设置主窗体的“报告编辑”功能的状态,为了慎重,每条记录都要重复“允许编辑”->“保存”的过程。
    If frmSearch.Loaded And AdminUser Then
        With frmMain.atBarMain
            .Tools("ID_USSave").Enabled = False
            .Tools("ID_USEdit").Enabled = True
            If frmReport.Loaded Then
                frmReport.DisableEdit
            End If
        End With
    End If
    
    Screen.MousePointer = vbNormal

End Sub

Private Sub ssBarSearch_ComboCloseUp(ByVal Tool As ActiveToolBars.SSTool)
    
    Dim rsTemp As ADODB.Recordset
    Dim strSQL As String
    
    Screen.MousePointer = vbHourglass
    
    Select Case Tool.ComboBox.Text
        '数值、日期型
        Case "诊断日期", "出生日期", "诊断费用", "器官数目"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.Clear
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "="
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem ">"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem ">="
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<="
'            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<>"
        '文本
        Case "诊断医师", "检查部位", "病人姓名", "临床诊断", "送检医师", "送检医院", "送检科室", "病人类型", "病人单位", "病人分类"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.Clear
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "="
'            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<>"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "包含"
        '文本特殊
        Case "超声号", "病人号", "所属病区", "病人床号"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.Clear
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "="
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem ">"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem ">="
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<="
'            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<>"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "包含"
        '男女
        Case "病人性别"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.Clear
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "="
'            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "<>"
        '超声提示、图像描述
        Case "超声提示", "图象描述"
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.Clear
            Me.ssBarSearch.Tools("ID_SearchCondition").ComboBox.AddItem "包含"
        Case Else
    End Select
    
    Select Case Tool.Id
        Case "ID_SearchItem"
            '当选择一个项目时,要填充下拉框
            ssBarSearch.Tools("ID_SearchValue").ComboBox.Clear
            If Tool.ComboBox.Text = vbNullString Then Exit Sub
            
            '先查看是否在标准的项目中
            strSQL = "SELECT * FROM US_REPORT_ITEM_DETAIL WHERE CLASS_NAME = '" & Tool.ComboBox.Text & "' ORDER BY FREQUENCY DESC"
            Set rsTemp = OpenRSClient(strSQL)
            If rsTemp.RecordCount > 1 Then
                With rsTemp
                    Do While Not .EOF
                        ssBarSearch.Tools("ID_SearchValue").ComboBox.AddItem rsTemp!ItemData
                        .MoveNext
                    Loop
                End With
                GoTo PEnd
            End If
            
            Select Case Tool.ComboBox.Text
                '如果是临床诊断
                Case "临床诊断"
                    strSQL = "SELECT CLINIC FROM US_CLINIC_DETAIL ORDER BY FREQUENCY DESC"
                    Set rsTemp = OpenRSClient(strSQL)
                    If rsTemp.RecordCount > 1 Then
                        With rsTemp
                            Do While Not .EOF
                                ssBarSearch.Tools("ID_SearchValue").ComboBox.AddItem rsTemp!CLINIC
                                .MoveNext
                            Loop
                        End With
                        GoTo PEnd
                    End If
            
                Case "检查部位"
                    '如果是检查部位
                    strSQL = "SELECT COMB_NAME FROM US_ORGAN_COMB ORDER BY COMB_FREQUENCY DESC"
                    Set rsTemp = OpenRSClient(strSQL)
                    If rsTemp.RecordCount > 1 Then
                        With rsTemp
                            Do While Not .EOF
                                ssBarSearch.Tools("ID_SearchValue").ComboBox.AddItem rsTemp!COMB_NAME
                                .MoveNext
                            Loop
                        End With
                        GoTo PEnd
                    End If
                
            End Select
            
    End Select
    
PEnd:

    Screen.MousePointer = vbNormal
    
End Sub

Private Sub ssBarSearch_ToolClick(ByVal Tool As ActiveToolBars.SSTool)

    Dim strItem As String
    Dim FLG_SPLIT As String
    Dim i As Integer
    
    FLG_SPLIT = Chr(9)
    
    Select Case Tool.Id
        Case "ID_Search"
            BeginSearch
            
        Case "ID_ViewSearch"
            ViewResult False
            
        Case "ID_MoveFirst", "ID_MovePrevious", "ID_MoveNext", "ID_MoveLast"
            MoveRecord Tool.Id
        
        Case "ID_ViewResult"
            ViewResult True
            SearchTip = False
            TipAtSerial = 0
            '将查询条件清空
            For i = 1 To flgSearch.Rows - 1
                flgSearch.TextMatrix(i, 0) = vbNullString
                flgSearch.TextMatrix(i, 1) = vbNullString
                flgSearch.TextMatrix(i, 2) = vbNullString
                flgSearch.Refresh
            Next i
            
        Case "ID_Shrink"
            Me.height = 1140
        
        Case "ID_UnShrink"
            Me.height = 4890
            
        Case "ID_SearchAdd"
            '加入一个查询条件
            With Me.ssBarSearch
                If Trim(.Tools("ID_SearchItem").ComboBox.Text) = vbNullString Or Trim(.Tools("ID_SearchCondition").ComboBox.Text) = vbNullString Or Trim(.Tools("ID_SearchValue").ComboBox.Text) = vbNullString Then Exit Sub
                    
                    '针对某些特殊类型作过滤和转换
                    Select Case (.Tools("ID_SearchItem").ComboBox.Text)
                        Case "出生日期", "诊断日期"
                            '如果是日期类型数据
                            .Tools("ID_SearchValue").ComboBox.Text = SetDate(.Tools("ID_SearchValue").ComboBox.Text)
                        Case "超声提示"
                            If SearchTip = False Then
                                SearchTip = True
                            Else
                                MsgBox "用超声提示进行查询时只能用一条超声提示条件!", vbOKOnly, "提示"
                                Exit Sub
                            End If
                        Case Else
                        
                    End Select
                
                For i = 1 To flgSearch.Rows - 1
                    If flgSearch.TextMatrix(i, 0) = vbNullString Then
                        flgSearch.TextMatrix(i, 0) = .Tools("ID_SearchItem").ComboBox.Text
                        flgSearch.TextMatrix(i, 1) = .Tools("ID_SearchCondition").ComboBox.Text
                        flgSearch.TextMatrix(i, 2) = .Tools("ID_SearchValue").ComboBox.Text
                        flgSearch.Refresh
                        If flgSearch.TextMatrix(i, 0) = "超声提示" Then TipAtSerial = i
                        Exit Sub
                    End If
                Next i
            End With
            MsgBox "已达到最大查询条件限制!", vbOKOnly, "提示"
            Exit Sub
        
        Case "ID_SearchDelete"
            '删除一个查询条件
            With flgSearch
                If .Rows > 2 Then
                    i = .Row
                    .TextMatrix(i, 0) = vbNullString
                    .TextMatrix(i, 1) = vbNullString
                    .TextMatrix(i, 2) = vbNullString
                End If
                
            End With
    End Select
    
End Sub

Private Sub MoveRecord(KeyString As String)
    
    On Error GoTo ErrHandle
    
    '移动报告记录
    With rsUS_ReportSick
        If .BOF And .EOF Then Exit Sub      '如果为空记录则退出移动函数
    
        Select Case KeyString
            Case "ID_MoveFirst"
                .MoveFirst
            Case "ID_MovePrevious"
                .MovePrevious
                If .BOF Then .MoveFirst
            Case "ID_MoveNext"
                .MoveNext
                If .EOF Then .MoveLast
            Case "ID_MoveLast"
                .MoveLast
        End Select
        
    End With
    
    Exit Sub

ErrHandle:

    ShowError
    Exit Sub
    
End Sub

Private Sub ViewResult(bViewResult As Boolean)
    
    '设置显示查询结果
    flgSearch.Visible = Not bViewResult
    picResult.Visible = bViewResult
    
    Dim cTool As SSTool
    For Each cTool In Me.ssBarSearch.Tools
        If cTool.Category = "Move" Then cTool.Enabled = bViewResult
        If cTool.Category = "Search" Then cTool.Enabled = Not bViewResult
    Next cTool
    
End Sub

Private Sub BeginSearch()
    
    On Error GoTo ErrHandle
    
    '--------------
    '开始搜索
    '--------------
    
    Dim strSQL As String
    Dim i As Integer
    Dim RT As ReportItem
    Dim SqlStr As String
    
    Screen.MousePointer = vbHourglass
    
    '生成SQL语句用于过滤记录
    strSQL = vbNullString
    With flgSearch
        For i = 1 To .Rows - 1
            If .TextMatrix(i, 0) <> vbNullString Then
                Set RT = RTFromCName(.TextMatrix(i, 0))
                strSQL = strSQL & RT.GenFilter(.TextMatrix(i, 1), .TextMatrix(i, 2), i - 1)
                '如果因为某种原因,导致SQL的开始是"AND",则删除此"AND"
                If Left(strSQL, 4) = " AND" Then strSQL = Mid(strSQL, 5)
            End If
        Next i
        If SearchTip Then
            If strSQL = "" Then
                For i = 1 To 8
                    strSQL = strSQL & " OR US_TIP" & i & " LIKE '*" & flgSearch.TextMatrix(TipAtSerial, 2) & "*'"
                Next
                If Left(strSQL, 3) = " OR " Then strSQL = Mid(strSQL, 4)
            Else
                For i = 1 To 8
                    SqlStr = SqlStr & " OR (" & strSQL & " AND US_TIP" & i & " LIKE '*" & flgSearch.TextMatrix(TipAtSerial, 2) & "*')"
                Next
                If Left(SqlStr, 3) = " OR " Then strSQL = Mid(SqlStr, 4)
            End If
            SqlStr = ""
        End If
        If strSQL = vbNullString Then strSQL = "SERIAL_ID > 0": GoTo SearchNow
    End With
    
SearchNow:

    rsUS_ReportSick.Filter = strSQL
    rsUS_ReportSick.Sort = "DIAG_DAY DESC, US_NO DESC"
    dtgResult.Refresh
    Me.sbrSearch.Panels("Info").Text = "共查找到: " & rsUS_ReportSick.RecordCount & " 条记录。"
    Me.ssBarSearch.Tools("ID_ViewResult").State = ssChecked
    
    '显示"报告"窗体
    If rsUS_ReportSick.RecordCount > 0 Then
        
        frmReport.Show
        frmReport.Saved = True
        
        Dim O_H As Single
        
        '根据版本决定是否显示图像窗体
        If USV.AllowShowImage Then
            With frmReport
                '试图将Report窗体缩到最小,以给图像显示腾出空间
                .Move 0, 0, 1000, 1000
                .Move 0, frmMain.ScaleHeight - .height, frmMain.ScaleWidth
                .Move 0, 0, frmMain.ScaleWidth
                frmImageResult.Show
                frmImageResult.Move 0, .height, frmMain.ScaleWidth, frmMain.ScaleHeight - .height
            End With
        Else
            frmReport.Move 0, 0, frmMain.ScaleWidth, frmMain.ScaleHeight
        End If
        
       '设置工具条
        With frmMain.atBarMain
'            .Tools("ID_USAdd").Enabled = False
            .Tools("ID_FileHTML").Enabled = True
            .Tools("ID_FilePrint").Enabled = True
            If UserType = "系统管理员" Or UserType = "超级管理员" Then
                .Tools("ID_USDelete").Enabled = True
            End If
        End With
        
    Else
        '设置工具条
        With frmMain.atBarMain
            .Tools("ID_FileHTML").Enabled = False
            .Tools("ID_FilePrint").Enabled = False
            .Tools("ID_USDelete").Enabled = False
        End With
    End If
    
    '如果有记录则移动到第一条,
    If rsUS_ReportSick.RecordCount > 0 Then
        rsUS_ReportSick.MoveFirst
        '如果用户是系统管理员或超级管理员,则允许编辑
        If UserType = "系统管理员" Or UserType = "超级管理员" Then
            frmMain.atBarMain.Tools("ID_USEdit").Enabled = True
        End If
    End If

    Screen.MousePointer = vbNormal
    Exit Sub

ErrHandle:
    Screen.MousePointer = vbNormal
    ShowError
    Resume Next
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -