powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB.Recordset --> результат ноль, Oracle --> всё нормально
15 сообщений из 15, страница 1 из 1
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32933226
NBolbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня проблема, а причину наити не могу:

Dim rsAll As New ADODB.Recordset
...

strSQL = " SELECT " & text1.Text & ", " & text2.Text & " FROM " & txtSource.Text
strSQL = strSQL & " WHERE col3 = 4 "
strSQL = strSQL & " AND " & text2.Text & " IS NOT NULL "
strSQL = strSQL & " AND (substr( " & text2.Text
strSQL = strSQL & " , instr(to_char(" & text2.Text & "),',') + 1, length("
strSQL = strSQL & text2.Text & ")) <= 2 )"
strSQL = strSQL & " ORDER BY " & text1.Text
rsAll.Open strSQL, m_ConnOracle.GetActiveConnection, adOpenDynamic, adLockReadOnly
rsAll.MoveFirst


ну и результат ноль!

а если я то же самое SQL прямо в SQL PLUS Oracla задаю, то получаю правельный результат.

SQL:
SELECT col1, col2 FROM tab1 WHERE col3 = 4
AND col2 IS NOT NULL AND
(SUBSTR( col2 , INSTR(TO_CHAR(col2),',') + 1, LENGTH(col2)) <= 2 ) ORDER BY col1


Может кто-то уже с подобным сталкивался?
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32933976
Фотография Deminik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В аксе нет функций SubStr и Lenght, а есть Mid и Len...
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934229
NBolbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а я их и не использую как функции VB.

это составлющие SQL для Oracle и находятся они в кавычках.
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934270
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что за ошибку дает?

а если так:
Код: plaintext
1.
2.
3.
4.
5.
m_ConnOracle.Execute SQL

if m_ConnOracle.Errors.Count> 0  then
debug.print  m_ConnOracle.ErrDescription
end if
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934273
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
m_ConnOracle.Errors( 0 ).ErrDescriptions

очепятался, сорри
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934321
NBolbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а никакой ошибки не выдаёт. просто Recordset пустой

а если на прямую в Oracle задать, то есть результат. значит SQL правильное.

видимо ADODB что-то не поддерживает, только вот что?
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934334
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если открыть как статический и на стороне клиента?
Динамический не все провайдеры поддерживают.
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934398
NBolbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
до сих пор никаких проблем с динамичискими не было.

самое странное, что если я SQL немного изменю, то никаких проблем, правда резултат не тот, что мне нужен

SQL:
SELECT col1, col2 FROM tab1 WHERE col3 = 4
AND col2 IS NOT NULL AND
(SUBSTR( col2 , INSTR(TO_CHAR(col2),',') + 1, LENGTH(col2)) <= 2 OR col4 is not null ) ORDER BY col1


ничего не понимаю...
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934417
NBolbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поняла что " (SUBSTR( col2 , INSTR(TO_CHAR(col2),',') + 1, LENGTH(col2)) <= 2 )" полностью игнорируется. почему?
в моём понятии Recordset просто передаёт String в Oracle и забирает результат.

видимо это не так. в чём моя ошибка?
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934526
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что хотите найти то?
Мне кажется что конструкция
Код: plaintext
(SUBSTR( col2 , INSTR(TO_CHAR(col2),',') +  1 , LENGTH(col2))
Вернет строку, и сравнивать ее с числом не правильно.
(строку, начинающуюся после ",")
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934533
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
to_number(SUBSTR( col2 , INSTR(TO_CHAR(col2),',') +  1 , LENGTH(col2))) <=  2 
а вот так находит все у которых за запятой только одна цифра и эта цифра <=2.
Т.е. 124,10 в выборку не попадает.
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934650
NBolbot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вообще-то я хочу найти все строчки, у которых не больше двух цифр после запятой.
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32934745
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда так:
LENGTH(SUBSTR( col2 , INSTR(TO_CHAR(col2),',') + 1, LENGTH(col2))) <= 2
но еще раз предупреждаю:
цифры 12,100 сюда не попадут.
а сколько нулей после запятой поставит провайдер, лучше спросить на форуме по ораклу.
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32935507
Фотография Worobjoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправлюсь.
Провайдер тут не при чем,
но с лишними нулями надо что то делать.
...
Рейтинг: 0 / 0
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
    #32935839
Беляев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверьте что за строка получается
в strSQL - это раз
Поменяйте строку подключения - это два
Оракл тут не причем, но проверьте какая установлена кодировка

Владислав Беляев
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ADODB.Recordset --> результат ноль, Oracle --> всё нормально
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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