powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Отбор в SelectCommand по переменной
25 сообщений из 29, страница 1 из 2
Отбор в SelectCommand по переменной
    #32554982
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток всем.

Помогите пожалуйста разрешить следующую проблему.

Почему-то не возвращаются строки из

Friend strCompany as string

Me.SqlSelectCommand1.CommandText = "SELECT IDAuto, RegNumber, DateReg, VIN, NumbEngine, NumbCarriage, NumbBasket, color, SelectBox, KlimatKontr, IDNumbSpravkaSale, DataSale, NumbPTS, IssueDataPTS, CostAquisition, DateOper, IDOper, IDResponsRerson, Status, IDTypeEngine, Model,YearMade, IdAuto1, ModelEng, identTypeEngin, identTypeAuto, Company, IDModel FROM GibddOper where Company='" & strCompany & "'"

Значение strCompany передается из основной формы приложения кодом

Private Sub MenuItem4_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
frm.strCompany = Me.Label1.Text
frm.Show()
End Sub

Причём при отладке видно, что значение переменной присвоено, но строк нет. Если напрямую подставить "where Company='mosotis'", то всё получается, а задать в качестве переменной - строк нет.

Подскажите пожалуйста - почему ?

Заранее благодарен.
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555129
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сталкивался с такими проблемами
Решаются так:
на строке которая интересует ставишь breakpoint
запускаешь приложение и выполняешь нужную процедуру
при остановке потом жмешь F8 и последовательно просматриваешь значение своих переменных наводя на них мышкой или в watch
Я думаю что та строка которая должна получиться с переменной будет иметь небольшое отличие от строки без перемменной
P.S. Я делаю проще при таких вещах как параметр запроса
Friend strCompany as string="'" & strCompany
& "'"
И ненадо парится с дополнительными кавычками типо твоих
...Company='" & strCompany & "'"
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555313
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ставил я точки останова и раньше и сейчас для страховки. Значение переменной точно такое, какое надо. Попытался применить и Ваш метод - результат такой же. Чёрт ....

Горююююю !!!!!
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555323
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, кажется разобрался. Оказывается формирование строки Me.SqlSelectCommand1.CommandText в коде, сгенерированном мастером происходит раньше, чем успевает присвоиться значение переменной. Перетащив Me.SqlSelectCommand1.CommandText из области кода мастера в процедуру, которая гарантировано срабатывает после присваивания переменной, получил то, что надо. Вообще явилось новостью то, что код, сгенерённый мастером в форме, отрабатывается ещё до того, как вообще будет дана команда на открытие этой формы. Что ж буду иметь это ввиду ...

vladgrig Спасибо, если бы не начал играться с breakpoint, то до сих пор ничего бы и не понял.
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555392
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sposad
Me.SqlSelectCommand1.CommandText = "SELECT IDAuto, RegNumber, DateReg, VIN, NumbEngine, NumbCarriage, NumbBasket, color, SelectBox, KlimatKontr, IDNumbSpravkaSale, DataSale, NumbPTS, IssueDataPTS, CostAquisition, DateOper, IDOper, IDResponsRerson, Status, IDTypeEngine, Model,YearMade, IdAuto1, ModelEng, identTypeEngin, identTypeAuto, Company, IDModel FROM GibddOper where Company='" & strCompany & "'"

Вообще для передачи параметров, есть специальный класс SqlParameter. Подобных проблем с которым и не возникло бы. При этом ваш запрос мог бы выглядеть следующим образом:


Me.SqlSelectCommand1.CommandText = "SELECT IDAuto, RegNumber, DateReg, VIN, NumbEngine, NumbCarriage, NumbBasket, color, SelectBox, KlimatKontr, IDNumbSpravkaSale, DataSale, NumbPTS, IssueDataPTS, CostAquisition, DateOper, IDOper, IDResponsRerson, Status, IDTypeEngine, Model,YearMade, IdAuto1, ModelEng, identTypeEngin, identTypeAuto, Company, IDModel FROM GibddOper where Company=@company"


