Форум: "Базы";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.027 c