Parametro de Data no Mysql ? Como Pasar ?
06/11/2005
0
sqlteste.Close;
sqlteste.SQL.Clear;
sqlteste.SQL.Add(´select * from produtos´);
sqlteste.SQL.Add(´where data_compra between :dataInicial and :dataFinal´);
sqlteste.SQL.Add(´group by data_compra order by data_compra´);
sqlteste.ParamByName(´dataInicial´).AsDate := DateTimePicker1.Date;
sqlteste.ParamByName(´dataFinal´).AsDate := DateTimePicker12.Date;
sqlteste.Open;
Mas dá a seguinte mensagem de erro:
´Operation not applicable´
Estou usando o componente TQuery.
No MysQl, a Query roda desde que eu passe a data como ´aaaa/mm/dd´.
Como faço pra rodar essa query no delphi ??
Valeu...
Semchance
Posts
06/11/2005
Sabado
Inicio: String;
Final: String;
begin
If Datetimepicker2.Date < Datetimepicker1.Date Then
begin
ShowMessage(´Intervalo de datas inválido, a data inicial é maior que a data final!´);
Datetimepicker2.Date := Datetimepicker1.Date;
end
Else
begin
Inicio := DateToStr(Datetimepicker1.Date);
Final := DateToStr(Datetimepicker2.Date);
query1.Close;
query1.SQL.Clear;
query1.SQL.Text := ´SELECT * FROM boleto WHERE dtpagto >=:pInicial and dtpagto<=:pFinal ORDER BY dtpagto ASC´;
query1.ParamByName(´pInicial´).AsDateTime := StrToDate(Inicio);
query1.ParamByName(´pFinal´).AsDateTime := StrToDate(Final);
query1.Open;
dbgrid1.SetFocus;
Label5.caption := ´Registros: ´ + IntToStr(query1.RecordCount);
end;
06/11/2005
Semchance
07/11/2005
Wiltonfenix
sqlteste.Close;
sqlteste.SQL.Clear;
sqlteste.SQL.Add(´select * from produtos´);
sqlteste.SQL.Add(´where data_compra between :dataInicial and :dataFinal´);
sqlteste.SQL.Add(´group by data_compra order by data_compra´);
sqlteste.ParamByName(´dataInicial´).AsDate := [color=red:46a467715d]Copy(DateToSTR(DateTimePicker1.Date),7,4)+´-´+Copy(DateToSTR(DateTimePicker1.Date),4,2); +´-´+Copy(DateToSTR(DateTimePicker1.Date),1,2)[/color:46a467715d]
sqlteste.ParamByName(´dataFinal´).AsDate := [color=red:46a467715d]Copy(DateToStr(DateTimePicker12.Date),7,4)+´-´+Copy(DateToStr(DateTimePicker12.Date),4,2)+´-´+Copy(DateToStr(DateTimePicker12.Date),1,2); [/color:46a467715d]
sqlteste.Open;
07/11/2005
Sabado
O MySQL armazena a data no formato YYYY-mm-dd.
Por isso, você precisa criar uma variavel para transformar o formato data dd/mm/YYYY, assim:var
k,k1,k2: string;
data: string;
begin
k:=copy(edit2.text,1,2);
k1:=copy(edit2.text,4,2);
k2:=copy(edit2.text,7,4);
data:=k2+´-´+k1+´-´+k;
Quando for gravar, o sistema enviará o formato correto para o MySQL.
Depois disto voce pode utilizar aquela rotina que ja te enviei.
Um abraço
07/11/2005
Wiltonfenix
sqlteste.ParamByName(´dataInicial´).AsString := Copy(DateToSTR(DateTimePicker1.Date),7,4)+´-´+Copy(DateToSTR(DateTimePicker1.Date),4,2); +´-´+Copy(DateToSTR(DateTimePicker1.Date),1,2)
sqlteste.ParamByName(´dataFinal´).AsString := Copy(DateToStr(DateTimePicker12.Date),7,4)+´-´+Copy(DateToStr(DateTimePicker12.Date),4,2)+´-´+Copy(DateToStr(DateTimePicker12.Date),1,2);
07/11/2005
Semchance
E a forma que eu consegu foi essa:
sqlteste.Close;
sqlteste.SQL.Clear;
sqlteste.SQL.Add(´select * from produtos´);
sqlteste.SQL.Add(´where data_compra between :dataInicial and :dataFinal´);
sqlteste.SQL.Add(´group by data_compra order by data_compra´);
sqlteste.Params[0].Value := FormatDateTime(´yyyy,mm,dd´,dtini.Date);
sqlteste.Params[1].Value := FormatDateTime(´yyyy,mm,dd´,dtfim.Date);
sqlteste.Open;
Onde tdtini e dtFinal são doi DateTimerPicker
Valeu...
Clique aqui para fazer login e interagir na Comunidade :)