Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
1

Запрос иногда работает, а иногда - нет.

20.05.2007, 15:24. Показов 1905. Ответов 14
Метки нет (Все метки)

Написал запрос вида:
data = Request.QueryString('data')
sql='SELECT * FROM svch where (((svch.Data)=#' & data & '#));'

В урл ввожу например http://localhost/svch/default.asp?page=1&data=30/01/2001 - работает, а вот, например, с датой 08/02/2001 - не работает, говорит, что у меня EOF ошибка, что мол записей нет и все такое. Хотя ЗАПИСИ-ТО ЕСТЬ. В чем искать проблему ?

С уважением, Сергей.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2007, 15:24
Ответы с готовыми решениями:

POST запрос: иногда приходит пустой ответ от сервера
Отсылаю POST запрос(HttpWebRequest) , использую прокси(запрос на pw.mail.ru) и очень часто ответ...

Почему Application.DoEvents() иногда работает очень долго?
Добрый вечер. while (webBrowser.ReadyState != WebBrowserReadyState.Complete) { ...

file_get_contents(http://) иногда работает иногда нет
Такой код: echo file_get_contents('http://example.com/'); Иногда работает иногда нет, все что...

Openssl. Иногда вызов функций шифрования проходит нормально, иногда нет
Всем привет! Использую библиотеку openssl для шифрования / дешифрования. Генерирую ключи...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
14
Rider
20.05.2007, 15:35 2
U menya takie problemy voznikali.
Poigraysya s SQLem.
Naprimer vyvedi ego na ekran i zapihni puchkami v bazu i posmotri chto proishodit.........
Drugoy put', samomu 'ruchkami' sostavlyat' datu i privodit' k db formatu (ty dumaesh' chto ty rabotaesh' dd/mm/yy, a db - mm/dd/yy)
Suschestvuet esche function DateValue() v Access (s kotorym, kak ya ponimau, ty rabotaesh', t.k. v MSSQL vse och. prosto >8)))
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
20.05.2007, 15:38  [ТС] 3
пробовал и '.' и '/' - результат один. С SQL-ем тоже игрался. В Access все работает.
0
Varvar
20.05.2007, 16:16 4
Привет!
Попробуй изменить SQL запрос. Например:
sql='SELECT * FROM svch where svch.data=' & ''' & data & '''.
Формат data (DD.MM.YYYY)
Попробуй!
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
20.05.2007, 16:25  [ТС] 5
В ASP пишу
sql='SELECT * FROM svch where svch.data=' & ''' & data & '''

В урл ввожу
http://localhost/svch/default.asp?page=2&data=23.01.2001

Тип ошибки:
ADODB.Recordset (0x800A0BB9)
Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.

http://localhost/svch/default.asp?page=2&data=23/01/2001
дает тот же результат.

В БД дата хранится в виде 23.01.2001
0
0 / 0 / 3
Регистрация: 27.03.2012
Сообщений: 2
20.05.2007, 16:30 6
Мне кажется что она просто выводится тебе в таком формате, а не хранится...

В таких случаях лучше всего использовать to_char(), например, чтобы вывести записи с сегодняшней датой:

SELECT...
WHERE to_char(date1,'yyyymmdd') = to_char(sysdate,'yyyymmdd')
0
Rider
20.05.2007, 16:39 7
to smalig:
a chto eto za function takaya interesnaya to_char()? Ya ee v Accesse ne nashel?
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
20.05.2007, 16:49  [ТС] 8
Господа, а кто может объяснить, что такое
rsLevel.Open sql,DB,3 и чем это отличается от
rsLevel.Open sql,WebDB,3,1 ?
Просто при втором условии не работает sql='SELECT * FROM svch where (((svch.Data)=#' & data & '#));'
А вот sql='SELECT * FROM svch where svch.data=' & ''' & data & ''' никогда не пашет.
Данные точно хранятся в dd.mm.yyyy
0
Sergik
20.05.2007, 17:02 9
Видимо так и будут у всех проблемы с датами происходить...
Вырезка из FAQ самого Shergin'a:
-------------
В Windows-программировании, существует понятие системной
локали. Что такое локаль? В практическом плане это регионозависимый способ
представления даты, времени, валют и некоторых других значений
в родном для пользователя виде.

Для локалей существует уникальный идентификатор - LCID. Списки
идентификаторов LCID можно найти в MSDN. Например, русская локаль -
LCID = 1049, американская - LCID = 1033. Есть также некий буквенный
идентификатор, совпадающий порой с ISO-639-2 Alpha-2 (например, 'ru'),
а порой и не совпадающий ('us-en'). Этот идентификатор
иногда используется вместо числового.

Что такое MS Office? Это приложение, имеющее ряд настроек для
используемых системных локалей. Для русской версии MS Office по
дефолту обычно поддерживаются 1033, 1034, 1036, 1049. Полный список
можно наблюдать по названиям каталогов, заглянув в Program
FilesMicrosoft OfficeOffice.

Почему версия MS Office не имеет никакого отношения к поддержке
локалей в вебсистемах? Потому что используется только ODBC-драйвер,
который работает с любыми локалями, задействованными в системе.

Как устанавливается локаль в вебприложении и БД? Для Access и других
'плоских' Jet-баз локаль устанавливается синхронно. То есть пишем

Session.LCID = 1033 '(US-English)

или

Session.LCID = 1049 '(Russian)

и Access начинает принимать за правильные в первом случае даты формата
MM/DD/YYYY, во втором - DD.MM.YYYY. Для SQL Server все несколько
сложнее - у него собственная система локалей. Для первого случая в
сессии нам пришлось бы в теле запроса написать

SET LANGUAGE english

во втором -

SET LANGUAGE russian

Самый простой способ вставить дату - это написать

'DD.MM.YYYY'.

Такое значение автоматически преобразуется по синхронным локалям в
формат datetime непосредственно СУБД (или ее суррогатом под
названием MS Jet).

Пример, иногда встречающийся на иностранных сайтах:

#MM/DD/YYYY#

Если мы заглянем чуть глубже в документацию к Microsoft Access, то
обнаружим, что это специальный 'оригинальный' формат даты и времени,
который всегда являет собой US EN (LCID=1033) и не использует
синхронных правил преобразования.

Таким образом, для российских сайтов наилучшим решением является
прописывание

Session.LCID = 1049 '(Russian)

и использование одинарных апострофов, предполагающих синхронное
конвертирование.

Дополнение: в Script engine 5.5 для чтения и установки локалей
можно использовать функции GetLocale и SetLocale. Теперь это работает
и в WSH.
------------------------
От себя добавлю: чтобы работало в SQL Server надо в Interprise Manager в свойствах самого сервера установить Default Database Language for User на Russian.
И всегда пишите 'DD.MM.YYYY' (можно YY)
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
20.05.2007, 17:26  [ТС] 10
Сработало.
Если писать, например, 08.02.2001 (8-е февраля), то не работает. А вот если 02.08.2001 - работает.
Вопрос к Sergik - где можно почитать этот самый FAQ Shergin'a ? Хочется посмотреть, что это такое.

Вот такие дела.
Всем большое спасибо за помощь.

С уважением, Сергей.
0
Sergik
20.05.2007, 17:54 11
Шергин - великий русский человек - ASP-шник, один из модераторов самой лучшей, на мой взгляд, рассылки, касаемой ASP.
рассылка. Подписка - http://asponline.webware.ru/
FAQ 1 - http://shergin.ru/asp/faq.asp
0 / 0 / 0
Регистрация: 20.05.2007
Сообщений: 172
20.05.2007, 17:57  [ТС] 12
Спасибо.
Я думаю, будет полезна многим.

С уважением, Сергей.
0
0 / 0 / 3
Регистрация: 27.03.2012
Сообщений: 2
20.05.2007, 17:58 13
C LCID все правильно, только если нет возможности самому залезть в настройки сервера или нельзя менять, то 'WHERE to_char(rlm_originstartdate,'dd.mm.yyyy') = '08.02.2001'' будет работать в любом случае...

TO: Rider
> a chto eto za function takaya interesnaya
> to_char()? Ya ee v Accesse ne nashel?

и не найдешь, потому что это не функция Access
0
Rider
21.05.2007, 03:35 14
to smalig:
Nu rasskazhi chto za function takaya to_char()?
0 / 0 / 3
Регистрация: 27.03.2012
Сообщений: 2
21.05.2007, 11:19 15
Посмотри хотя бы здесь:
http://www.relib.com/database/sql_format_0.asp
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.05.2007, 11:19

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Почему иногда отслеживается нажатие на три клавиши сразу, а иногда нет
Доброй ночи, кто может объяснить почему иногда отслеживает нажатие на три кнопки сразу, а иногда...

Почему иногда функции передается значение int, а иногда - нет?
1 случай: void Function_1(int* & rVarOne, int* &rVarTwo) { /* Какие-то операции с...

Компьютер зависает, иногда с полоской по монитору, иногда с синим экраном.
У меня такая штука с компом: включаешь компьютер, можешь подолгу за ним сидеть: играть, смотреть...

Компьютер сам отключается. Иногда моментально, иногда через время
Привет всем. В общем комп при включении издает какой то треск и сразу отключается. Иногда...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.