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

Вниз

Поис в диапазоне дат   Найти похожие ветки 

 
viktooor   (2010-05-24 09:00) [0]

В Grid вношу даты с помощью DataTime.
При запросе ввожу даты через Edit.Text, пробовал через DataTime
Делаю запрос с помощью BETWEEN, не получается -пишет разные типы

ADODataSet3.Close;
ADODataSet3.CommandText :="SELECT *FROM Zajvka "+
"WHERE Срок_поставки  BETWEEN "Edit1.Tex" and "Edit2.Text"");
ADODataSet3.Open;


 
Sergey13 ©   (2010-05-24 09:06) [1]

> [0] viktooor   (24.05.10 09:00)
> "WHERE Срок_поставки  BETWEEN "Edit1.Tex" and "Edit2.Text"");

Откуда твоя СУБД знает про твои едиты?
Используй параметры.
Завязывай рассказывать про свой грид. Он тут ВООБЩЕ ни к чему. Это просто телевизор для данных.


 
12 ©   (2010-05-24 11:03) [2]

такая же ерунда была вчера,  Access(A)
использовал параметры, первым делом - ничего хорошего не получилось
в oracle, mssql - работает, в A - нет..

проблему решил так:
формировал запрос в программе, выводил в мемо.
Копировал из мемо в A, запускал, и так до победного конца


 
Anatoly Podgoretsky ©   (2010-05-24 11:05) [3]

> viktooor  (24.05.2010 09:00:00)  [0]

Используй параметры, тогда не сможешь подобную дурость написать и все будет
работать.


 
Anatoly Podgoretsky ©   (2010-05-24 11:53) [4]

> 12  (24.05.2010 11:03:02)  [2]

Глупо


 
Amoeba_   (2010-05-24 12:06) [5]


> такая же ерунда была вчера,  Access(A)
> использовал параметры, первым делом - ничего хорошего не
> получилось
> в oracle, mssql - работает, в A - нет..
>

У всех работает, и только у тебя нет ... Значит у кого-то руки кривые.


 
Плохиш ©   (2010-05-24 12:07) [6]


> 12 ©   (24.05.10 11:03) [2]
>
> такая же ерунда была вчера,  Access(A)
> использовал параметры, первым делом - ничего хорошего не
> получилось
> в oracle, mssql - работает, в A - нет..

Ошибка в программе.


 
viktooor   (2010-05-25 15:24) [7]

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
     ADOQuery1.FieldByName("beg_date").AsDateTime:= DateTimePicker1.Date;
ADOQuery1.FieldByName("fin_date").AsDateTime:= DateTimePicker2.Date;
     ADOQuery1.Open;
Выдает ошибку не может найти "beg_date"
"beg_date" определил в параметрах и выставил тип Дата


 
turbouser ©   (2010-05-25 15:47) [8]

параметр это не FieldByName а Parameters.ParamByName


 
12 ©   (2010-05-25 15:50) [9]

глупо, согласен, наверное как-то не так поле определил, но надо было срочно :)

Вот собственно
 Login := edtLogin.Text;
 Pwd := edtPwd.Text;
 If (length(Login) > 8) or (Length(Pwd) > 8) then
 begin
   ShowMessage("Ни пароль, ни логин не могут быть больше 8 символов."+#13#10+"Приравнивается к попытке SQLinjection. Выходим..");
   btnNo.Click;
   Exit;
 end;
 qLogin.SQL.Text := "Select IdEmployee from rnrEmployee where Login = :Login and Pass = :Pwd";
 qLogin.Parameters.ParamByName("Login").Value := Login;
 qLogin.Parameters.ParamByName("Pwd").Value := Pwd;
 qLogin.Open;


 
viktooor   (2010-05-25 16:14) [10]

ADOQuery1.Close;
ADOQuery1.Prepared;
ADOQuery1.SQL.Clear;
     ADOQuery1.Parameters.ParamByName("beg_date").Value:= DateTimePicker1.Date;
ADOQuery1.Parameters.ParamByName("fin_date").Value:= DateTimePicker2.Date;
     ADOQuery1.Open;

SELECT*
FROM Zajvka
WHERE Срок_поставки_нам  between :beg_date and:fin_date

Ошибка
Parameter "beg_date" not found


 
12 ©   (2010-05-25 16:22) [11]


> ADOQuery1.SQL.Clear;
>      ADOQuery1.Parameters.ParamByName("beg_date").Value

и чего ты хотел? :)

ADOQuery1.SQL.Text :=
 " SELECT *                                                                        "+
 " FROM  Zajvka                                                                   "+
 " WHERE  Срок_поставки_нам  between :beg_date and:fin_date ";
ADOQuery1.Parameters.ParamByName("beg_date").Value:= DateTimePicker1.Date;


 
turbouser ©   (2010-05-25 16:27) [12]


> .SQL.Clear;

:)


 
Anatoly Podgoretsky ©   (2010-05-25 16:35) [13]


