Параметр SQL для ВСЕХ - PullRequest
2 голосов
/ 11 июля 2011

Мне было интересно, был ли параметр в SQL для всех (не *!). Например, я сейчас пишу таблицу поиска, и если пользователь не вводит что-то в текстовое поле, это будет означать игнорированиеэтот конкретный параметр и отобразить все из них для этого поля.Я понимаю, что вы могли бы создавать отдельные команды OLEDB или SQL для каждого сценария, и это сработало бы, но я просто хотел бы сделать это одной командой, где, если текстовое поле пустое, я просто проигнорировал бы его.До сих пор, что этот парень сказал, что я пытался, но не работал ... он сказал, что у меня было какое-то несоответствие типов

http://timothychenallen.blogspot.com/2007/06/sql-server-all-values-parameters-in.html

Это мой код для этой части прямо сейчас

da.SelectCommand = new OleDbCommand("SELECT *
                                       FROM TestQuery
                                      WHERE (VendorName = @VendorName) 
                                        AND CustomerName = @CustomerName", cs);

if (combo_VendorView.Text != "") 
  da.SelectCommand.Parameters.Add("@VendorName", OleDbType.VarChar).Value = combo_VendorView.Text.ToString();
  da.SelectCommand.Parameters.Add("@CustomerName", OleDbType.VarChar).Value = combo_CustomerView.Text.ToString();

  dsB.Clear();
  da.Fill(dsB);
  dgv_DataLookup.DataSource = dsB.Tables[0];

Скажем, если я оставлю txt.VendorName пустым, я хочу игнорировать этот параметр.Спасибо за вашу помощь!:)

ОБНОВЛЕННЫЙ КОД

 da.SelectCommand = new OleDbCommand("SELECT * 
                                        FROM TestQuery 
                                       WHERE (CustomerName = @CustomerName 
                                           OR @CustomerName IS NULL)", cs);
da.SelectCommand.Parameters.Add("@CustomerName", OleDbType.VarChar).Value = combo_CustomerView.Text.ToString();

Я использую ado.net visual Studio 2010, если это имеет значение для oledb (доступ), он хорошо выполняет поиск по параметрам, но когда нетвведите имя клиента, оно показывает только имена столбцов тестового запроса, но не содержит никакой информации ... я хочу, чтобы оно в основном было похоже на select * для этого одного столбца

Ответы [ 11 ]

0 голосов
/ 11 июля 2011

Общий код

where (col1=@param1 or @param1 is null) and (col2=@param2 or @param2 is null) and...
...