Есть форма с таблицей. Сделал для пользователей полнотекстовый поиск. Т.е. есть текстбокс, куда пользователь заносит условие поиска, любое. Дальше идет анализ условия запроса и полей (а также типа полей) таблицы и формируется запрос. Механизм, впринципе, довольно универсальный и работает неплохо.
Для примера
- Код: Выделить всё
SELECT * FROM vw_Personal WHERE [Код] LIKE '%10%' OR [Логин] LIKE '%10%' OR [Фамилия] LIKE '%10%' OR [Имя] LIKE '%10%' OR [Отчество] LIKE '%10%' OR [Служба] LIKE '%10%' OR [Должность] LIKE '%10%' OR [Трудовые отношения] LIKE '%10%' OR [Телефон] LIKE '%10%' OR [Примечание] LIKE '%10%'
На днях немного доработал, механизм примерно тот же, но запрос формируется параметрический, в зависимости от таблицы (огромное спасибо GSerg и alibek).
Теперь
- Код: Выделить всё
SELECT * FROM vw_Personal WHERE [Код] LIKE '%' + ? + '%' OR [Логин] LIKE '%' + ? + '%' OR [Фамилия] LIKE '%' + ? + '%' OR [Имя] LIKE '%' + ? + '%' OR [Отчество] LIKE '%' + ? + '%' OR [Служба] LIKE '%' + ? + '%' OR [Должность] LIKE '%' + ? + '%' OR [Трудовые отношения] LIKE '%' + ? + '%' OR [Телефон] LIKE '%' + ? + '%' OR [Примечание] LIKE '%' + ? + '%'
- Код: Выделить всё
Dim c As ADODB.Command
Set c = New ADODB.Command
c.CommandType = adCmdText
c.Parameters.Append c.CreateParameter _
("strParam" & j, adVarChar, adParamInput, 5000, "10")
...
...
c.CommandType = adCmdText
c.Parameters.Append c.CreateParameter _
("strParam" & j, adVarChar, adParamInput, 5000, "10")
'Подключаемся к БД
Dim conn As ADODB.Connection
Set conn = New ADODB.Connection
conn.Open (Connect.Soedinenie)
Dim r As ADODB.Recordset
Set c.ActiveConnection = conn
c.CommandType = adCmdText
c.CommandText = sql
Set r = New ADODB.Recordset
r.Open c, , adOpenStatic, adLockReadOnly
'Отключаемся от БД
Set r = Nothing
Set conn = Nothing
Set c = Nothing
Вопрос заключается в том, какой вариант предпочтительнее? Работает быстрее? Более правильный? Разница по быстродействию практически не ощутима, но первый вариант (без параметров), если не ошибаюсь, работает побыстрее, самую малость.
---
P.S. И ещё, прошу прощения у модераторов за откровенность и вопрос, возможно не в тему, хочу узнать, у меня у одного лучший сайт времен и народов "vbstreets.ru" открывается порой по 4 минуты\страничка, хотя у меня выделенка.