> "beg_date" определил в параметрах и выставил тип Дата

Какие еще параметры, они не наблюдаются.


 
Anatoly Podgoretsky ©   (2010-05-25 16:38) [14]

Да зря я посоветовал, а хотел как лучше.


 
Плохиш ©   (2010-05-25 16:51) [15]


> viktooor   (25.05.10 15:24) [7]

Ты сам-то свой, так сказать, код прокомментировать и выполнить сможешь?


 
Semen   (2010-05-25 16:58) [16]

Виктор, напиши так и все будет работать:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("Select*");
ADOQuery1.SQL.Add("From Zajvka.DB");
ADOQuery1.SQL.Add("Where date>= :prm1 and date<= :prm2");
ADOQuery1.ParamByName("prm1").AsDate:=StrToDate(DateEdit1.Text);
ADOQuery1.ParamByName("prm2").AsDate:=StrToDate(DateEdit2.Text);
ADOQuery1.Open;


 
viktooor   (2010-05-25 17:08) [17]

ADOQuery1.Close;
// ADOQuery1.Prepared;
//ADOQuery1.SQL.Clear;
 ADOQuery1.SQL.Text :=
" SELECT *                                                             "+
" FROM  Zajvka                                                        "+
" WHERE  Срок_поставки_нам  between :beg_date and:fin_date ";
ADOQuery1.Parameters.ParamByName("beg_date").Value:= DateTimePicker1.Date;
ADOQuery1.Parameters.ParamByName("fin_date").Value:= DateTimePicker2.Date;
     ADOQuery1.Open;

несоответсвие типов данных в выражении условия отбора


 
viktooor   (2010-05-25 17:10) [18]

Semen
Сейчас по пробую


 
viktooor   (2010-05-25 17:24) [19]

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("Select*");
ADOQuery1.SQL.Add("From Zajvka ");
ADOQuery1.SQL.Add("Where Срок_поставки_нам>= :beg_date and Срок_поставки_нам<= :fin_date");
ADOQuery1.Parameters.ParamByName("beg_date").Value:=StrToDate(DateEdit1.Text);
ADOQuery1.Parameters.ParamByName("fin_date").Value:=StrToDate(DateEdit2.Text);
ADOQuery1.Open;

Ошибок не выдает , но нет результата


 
Semen   (2010-05-25 17:26) [20]

Виктор, у тебя будет такая конструкция с DateTimePicker1.Date:

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("Select*");
ADOQuery1.SQL.Add("From Zajvka.DB");
ADOQuery1.SQL.Add("Where date>= :prm1 and date<= :prm2");
ADOQuery1.ParamByName("prm1").AsDate:=DateTimePicker1.Date;
ADOQuery1.ParamByName("prm2").AsDate:=DateTimePicker2.Date;
ADOQuery1.Open;


 
Semen   (2010-05-25 17:38) [21]

("prm1")
("prm2")
не заменяй своими
("beg_date")
("fin_date")
Имя поля у меня date, а у тебя какое?


 
Semen   (2010-05-25 17:41) [22]

В
ADOQuery1.SQL.Add("Where date>= :prm1 and date<= :prm2");
вместо date поставь имя своего поля по которому собираешься отбирать данные, остальное все без изменений


 
viktooor   (2010-05-25 18:45) [23]

Все понял
Попробую
Уезжаю в командировку на неделю
Приеду продолжу если не выйдет
Спасибо


 
Semen   (2010-05-25 18:57) [24]

Пожалуйста!


 
viktooor   (2010-05-28 12:10) [25]

SEMEN
Командировку перенесли

ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add("Select*");
ADOQuery1.SQL.Add("From Zajvka.DB");
ADOQuery1.SQL.Add("Where date>= :prm1 and date<= :prm2");
ADOQuery1.ParamByName("prm1").AsDate:=DateTimePicker1.Date;
ADOQuery1.ParamByName("prm2").AsDate:=DateTimePicker2.Date;
ADOQuery1.Open;

У меня  база Access
ADOQuery1.SQL.Add("From Zajvka.mbd");
ADOQuery1 только через Parameters.ParamByName
Пока не получается
Вместо AsDate------Value


 
12 ©   (2010-05-28 12:15) [26]

поробуйте еще

сначала
.Parameters.ParamByName("prm1").DataType := ftDate, ftTime, ftDateTime,
в каком надо варианте
потом
Value := DateTimePicker1.Date;



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

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

Наверх




Память: 0.53 MB
Время: 0.115 c
15-1270049066
Чайник
2010-03-31 19:24
2010.08.27
Сколько на самом деле человек вКонтакте?


2-1266331529
Zalm
2010-02-16 17:45
2010.08.27
idFTP


15-1272137380
antonn
2010-04-24 23:29
2010.08.27
Цитата из "Искусство войны"


2-1267877887
girichev
2010-03-06 15:18
2010.08.27
Загрузка изображения из Resources


8-1204713238
Vredinka
2008-03-05 13:33
2010.08.27
Ссылка на видео