Думаю свой запрос вы строили при помощи query builder при настройки SqlDataAdapter. Если бы в query builder'е вы добавили @company , необходимый параметер сформировался бы автоматически.
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555428
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так вот и я ГОВОРЮ
Смотреть надо не только значение переменной
А ПОЛУЧАЕМОЕ ЗНАЧЕНИЕ СТРОКИ ЗАПРОСА (с переменной и без неё, уверен они у тебя получаются не идентичные)
Какая строка получается?
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555435
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Upss... Не проснулся, и недочитал доконца топик
Проблема то уже решена
SORRY
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555488
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Sa

В query builder-е я не строил запрос, а просто перетащил в Dataset View с сервера целиком, да, без параметра. Параметр я потом пытался добавить в код мастера вручную типа ...Parameters.add("@company", strCompany). Но видно чего-то не так делал. При заполнении адаптера возникала ошибка. Мне кажется, что я как-то неправильно передавал значение параметра.
Буду благодарен, если Вы приведёте мне пример строки (строк), где параметр добавляется и ему присваивается значение, полученное из основной формы.
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555571
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, действительно, будет очень интересно, и если не трудно (уважаемый Sa, знаю что надежда тока на Вас) пример с параметром запроса по нескольким значениям сразу
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555587
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sposad
Буду благодарен, если Вы приведёте мне пример строки (строк), где параметр добавляется и ему присваивается значение, полученное из основной формы.
Создал проект, если у вас есть БД Nortwhind то могу скинуть. Для чистоты эксперимента использовал возможности визуальных мастеров в VS.NET.

Вручную пришлось написать всего 4 строчки, из них по делу только одна:
Код: plaintext
1.
2.
3.
Me.cmdSelect.Parameters("@product").Value = Me.txtParamValue.Text.Trim() // Параметру @product присвоим значение value
Me.dsTest.Clear()  
Me.daTest.Fill(Me.dsTest)

В данном контексте откуда получено значение параметра не важно, у меня это textbox txtParamValue

А вот код полученный мастером:
Код: plaintext
1.
2.
3.
4.
5.
6.
'
'cmdSelect
'
Me.cmdSelect.CommandText = "SELECT ProductName, ProductID FROM Products WHERE (ProductName = @product)"
Me.cmdSelect.Connection = Me.cnnTest
Me.cmdSelect.Parameters.Add(New System.Data.SqlClient.SqlParameter("@product", System.Data.SqlDbType.NVarChar,  40 , "ProductName"))
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555603
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrigпример с параметром запроса по нескольким значениям сразу

количество значений не имеет значение, все остается в силе.
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555745
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
Me.cmdSelect.CommandText = "SELECT ProductName, ProductID FROM Products WHERE (ProductName = @product) AND (ProductID = @productid)"

Me.cmdSelect.Parameters("@product").Value = Me.txtParamValue.Text.Trim() // Параметру @product присвоим значение value
Me.cmdSelect.Parameters("@productid").Value = Me.txtParamValue1.Text.Trim() // Параметру @productid присвоим значение value

Так получается???
Классно, а то я запарился с этими запросами...
P.S. Кстати спасибо за прошлый топик с примером трёх ФОРМ
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555812
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig
Код: plaintext
1.
2.
3.
Me.cmdSelect.CommandText = "SELECT ProductName, ProductID FROM Products WHERE (ProductName = @product) AND (ProductID = @productid)"

Me.cmdSelect.Parameters("@product").Value = Me.txtParamValue.Text.Trim() // Параметру @product присвоим значение value
Me.cmdSelect.Parameters("@productid").Value = Me.txtParamValue1.Text.Trim() // Параметру @productid присвоим значение value

Так получается???


Ну если речь идет про БД Northwind то ProductID в Products является типом integer ,и тогда надо так:
Код: plaintext
1.
2.
Me.cmdSelect.Parameters("@product").Value = Me.txtParamValue.Text.Trim() // Параметру @product присвоим значение value
Me.cmdSelect.Parameters("@productid").Value =  45  //  например ProductID должен быть равен  45 

