Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / OpenRecordset и дробные числа / 25 сообщений из 38, страница 1 из 2
09.04.2017, 17:39
    #39435475
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Здравствуйте.
Я в процедуре VBA использую простую конструкцию:

Dim qqq As Database
Dim www As Recordset
Dim slch As Variant

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1 WHERE [Таблица1]![prob]= " & slch & "")

Переменная slch - всегда число. Если slch - целое число, то всё работает идеально, но если slch - дробное число, то возникает сообщение об ошибке.

Что делать?
...
Рейтинг: 0 / 0
09.04.2017, 17:48
    #39435480
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri, замени запятую на точку
...
Рейтинг: 0 / 0
09.04.2017, 17:49
    #39435481
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\,
я пробовал. не помогает.
...
Рейтинг: 0 / 0
09.04.2017, 17:56
    #39435485
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri\\\\,
я пробовал. не помогает.У всех помогает, а у тебя нет. Странно.
И что же пишет когда поменяешь?
...
Рейтинг: 0 / 0
09.04.2017, 18:00
    #39435486
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri, так?
Код: vbnet
1.
"SELECT * FROM Таблица1 WHERE [prob]= " & Replace(Cstr(Nz(slch,0)), ",",".") 
...
Рейтинг: 0 / 0
09.04.2017, 18:08
    #39435488
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\,

Нет. Так не пробовал. Сейчас проверю.
...
Рейтинг: 0 / 0
09.04.2017, 18:21
    #39435491
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\,

Да, этот синтаксис помог. Спасибо большое.

А почему тогда даже при принудительном присваивании

slch = 0.301948

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1 WHERE [Таблица1]![prob]= " & slch & "")

не работало?
...
Рейтинг: 0 / 0
09.04.2017, 19:21
    #39435510
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri, так там запятая все равно.

А вот если бы было так, то сработало бы slch = "0.301948"
...
Рейтинг: 0 / 0
09.04.2017, 19:23
    #39435513
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri, кстати, не плохо бы в тексте запроса ставить пробелы
...
Рейтинг: 0 / 0
10.04.2017, 12:42
    #39435763
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\,

Да, slch ="0.301948" сработало. Спасибо. Впредь буду знать.

А какой тип данных можно присваивать переменной, если она всегда дробное число от 0 до 1 ? Long можно?
...
Рейтинг: 0 / 0
10.04.2017, 12:43
    #39435764
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\,

Пробелы в тексте запроса необходимы для удобства или для корректного выполнения запроса?
...
Рейтинг: 0 / 0
10.04.2017, 13:07
    #39435776
Прогер_самоучка
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri\\\\,

Пробелы в тексте запроса необходимы для удобства или для корректного выполнения запроса?Для красоты, поговаривают :)
...
Рейтинг: 0 / 0
10.04.2017, 14:44
    #39435871
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri\\\\,
...А какой тип данных можно присваивать переменной, если она всегда дробное число от 0 до 1 ? Long можно?
LONG это длинное целое-ответьте себе можно ли его присваивать дробной переменной. (когда уже народ будет читать HELP...)
...
Рейтинг: 0 / 0
10.04.2017, 15:03
    #39435893
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
TauriА какой тип данных можно присваивать переменной, если она всегда дробное число от 0 до 1 ? Long можно?Double
...
Рейтинг: 0 / 0
11.04.2017, 07:11
    #39436243
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri\\\\,
А почему тогда даже при принудительном присваивании

slch = 0.301948

Set qqq = CurrentDb
Set www = qqq.OpenRecordset("SELECT*FROM Таблица1 WHERE [Таблица1]![prob]= " & slch & "")

не работало?

Потому что нужно писать str(slch). Что происходит: ваше число из-за операции & со строкой превращается в строку, причем используется системный разделитель, т.е. запятая в вашем случае, то же происходит, если использовать CStr. Если использовать str(), то будет использоваться точка, которая и требуется в SQL
...
Рейтинг: 0 / 0
11.04.2017, 07:59
    #39436254
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
MrShin Если использовать str(), то будет использоваться точка, которая и требуется в SQL
Код: vbnet
1.
2.
?str(0.33)
 .33
...
Рейтинг: 0 / 0
11.04.2017, 09:02
    #39436282
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\
Код: vbnet
1.
2.
?str(0.33)
 .33


Для компилятора запросов вполне съедобная форма. Он правильно воспримет выражение
Код: sql
1.
where fld=.33
...
Рейтинг: 0 / 0
11.04.2017, 09:26
    #39436300
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
mds_world, ну может и так. Стараюсь не приравнивать к Double, весьма неоднозначные результаты можно получить.
...
Рейтинг: 0 / 0
11.04.2017, 17:00
    #39436660
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
\\\\,

Снова здравствуйте.
Теперь новая напасть: при выполнении

Set www = qqq.OpenRecordset("SELECT*FROM szayavka WHERE [szayavka]![szayavka_id]= " & Replace(CStr(Nz(slch, 0)), ",", ".") & "")

выскакивает сообщение об ошибке, хотя записи в таблице есть. Что делать?
...
Рейтинг: 0 / 0
11.04.2017, 17:13
    #39436669
bubucha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
szayavka_id это что?
...
Рейтинг: 0 / 0
11.04.2017, 22:09
    #39436855
Tauri
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
bubucha,

это поле в таблице. числовое. не счётчик.
...
Рейтинг: 0 / 0
12.04.2017, 00:43
    #39436909
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauri,
Код: vbnet
1.
2.
SELECT*FROM
SELECT * FROM

почувствуйте разницу
...
Рейтинг: 0 / 0
12.04.2017, 01:10
    #39436914
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
sdkuпочувствуйте разницу
Это нормально. Звездочка такой же разделитель как и пробел
...
Рейтинг: 0 / 0
12.04.2017, 01:51
    #39436927
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Код: vbnet
1.
Set www = qqq.OpenRecordset("SELECT*FROM szayavka WHERE [szayavka]![szayavka_id]= " & Replace(CStr(Nz(slch, 0)), ",", ".") & "")

Выделенное-это что?
так все работает
Код: vbnet
1.
Set rs = CurrentDb.OpenRecordset("select * from таблица1 where ctl=" & Replace(slch, ",", "."))

(наличие пробелов возле звездочки не обязательно-привычка,не знаю хорошая или плохая)
...
Рейтинг: 0 / 0
12.04.2017, 06:59
    #39436947
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
OpenRecordset и дробные числа
Tauriвыскакивает сообщение об ошибке, хотя записи в таблице есть. Что делать?
Нажимаем Debug, копируем все, что внутри скобок OpenRecordset, Открываем окно Immediate, там после знака вороса вставляем скопированное и после нажатия Enter вы увидите то SQL выражение, которое пытается выполнить акцесс. Копируем его и вставляем в конструктор запросов, который точно скажет, что в нем неправильно. Практически уверен, что ошиблись в написании szayavka_id. Ну в качестве совета: сначала сконструируйте нужный рабочий запрос в конструкторе, а потом копируйте его в код, заменяя константы переменными.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / OpenRecordset и дробные числа / 25 сообщений из 38, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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