帮我看看错在哪? (一开始代码弄错了,请大家从新看一下,红色部分是去掉的部分)(30分)

  • 主题发起人 主题发起人 fashow
  • 开始时间 开始时间
F

fashow

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
m,p1,p2:string;
n:Tdatetime;
begin
p1:=FormatDatetime('yyyy-MM-dd',DatetimePicker1.Date);
p2:=FormatDatetime('yyyy-MM-dd',DatetimePicker2.Date);
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select * from Tperson [red]where ID=2006004[/red]';
ADOQuery1.Open;
ADOQuery1.First;
for i:=0 to ADOQuery1.RecordCount-1 do
begin
if not ADOQuery1.Eof then
begin
n:=ADOQuery1.fieldbyname('Pbirth').asdatetime;//运行到这里出错了
m:=FormatDatetime('yyyy-MM-dd',n);
if (m>=p1) and (m<=p2 )then
begin
ADOQuery1.Edit ;
ADOQuery1.FieldByName('Pmemo').AsString :='1';
ADOQuery1.Post;
end;
ADOQuery1.Next;
end;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select * from Tperson where Pmemo='''+'1'+'''';
ADOQuery1.Open;
 
错误原因:is not a valid date and time
 
n: Tdatetime;
n:=StrToDateTime(ADOQuery1.fieldbyname('Pbirth').asstring);
 
没用一样的错!
 
求助!!!!
 
我怀疑该字段的内容不对,你应该检查表中该字段内容。
n:=ADOQuery1.fieldbyname('Pbirth').asdatetime;//
 
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.text:='update Tperson set Pmemo=''1'' where Pbirth>='quotedstr(formatdatetime('yyyy-mm-dd',DatetimePicker1.Date))+' and Pbirth<='quotedstr(formattimetime('yyyy-mm-dd',datetimepicker2.date));
adoquery1.exesql;
adoquery1.sql.close;
adoquery1.sql.clear;
adoquery1.sql.text='select * from Tperson where Pmemo=''1''';
adoquery1.sql.open;
你這樣試試看行不行,其實我覺得你那個循環不用也可以
 
to deardai 你的SQL语句有问题!
 
var
n:String;
n:=Trim(ADOQuery1.fieldbyname('Pbirth').asstring);//运行到这里出错了
 
我估计你的系统的时间格式应该带Pm或am所以在转换时出错了
 
我要说明一下的是,
ADOQUery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Text:='select * from Tperson where ID=2006004';
ADOQuery1.Open;
n:=ADOQuery1.fieldbyname('Pbirth').asdatetime;
Edit1.Text:=FormatDatetime('yyyy-MM-dd',n);
这样和我原来的唯一区别就是这个只取了一个记录,而刚开始的那段代码,我是提取了所有的代码,而此段代码可以成功的输出时间
所以我想我的那种循环是不是每次只对一条记录进行操作的???
 
请再看看啊,谢谢了
 
在你的数据库里,Pbirth可能为空
 
to 神经蛋白质
天哪,一语让我毛瑟顿开,谢谢!~~~非常感谢!~~~
 
后退
顶部