0

次のクエリからの出力が必要です。

ALTER PROCEDURE [dbo].[ASASearchMed]
(
    @Endorsed Varchar(200),
    @Authorized Varchar(200),
    @Notes Varchar(200),
    @LastName Varchar(50),
    @FirstName Varchar(50),
    @MiddleName Varchar(50)
)
AS
  SELECT 
     ASA.ASAID
     , ASA.ProID
     , PRO.LastName
     , PRO.FirstName
     , PRO.MiddleName
     , ASA.ASAType
     , ASA.Endorsed
     , ASA.Authorized
     , ASA.Notes
     , ASA.DateReg
     , ASA.DateMod
     , ASA.UserReg
     , ASA.UserMod
  FROM
     dbo.ASA
  INNER JOIN 
     dbo.PRO ON ASA.ProID = PRO.ProID
  WHERE
     ASA.ASAType = 'Medical'
     AND NULLIF(ASA.MedGLCtrlNo, '') IS NULL OR ASA.MedGLCtrlNo = '' 
     AND (ASA.Endorsed LIKE '%' + @Endorsed + '%' OR
          ASA.Authorized LIKE '%' + @Authorized + '%' OR
          ASA.Notes LIKE '%' + @Notes + '%' OR
          PRO.LastName LIKE '%' + @LastName + '%' OR
          PRO.FirstName LIKE '%' + @FirstName + '%' OR
          PRO.MiddleName LIKE '%' + @MiddleName + '%')

これを実行しようとすると、何も実行されていないように見えますが、Management Studio でクエリを実行しても問題は解決しません。

Medicalおよび isとしてタグ付けされたレコードのみ、NULLまたは空の文字列でタグ付けされたレコードで検索をフィルタリングしようとして''います。また、以下の各フィールドに指定されたデータとも一致する必要があります。

検索用の私のコード

 Public Sub Search()
        Dim StrSQL As String = "ASASearchMed"
        cLib = New clsLibrary
        cLib.openConnection(strConnection)
        If Not cLib.isConnectionOpen() Then
            Exit Sub
        End If
        cLib.initializeCommand(StrSQL)
        cLib.addParameter("@Endorsed", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text)
        cLib.addParameter("@Authorized", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text)
        cLib.addParameter("@Notes", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text)
        cLib.addParameter("@LastName", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text)
        cLib.addParameter("@FirstName", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text)
        cLib.addParameter("@MiddleName", SqlDbType.VarChar, txtSearch.TextLength, txtSearch.Text)
        objCommand.ExecuteNonQuery()
        lview.Items.Clear()
        DisplayData()
    End Sub

リストビューに出力を表示する方法

    Public Sub DisplayData()
        Dim objDataReader = objCommand.ExecuteReader
        While objDataReader.Read
            Dim listview As New ListViewItem
            With listview
                .Text = objDataReader.Item("ASAID")
                .SubItems.Add(objDataReader("ProID"))
                .SubItems.Add(objDataReader("LastName"))
                .SubItems.Add(objDataReader("FirstName"))
                .SubItems.Add(objDataReader("MiddleName"))
                .SubItems.Add(objDataReader("ASAType"))
                .SubItems.Add(objDataReader("Endorsed"))
                .SubItems.Add(objDataReader("Authorized"))
                .SubItems.Add(objDataReader("Notes"))
                .SubItems.Add(objDataReader("DateReg"))
                .SubItems.Add(objDataReader("DateMod"))
                .SubItems.Add(objDataReader("UserReg"))
                .SubItems.Add(objDataReader("UserMod"))
            End With
            lview.Items.Add(listview)
        End While
    End Sub

.

    Public Sub LoadData()
        Dim StrSQL As String = "ASAViewMed"
        cLib = New clsLibrary
        cLib.openConnection(strConnection)
        If Not cLib.isConnectionOpen() Then
            Exit Sub
        End If
        cLib.initializeCommand(StrSQL)
        objCommand.ExecuteNonQuery()
        lview.Items.Clear()
        DisplayData()
    End Sub

誰かが私を助けたり、教えてくれることを願っています。前もって感謝します!

4

1 に答える 1

1

試す

   AND (ASA.MedGLCtrlNo IS NULL OR ASA.MedGLCtrlNo = '' )

この例と WHERE 句全体で ( ) グループ化も確認してください。

于 2014-06-16T19:57:52.390 に答える