Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ORDER BY MYTIME, где MYTIME-строка / 15 сообщений из 15, страница 1 из 1
12.10.2009, 16:24
    #36246052
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Добрый день!
В БД есть строковое поле TIME. В нем-строка, отображающая время (напр. "15:10:46")

Пишу запрос в VB6

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, MYTIME"

По полю MYTIME сортируется согласно алфавиту, поскольку это строковое поле. Меня это не устраивает, поскольку нужна сортировка по времени и я пытаюсь строку перевести во время :

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, TimeValue ( MYTIME)"
Получаю сообщение об ошибке Data type mismatch in criteria expression.

Тогда пробую

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, CDate ( MYTIME)"
Получаю Invalid use of NULL

И пробую так

sSQL = "SELECT * FROM ARCH ORDER BY MYDATE, Time ( MYTIME)"
Получаю Wrong number arguments used with function in query expression 'Time ( MYTIME)'

Изменить это строковое поле на DateTime не могу (сейчас, по кр.мере) - БД постоянно занята несколькими пользователями.

Подскажите, пожалуйста, как можно подправить SQL-запрос, чтобы сортировка шла как надо?

Спасибо.
...
Рейтинг: 0 / 0
12.10.2009, 16:34
    #36246089
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
а что за база данных у вас?
для MS SQL можно так:

Код: plaintext
1.
2.
SELECT * FROM ARCH 
ORDER BY 
 convert(datetime,convert(varchar( 10 ),MYDATE, 101 )+' '+MYTIME,  101 )
...
Рейтинг: 0 / 0
12.10.2009, 16:57
    #36246148
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Konst_One,

База данных в mdb, работаю с ней через Visual Basic 6
...
Рейтинг: 0 / 0
12.10.2009, 17:01
    #36246158
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Konst_One,

Попробовал на всякий случай - undefined function 'convert' in expression.
...
Рейтинг: 0 / 0
12.10.2009, 17:07
    #36246178
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Код: plaintext
1.
SELECT * FROM ARCH 
order by CDate(CStr(MYDATE) + ' ' + nz(MYTIME,' 00 : 00 : 00 '))
...
Рейтинг: 0 / 0
12.10.2009, 17:14
    #36246198
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Konst_One,

nz?
...
Рейтинг: 0 / 0
12.10.2009, 17:18
    #36246222
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
у автора провалы (NULL) в данных по по полю MYTIME, как я понял. поэтому и nz()
...
Рейтинг: 0 / 0
12.10.2009, 17:21
    #36246230
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
sSQL = sSQL & "order by CDate(MYDATE & ' ' & MYTIME)"
дает Data type mismatch in criteria expression

sSQL = sSQL & "order by CDate ( CStr (MYDATE) & ' ' & Cstr (MYTIME,'00:00:00'))"
дает
Wrong number arguments used with function in query expression ...


sSQL = sSQL & "order by CDate ( CStr (MYDATE) & ' ' & Cstr (MYTIME))"
дает Invalid use of NULL
...
Рейтинг: 0 / 0
12.10.2009, 17:25
    #36246249
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
создайте в своей mdb запрос и скопируйте код , что я написал. сохраните его под именем, например: testsql
выполните его в базе mdb и посомтрите результат.

если вы в программе используете ADO то вам придётся ограничиться определенными ф-ями , которые позволяет access при доступе к данным в sql (некооторые vba)
...
Рейтинг: 0 / 0
12.10.2009, 17:31
    #36246265
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Konst_One,

функции nz в VB6 не вижу, пишу так

sSQL = sSQL & " order by CDate(CStr(MYDATE) + ' ' + IIF (IsNull (MYTIME)=true,MYTIME , '00:00:00'))"

Получаю тот же Invalid use of NULL
...
Рейтинг: 0 / 0
12.10.2009, 17:33
    #36246271
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
ещё раз повторяю - я дал код на DAO

Код: plaintext
1.
Dim rs as DAO.Recordset
Set rs = OpenRecordset("SELECT * FROM ARCH order by CDate(CStr(MYDATE) + ' ' + nz(MYTIME,'00:00:00'))")
...
Рейтинг: 0 / 0
12.10.2009, 17:35
    #36246277
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
проверьте значения в поле MYDATE. Может у вас там тоже NULL-значения есть, тогда его тоже в NZ()
...
Рейтинг: 0 / 0
12.10.2009, 17:54
    #36246327
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Konst_Oneпроверьте значения в поле MYDATE. Может у вас там тоже NULL-значения есть, тогда его тоже в NZ()

точно, там тоже есть пустые поля.

sSQL = sSQL & " order by CDate(CStr( IIF (IsNull (MYDATE)=true, '01.01.1900' , MYDATE) ) + ' ' + IIF (IsNull (MYTIME)=true, '00:00:00' , MYTIME))"

Заработало!
Спасибо огромное! Здесь где-то плюсики ставятся за полезные советы?
...
Рейтинг: 0 / 0
12.10.2009, 17:59
    #36246340
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
Alprad Здесь где-то плюсики ставятся за полезные советы?
нет, не ставятся.
...
Рейтинг: 0 / 0
12.10.2009, 18:12
    #36246374
Alprad
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ORDER BY MYTIME, где MYTIME-строка
big-duke,

Жаль, человек мне помог и к тому же оперативно.
Тогда вместо плюсика я передаю Konst_One большое спасибо и виртуальное пиво.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ORDER BY MYTIME, где MYTIME-строка / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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