Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
2 / 2 / 3
Регистрация: 04.07.2013
Сообщений: 30
1

запрос select а коде VB возвращает нуль значений

08.06.2014, 23:13. Показов 1356. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Код(картинка, кода мало)
Кликните здесь для просмотра всего текста

Суть проблемы, есть поле со списком, мы выбираем нужное значение, а после выбора должен сработать данный код и основываясь на выбранном значении подставить данные, полученные из таблицы, в другое поле.

Set temp = .... Написан в программе в одну строку, на картинке перевел, чтобы удобнее было
Переменную Me.данные_названия_фирмы.Value проверял, значение выдает, какое требуется (точка в этом выражении тоже есть, на скриншоте пропущена просто, увидел, исправил, проблему не решило)

Выдает ошибку, что запрос возвращает слишком мало значений. требуется 1.
Таблицы проверял, все в таблице есть, что надо. Название полей списываю с распичатанного скриншота схемы данных, также все их перепроверял, ошибок нету.

Собственно вопрос, почему запрос возвращает нуль записей? очень нужна помощь, уже мозг себе сломал. Часа 2 пытаюсь проблему решить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2014, 23:13
Ответы с готовыми решениями:

Update, когда Select возвращает несколько значений
Здравствуйте. Подскажите пожалуйста как сделать Update, когда Select возвращает несколько значений....

Почему QSqlQuery выполняющий SELECT-запрос с WHERE условием возвращает нулевую строку?
Столкнулся с небольшой проблемой, решение которой заняло у меня немного времени, но она сумела...

Запрос SELECT c игнорирование массива значений
Как в VBA сделать запрос с помощью оператора SELECT который игнорировал бы целый массив...

Select запрос C# с выводом значений по ID из сессии
Здравствуйте, очень прошу помощи! У меня есть таблица созданная процедурой INCERT CREATE...

8
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
08.06.2014, 23:19 2
вот влом мне перенабирать текст вашего запроса.
вам копипаст сделать лень, а мне целых две строчки набрать.

Добавлено через 46 секунд
пс. еслечо - по картинкам гадалки и экстрасенсы хорошо работают
1
2 / 2 / 3
Регистрация: 04.07.2013
Сообщений: 30
08.06.2014, 23:24  [ТС] 3
Код:
Visual Basic
1
2
3
4
5
6
7
8
Private Sub данные_название_фирмы_AfterUpdate()
    Dim temp As Recordset
    Set temp = CurrentDb.OpenRecordset("Select номер_поставщика from поставщики" _ 
"where название_фирмы = Me.данные_название_фирмы.Value;")
    temp.MoveFirst
    Me.данные_номер_поставщика.Value = temp.Fields(0).Value
    
End Sub
П.С. прошу прощения за лень, прост если копировать по обычному из редактора кода и вставлять, то он кириллицу портит, а переписывать все названия очень лень было.
П.С.С. это было бы как то глупо, копипаст лень сделать, а скриншот делать и в интернет лить не лень ((=
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
08.06.2014, 23:30 4
Лучший ответ Сообщение было отмечено regint как решение

Решение

Цитата Сообщение от regint Посмотреть сообщение
он кириллицу портит
при включённой русской раскладке надо копировать.

вообще-то я ваш access не знаю совершенно.
но есть подозрение, что так должно сработать:
Visual Basic
1
2
Set temp = CurrentDb.OpenRecordset("Select номер_поставщика from поставщики" _ 
& " where название_фирмы = """ & Me.данные_название_фирмы.Value & """;")
1
2 / 2 / 3
Регистрация: 04.07.2013
Сообщений: 30
08.06.2014, 23:39  [ТС] 5
Сработало!
За русскую раскладку запомню, спасибо!

Если не составит труда, можешь эти 2 строчки записать в одну, чтобы я понял в чем была ошибка, а также понял как работает перенос строк таким образом.
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
08.06.2014, 23:44 6
Лучший ответ Сообщение было отмечено regint как решение

Решение

Visual Basic
1
Set temp = CurrentDb.OpenRecordset("Select номер_поставщика from поставщики where название_фирмы = """ & Me.данные_название_фирмы.Value & """;")
1
2 / 2 / 3
Регистрация: 04.07.2013
Сообщений: 30
08.06.2014, 23:46  [ТС] 7
И еще одно, почему кавычек аж по 3 штуки, исходя из чего такое количество?
0
призрак
3262 / 890 / 119
Регистрация: 11.05.2012
Сообщений: 1,702
Записей в блоге: 2
08.06.2014, 23:58 8
нам нужно, чтобы ваш запрос выглядел примерно так:
Select номер_поставщика from поставщики where название_фирмы = "Аист белобрысый";
в поле Me.данные_название_фирмы.Value содержится просто Аист белобрысый
вот чтобы добавить по одной кавычке до и после названия, приходится писать аж по три.

кстати, ахтунг: если фирма будет называться ООО "Аист белобрысый", то запрос опять не сработает
ибо кавычки из названия перемешаются с кавычками в запросе и будет беда

исправляем так:
Visual Basic
1
2
3
s = Replace(Me.данные_название_фирмы.Value, """", """""")
Set temp = CurrentDb.OpenRecordset("Select номер_поставщика from поставщики" _ 
& " where название_фирмы = """ & s & """;")
и стучим три раза по дереву
1
2 / 2 / 3
Регистрация: 04.07.2013
Сообщений: 30
09.06.2014, 00:38  [ТС] 9
Ну ты просто шаман ((= все работает, видимо толково по дереву стучал.
Но мой мозг поломался окончательно, когда я посмотрел на исправленный код и кавычки, которые множаться с невероятной силой хД
0
09.06.2014, 00:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.06.2014, 00:38
Помогаю со студенческими работами здесь

Запрос SELECT с выводом повторных значений
Доброго времени суток, уважаемые форумчане! Прошу помощи и совета по своему вопросу. Сразу...

Как вернуть в запросе значение по умолчанию, если SELECT возвращает NULL или ничего не возвращает?
Добрый день! Например я хочу чтобы донное выражение возвращало мне 0 или скажем 1, если...

Как сделать запрос из двух таблиц с использованием оператора Select с заменой значений столбцов?
Всем доброго времени суток! Я сейчас самостоятельно изучаю mysql и мне нужно выполнить...

SendMessage + TBM_GETPOS возвращает нуль при любых положениях слайдеров
Функция SendMessage(Sliders, TBM_GETPOS, NULL, NULL); возвращает нуль при любых положениях...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru