![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MS SQL в ХР и 2000 Вмндоусе. Почему работает по разному? [D6, MSSQL]
DimonS © (2006-04-26 05:20:00)Есть база в MS SQL (спутниковое наблюдение - GPS).
Есть программа для просмотра пробега авто за любой промежуток времени. Работает так: при запуске делается выборка данных, а затем из нее методом фильтрации выбирается нужный диапазон (база на серваке, который соединен радиомомедом, поэтому изначально делалось на фильтрации, т.к. не всегда есть доступ и иногда очень медленный).
Так вот...
Фильтр такой:
s:='TimeNav>='''+DateToStr(StrToDateTime(DateEdit1.Text+' '+MaskEdit3.Text))+''' and TimeNav<='''+DateToStr(StrToDateTime(DateEdit2.Text+' '+MaskEdit4.Text))+''' and UniqId='+QT.fieldByName('Uniq_ID').AsString;
QP.Filter:=s;
В ХР работает на ура! А в 2000 ни в какую - QP.Filter:=s; - не присваивается значение s фильтру. Разборка полета дала, что ошибка где-то в преобразовании даты. Пробовал дату преобразовать в Float - то же самое.
Пошел по пути делать выборки.
QP.Close;
QP.SQL.Clear;
QP.SQL.Add('select TimeSys, TimeNav,UniqID,Distance from Distance_all where TimeNav>'+D1+' and TimeNav<='+D2+' and UniqId='+QT.fieldByName('Uniq_ID').AsString+' order by Timenav');
QP.Open;
Ругается на запятую в формате даты.
Сделал:
D1:=ReplaceStr(FloatToStr(StrToDateTime(DateEdit1.Text+' '+MaskEdit3.Text)),',','.');
D2:=ReplaceStr(FloatToStr(StrToDateTime(DateEdit2.Text+' '+MaskEdit4.Text)),',','.');
(заменил запятую на точку) - работает, НО! Выбираются данные на 2 дня позже почему-то... Да и кривой, конечно, способ заменять запятую, на другом серваке формат даты другой могет быть...
Вот и вопрос - что за трабл такой?
Джо (2006-04-27 02:25:00) [21]> Что ты надеешься получить, если напишешь StrToDateTime ('01.02.2006')
> ?
Да, в принципе, все, что угодно :) Включая исключение (но это как раз самое лучшее). Уже тут несколько раз говорили — региональные настройки. Прочитайте, в конце концов, справку по StrToDateTime.
DimonS (2006-04-27 02:01:00) [22]
> Джо ©
Я для ввода даты использую TDateEdit из библиотеки RxLib.
В том то и дело, в ХР переводит отлично, в 2000 не хотит.
> Nikolay M. ©
Что ты надеешься получить, если напишешь StrToDateTime ('01.02.2006')?
Я не понял юмора. А для чего тогда функция StrToDateTime существует? Не для перевода ли из строкового представления даты-времени в DateTime?
Джо (2006-04-27 01:44:00) [23]Ну, хотя бы использовать для ввода даты не TEdit, а TDateTimePicker и параметры для TQuery (или что ты там используешь).
DimonS (2006-04-27 00:23:00) [24]В общем, понятно. Можно в этот форум не заглядывать больше. Одна болтовня и ни одного дельного ответа.
Я же попросил: ПОДСКАЖИТЕ, КАК ПРАВИЛЬНО!!! А не то, как я неправильно делаю. Я и сам вижу, что косяк вылез. Но, похоже, здесь или все такие умные, что не могут снизойти до того, чтобы написать ответ, или сами не знают. Второе скорее всего.
> Что ты надеешься получить, если напишешь StrToDateTime ('01.
> 02.2006')? А StrToDateTime ('2006/02/02 12:34:56.789')?
> А StrToDateTime ('Пишу сюда все, что захочу')?
> Не храни даты и вещественные числа в строках
Я надеялся получить дату-время в формате DateTime. Как ни странно, но срабатывает такой способ. По крайней мере, в Аксессовской базе таких траблов нет, ив парадоксе, и в дбф.
Nikolay M. (2006-04-26 17:11:00) [25]
> НО НИКТО!!! НЕ СКАЗАЛ, ЧТО ЗА ОШИБКА!!!
Я бы сказал, что ошибка в ДНК, но это грубо и не по сути.
Что ты надеешься получить, если напишешь StrToDateTime ('01.02.2006')? А StrToDateTime ('2006/02/02 12:34:56.789')? А StrToDateTime ('Пишу сюда все, что захочу')?
Не храни даты и вещественные числа в строках - и будет тебе счастье.
DimonS (2006-04-26 16:20:00) [26]
> Johnmen © (26.04.06 16:13) [3]
Пробовал, не помогает.
Если не сложно, объясните ошибку то? А то F1 и такие ответы не помогают.
Каюсь, в англицком я не силен. Если не трудно, объясните, как правильно?
Johnmen (2006-04-26 16:13:00) [27]Всё очень просто. Достаточно почитать StrToDateTime+F1, подумать.
Изучить параметы в запросах.
DimonS (2006-04-26 16:04:00) [28]Nikolay M. ©
> StrToDateTime(DateEdit1.Text)
Ответ не понят. Если предложите другое - предлагайте, а не "Поубивал бы, если бы его раньше не уволили..."
Ответа на вопрос не озвучен, таких я услыщал много на разных форумах, НО НИКТО!!! НЕ СКАЗАЛ, ЧТО ЗА ОШИБКА!!!
Извиняйте, если залез не на тот форум, где не могут ответить на такой вопрос (ДЛЯ ВСЕХ, а не для Профи), то я пас... Звиняйте....
Nikolay M. (2006-04-26 10:31:00) [29]Работал у меня студент, сплошь и рядом лепил такое
> StrToDateTime(DateEdit1.Text)
Поубивал бы, если бы его раньше не уволили...
http://www.yandex.ru/yandsearch?rpt=rad&text=%F0%E5%E3%E8%EE%ED%E0%EB%FC%ED%FB%E5+%ED%E0%F1%F2%F0%EE%E9%EA%E8+delphi
PS
Скажи, что за система, думаю как раз GPS-навигатор приобретать, не дай вдруг наткнуться...