Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

MS SQL в ХР и 2000 Вмндоусе. Почему работает по разному? [D6, MSSQL]


Страницы:   1 2

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-навигатор приобретать, не дай вдруг наткнуться...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо