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

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
25.02.2005, 16:02:13
    #32933976
Deminik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
В аксе нет функций SubStr и Lenght, а есть Mid и Len...
...
Рейтинг: 0 / 0
25.02.2005, 17:17:46
    #32934229
NBolbot
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
а я их и не использую как функции VB.

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

а если так:
Код: 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
25.02.2005, 17:32:28
    #32934273
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ADODB.Recordset --> результат ноль, Oracle --> всё нормально
Код: plaintext
m_ConnOracle.Errors( 0 ).ErrDescriptions

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

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

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

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

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

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


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