谢谢大家,今天在朋友们的帮助下我终于懂了!
wqyzsh的段子也不行吧,不信您再试试,问题出在时间上,就是maskedit1.text上,因为Access要求(这块我也不确定,也可能是Delphi把SQL语句传送给Access后造成的)时间写成**::**::**,至少是**::**,
正确的如下,我在单位D6+ACCESS2000走通了,完全符合设计:
procedure TForm1.Button11Click(Sender: TObject);
var
tmpd,tmpt:tdatetime;
tmpd1,tmpt1:string;
begin
query1.Close;
query1.SQL.Clear;
tmpd := strtodate(edit4.text);
tmpt := strtotime(maskedit5.text);
tmpd1 := formatdatetime('yyyy-mm-dd',tmpd); // 'yyyy/mm/dd' 'yyyy/m/d' 都行
tmpt1 := formatdatetime('hh::mm',tmpt); // 必须是::否则错!
query1.SQL.Add('insert into dd(短日期,短时间,文本,备注,文本) values(#'+tmpd1+'#,#'+tmpt1+'#,:v1,:v2,:v3)');
query1.Params[0].AsString := edit5.Text;//‘111’
query1.Params[1].AsString := edit6.Text;//‘试验试验试验’
query1.Params[2].AsString := edit7.Text;//‘小王’
query1.Prepare;
query1.ExecSQL;
end;
请各位同好注意,这是Delphi+ACCESS处理日期、时间型字段的正解。