В общем все работает как надо, для определенных типов присваем значения определенного типа (DateTime' у - DateTime, Int' у - Int and etc).
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555828
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример productid был теоретический
я про примеры из Northwind тока читал, у самого посмотреть руки не дошли
но замечание верное id будет integer
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555834
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя в принципе можно и в textbox набирать цифры и т.п.
а значение textbox.text передавать в параметр
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32555942
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrigхотя в принципе можно и в textbox набирать цифры и т.п.
а значение textbox.text передавать в параметр

Можно
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32556229
sposad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемый Sa, что бы без Вас тут делали

База Northwind конечно есть. E-mail: Asmirnov@netman.ru

Огромное спасибо.

PS: Прошу прощения, что давно не читал топик - задрали на работе.
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32556324
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sposadБаза Northwind конечно есть.

Прикрепил проект к сообщению.
ConnectionString в примере: Локальный сервер БД, аутентификация по учетной записи пользователя Windows
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32556340
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
млин голова уже гудит...
Код: plaintext
1.
2.
3.
4.
5.
Me.cmdSelect.CommandText = "SELECT ProductName, ProductID FROM Products WHERE (ProductName = @product) AND (ProductID = @productid)"

Me.cmdSelect.Parameters(product).Value = Me.txtParamValue1.Text.Trim() 
Me.cmdSelect.Parameters(productid).Value = Me.txtParamValue.Text.Trim()


1) С числовыми значениями в БД работать хочет:
(ProductID = @productid)"
Me.cmdSelect.Parameters(productid).Value = 20
в запрсе получается (ProductID = 20) и запрос проходит

А со строками не хочет:
(ProductName = @product)
Me.cmdSelect.Parameters(product).Value ="privet"
в запрсе получается (ProductName = privet)
и запрос, соответственно, не проходит
надо чтобы получалось так (ProductName = 'privet')
Менял значения в параметрах на LongVarChar и на другие - НЕ ХОЧЕТ И ВСЁ
как сделать чтоб проходило значение в поле БД помеченном как текстовое???

2) Me.cmdSelect.CommandText = "SELECT ProductName, ProductID FROM Products WHERE (ProductName = @product) AND (ProductID = @productid)"

Если будет задан только один параметр, к примеру ProductName, а второй будет чистым - ЗАПРОС СРАБОТАЕТ (или надо будет весь запрос переписывать)
Me.cmdSelect.CommandText = "SELECT ProductName, ProductID FROM Products WHERE (ProductName = @product)???
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32556455
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня ведь в примере все ОК. Можете воспроизвести свою проблему в проекте testparameter и прикрепить к своему сообщению?

Код: plaintext
 Sa 
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32557146
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю как сделать ссылку на файл, но выход всё же нашёл
ссылка
Посмотрите, если не лень
Решение этого проекта с применением параметров меня и интересует...
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32557188
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь вроде файл приложился по правилам
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32557367
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladgrig
Посмотрите, если не лень
Решение этого проекта с применением параметров меня и интересует...


Довел ваш проект, до работоспособного состояния.
Места кода где я что то менял помечены в комментарии как "by sa", поэтому можете воспользоваться поиском по тексту.

Проблема у вас заключалась в порядке следования параметров в коллекции Parameters. В этом примере вы используете OleDbProvider, в OleDb название параметров в запросе не играет роли, а играет роль ПОРЯДОК их следования.
Использование же именованных параметров в запросе (при OleDbPovider) может привести к ошибке, поэтому следует ставить "?" вместо названия параметра.
Остальные комментарии смотрите в коде.



Код: plaintext
 user id  =  S a
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32557369
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забыл приложить проект.

Код: plaintext
 user id  =  S a
...
Рейтинг: 0 / 0
Отбор в SelectCommand по переменной
    #32557401
Фотография vladgrig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае с Access (с использованием параметров) я понимаю многое не получается... Именно по этому я и просил запрос по нескольким параметрам...
Уважаемый Sa, спасибо за потраченное время, мне кажется оно проведено не зря (мы оба узнали что то новое)
Решение моей проблемы мне видится таким...
...
Рейтинг: 0 / 0
25 сообщений из 29, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Отбор в SelectCommand по переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]