WHERE =@ Выборка с возможностью необязательных параметров.
От: Kharitonov_Roman  
Дата: 06.06.06 13:08
Оценка:
Привет Всем...

Подскажите плиз как можно реализовать
Имеем соединение с Access базой.
по параметрам получаемых от TreeView — формируем записи в ListView


        'cmd_ListNaming

        Me.cmd_ListNaming.CommandText = "SELECT ID_CATALOG, ID_EQUIPMENT, ID_NAMING, ID_SUPPLIERS, ID_TYPES, EQUIPMENT, TY" & _
        "PES, [NUMBER], DESCRIPTION FROM SQL_LIST_NAMING WHERE ID_SUPPLIERS = @ID_SUPPLIERS "
        Me.cmd_ListNaming.Connection = Me.OleDBConnectionOne


       ' Load Code

  Private Sub Load_ListView(ByVal Str_IDSuppliers As Long, ByVal Str_IDModel As Long)
        Dim TbList As System.Data.OleDb.OleDbDataReader
 
        OleDBConnectionOne.Open()

        cmd_ListNaming.Parameters.Add("@ID_SUPPLIERS", Str_IDSuppliers)
        TbList = cmd_ListNaming.ExecuteReader



Всё замечательно.
Все работает.

Но дерево имеет 3 уровня соответственно может быть 3 фильтра. и два из них динамические (они либо есть либо их нету.)

переписывать всякий раз .CommandText — как то нехорошо. хранить 3 значения — тоже громозко.
Может есть какой другой вариает...
Re: WHERE =@ Выборка с возможностью необязательных параметро
От: fmiracle  
Дата: 06.06.06 15:14
Оценка:
K_R>Но дерево имеет 3 уровня соответственно может быть 3 фильтра. и два из них динамические (они либо есть либо их нету.)

K_R>переписывать всякий раз .CommandText — как то нехорошо. хранить 3 значения — тоже громозко.

K_R>Может есть какой другой вариает...

Думаю, что-то вроде

...WHERE (@FILTER is NULL OR FCOLUMN=@FILTER) AND (...)


И соответственно значения параметров ставить или DbNull.Value или реальное значение.

Во всяком случае при написании хранимых процедур, которые могут использовать не все параметры — делается именно так.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: WHERE =@ Выборка с возможностью необязательных параме
От: Kharitonov_Roman  
Дата: 07.06.06 05:14
Оценка:
Здравствуйте, fmiracle, Вы писали:

F>Думаю, что-то вроде


F>
F>...WHERE (@FILTER is NULL OR FCOLUMN=@FILTER) AND (...)
F>


F>И соответственно значения параметров ставить или DbNull.Value или реальное значение.


F>Во всяком случае при написании хранимых процедур, которые могут использовать не все параметры — делается именно так.



Спасибо огромное.
так оно и есть...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.