Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.06;
Скачать: CL | DM;

Вниз

SQL с датами   Найти похожие ветки 

 
чайник1   (2004-01-12 14:10) [0]

Уважаемые мастера, помогите правильно составить запрос, на форме два компонента типа TDataPicker, пользователь вводит начало и конец периода для обработки, нужно выбрать все записи
делаю так.
procedure Tvv_usl.BitBtn1Click(Sender: TObject);
var sr,sr1:TDateTime;
begin
sr:=t1.Date;
sr1:=t2.date;
if sr<sr1 then
begin
dat1.plan.SQL.Text:="select * from name_graf where dat_pl>= :par0 and dat_pl<= :par1 Order by dat_pl";
dat1.plan.Params[0].asDatetime :=sr;
dat1.plan.Params[1].asDatetime :=sr1;
dat1.plan.ExecSQL;
dat1.plan.Active:=true;
end;
end;
Выдает ошибку неверный тип поля. спасибо


 
stone ©   (2004-01-12 14:13) [1]

Так параметры еще создать нужно


 
чайник1   (2004-01-12 14:18) [2]

так dat1.plan.Params.Add;


 
Johnmen ©   (2004-01-12 14:21) [3]

Что такое plan ?


 
sniknik ©   (2004-01-12 14:24) [4]

> dat1.plan.ExecSQL;
> dat1.plan.Active:=true;
одно из двух лишнее (первое).


 
sniknik ©   (2004-01-12 14:27) [5]

параметры создавать не надо если у тебя PapamCheck включен (по умолчанию так).


 
belyh ©   (2004-01-12 14:33) [6]

Ээээ... а у меня проблема такая:
тоже с датой, но только возникает она прямо в SQL-buildere
создаю там простую выборку, где:
date = 10.10.2003 к примеру - и сам билдео пишет мне:
Error in Criteria: Invalid use of keyword
причем дату всяко разно вводил и ччерез слэш и в кавычках - все одно


 
Johnmen ©   (2004-01-12 14:36) [7]

>belyh ©

Имена поле не должны совпадать с зарезервированными словами (keyword)!


 
GLFox   (2004-01-12 14:36) [8]

Если юзаешь IBX, то в D6 были проблемы в некоторых версиях.
Попробуй че-нить типа так:
{...}
with dat1.plan do begin
SQL.Text:="select * from name_graf where dat_pl between :par0 and :par1 Order by dat_pl";
ParamByName("par0").asDatetime :=sr;
ParamByName("par1").asDatetime :=sr1;
//dat1.plan.ExecSQL; <= это вообще глупость какая-то
plan.Active:=true;
end;
{...}


 
belyh ©   (2004-01-12 14:42) [9]


> Johnmen

блин! че то я прогнал. теперь придется все переделывать. спс


 
Mike Kouzmine ©   (2004-01-12 14:43) [10]

Johnmen © (12.01.04 14:36) [7] Безобразие, понаделали зарезервированных слов. С GROUP то же самое, блин.


 
чайник1   (2004-01-12 14:43) [11]

>GlFox
я уже так делал, ошибка такая же.
Вот ума и неприложу как еще...


 
GLFox   (2004-01-12 14:50) [12]

Ну так проверь тогда тип своего поля, блин. Должен быть какой-нибудь TIMESTAMP или DATE...


 
GLFox   (2004-01-12 14:52) [13]

А еще может быть что где-то имена накладываются. Или параметр с полем или поле с полем...


 
belyh ©   (2004-01-12 14:54) [14]

НЕеееее пацаны - дело в незарезервированном слове - я щас переписал - у меня тот же глюг что и у
> чайник1

НУ не хочет он делать выборку по полю, типа date. Сам СКуЛ Билдер мучил долго долго - он все ощибку выдает.
Paradox 7
D7
Win 2000 - хотя вряд ли это имеет значение


 
ZrenBy ©   (2004-01-12 14:59) [15]

Для MSSQL можно попробовать передавать дату как строку в ISO формате

dat1.plan.SQL.Text:="select * from name_graf where dat_pl>= :par0 and dat_pl<= :par1 Order by dat_pl";
dat1.plan.Params[0].asString := FormatDateTime("yyyymmdd",sr);
dat1.plan.Params[1].asString := FormatDateTime("yyyymmdd",sr1);

Тип параметра, естественно, должен быть ftString


 
Johnmen ©   (2004-01-12 15:00) [16]

>belyh © (12.01.04 14:54)

Ну что сказать... Пока мы не видели ни строчки кода, ни описание настроек, ни указание используемых компонент...
Частично это относится и к автору...


 
sniknik ©   (2004-01-12 15:08) [17]

ZrenBy © (12.01.04 14:59) [15]
лишнее, MSSQL прекрасно работает и с датой, во всяком случае у меня глюков по этому поводу не было ни разу.
всегда использую ADO (это для справки, т.к. тип доступа имеет значение)


 
чайник1   (2004-01-12 15:20) [18]

я использую компоненты с вкладки dbExpress для соединения с сервером.
поле у меня на сервере в базе точно типа даты, я ведь туда вношу информацию.
А при выборке не работает. В общем ни один совет пока не помог..


 
belyh ©   (2004-01-12 15:29) [19]


> чайник1

у меня такая же проблема - причем я пока нашел только один выход
создаешь новую пустую таблицу с полем типа ДАТА - и вместо твоих переменных sr и sr1 - вносишь даты в эту таблицу в соответсвующие поля - а потом, когда делаешь выборку - то сравниваешь не с введенными , так сказать, вручную значениями, а со значениями тех новых полей...
надеюсь объяснил нормально


 
Johnmen ©   (2004-01-12 15:30) [20]

А вот так

with ParamByName("MyParam") do begin
DataType := ftTimeStamp;
ParamType := ptInput;
AsSQLTimeStamp := DateTimeToSQLTimeStamp(sr);
end;


 
чайник1   (2004-01-12 15:39) [21]

>Johnmen
ругается на все, наверное нужно какой-то модуль подключить в uses..


 
sniknik ©   (2004-01-12 16:05) [22]

> поле у меня на сервере в базе точно типа даты, я ведь туда вношу информацию
не обязательно, то что вносиш это не показатель, работает автоприведение типа (не ко всем типам)
к примеру
запрос
UPDATE [Договоры производства] SET Товар1С = GetDate()
работает в MSSQL без ошибок, несмотря на то чо поле Товар1С = VarChar(50) и тоже вносит туда информацию.
т.е. по твоему DBTimeStamp в MSSQL = VarChar ?? раз вносит.

> В общем ни один совет пока не помог..
и не поможет, ясности нет, как и что делаеш. того что показал недостаточно. см. > Johnmen © (12.01.04 15:00) [16]



Страницы: 1 вся ветка

Текущий архив: 2004.02.06;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.024 c
14-16608
Стесняюсь...
2004-01-02 00:57
2004.02.06
Пачеко


1-16481
sashok
2004-01-23 13:26
2004.02.06
Архиватор


14-16671
goga
2004-01-16 22:50
2004.02.06
Никуда не гожусь


14-16728
Piter
2004-01-15 15:41
2004.02.06
Перегрузка операторов и Шаблоны


6-16559
umx
2003-12-01 23:49
2004.02.06
Tthread