powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / ORDER BY MYTIME, где MYTIME-строка
15 сообщений из 15, страница 1 из 1
ORDER BY MYTIME, где MYTIME-строка
    #36246052
Alprad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
В БД есть строковое поле 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
ORDER BY MYTIME, где MYTIME-строка
    #36246089
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что за база данных у вас?
для MS SQL можно так:

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

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

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

nz?
...
Рейтинг: 0 / 0
ORDER BY MYTIME, где MYTIME-строка
    #36246222
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у автора провалы (NULL) в данных по по полю MYTIME, как я понял. поэтому и nz()
...
Рейтинг: 0 / 0
ORDER BY MYTIME, где MYTIME-строка
    #36246230
Alprad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
ORDER BY MYTIME, где MYTIME-строка
    #36246249
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
создайте в своей mdb запрос и скопируйте код , что я написал. сохраните его под именем, например: testsql
выполните его в базе mdb и посомтрите результат.

если вы в программе используете ADO то вам придётся ограничиться определенными ф-ями , которые позволяет access при доступе к данным в sql (некооторые vba)
...
Рейтинг: 0 / 0
ORDER BY MYTIME, где MYTIME-строка
    #36246265
Alprad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
ORDER BY MYTIME, где MYTIME-строка
    #36246271
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ещё раз повторяю - я дал код на 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
ORDER BY MYTIME, где MYTIME-строка
    #36246277
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проверьте значения в поле MYDATE. Может у вас там тоже NULL-значения есть, тогда его тоже в NZ()
...
Рейтинг: 0 / 0
ORDER BY MYTIME, где MYTIME-строка
    #36246327
Alprad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
ORDER BY MYTIME, где MYTIME-строка
    #36246340
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alprad Здесь где-то плюсики ставятся за полезные советы?
нет, не ставятся.
...
Рейтинг: 0 / 0
ORDER BY MYTIME, где MYTIME-строка
    #36246374
Alprad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-duke,

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


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