Форум: "Начинающим";
Текущий архив: 2010.08.27;
Скачать: [xml.tar.bz2];
ВнизПоис в диапазоне дат Найти похожие ветки
← →
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]параметр это не
Field
ByName а 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;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.104 c