一個問題讓我頭疼了一下午,彀對兩層有丰富襟精驗的高手幫忙看看這個問題.(5分)

  • 主题发起人 hurryman
  • 开始时间
H

hurryman

Unregistered / Unconfirmed
GUEST, unregistred user!
一個問題讓我頭疼了一下午,
彀對兩層有丰富襟精驗的高手幫忙看看這個問題.
前台用戶要輸入些時間(入廠日期,投保日期等)
后台我用SQL SERVER.
在表里我指定它們為datetime型
當前台送數到后台老提示'無效的時間變量!'
前台我是這樣的:
大家看我的問題出在哪了?
var s:string;
begin
if not (utdata.DataModule3.qymplan.State in [dsEdit, dsInsert]) then
utdata.DataModule3.qymplan.Edit ;
s:=datetostr(datetimepicker1.Date);
dbedit11.Field.Text :=s;//把時間送到dbedit11
end;
大家也談談你們平時如何解決時間問題
謝-謝
 
table['日期字段']:=int(datetimepicker1.date)
 
我用的query直接和database連接
 
//我現在有到用戶那里試了一下
//添加記綠沒有出現時間問題,只在更改某些記綠芰提示:'is not a vaild date'
 
'is not a vaild date'
看来是个空字段:) 没有值当然出错了。
 
但這些字段我指定可以為空啊
 
判断
if int(datetimepicker1.date)=0 then
table['日期字段'].isnull := true
else
table['日期字段']:=int(datetimepicker1.date);
 

begin
if not (utdata.DataModule3.qymplan.State in [dsEdit]) then
begin
utdata.DataModule3.qymplan.Edit ;
dbedit11.Field.value :=datetimepicker1.Date;
end;
end;
 
我覺的奇怪,我用table就沒有問題,用query就出現這個問題?
 
我对日期型字段的修改是:
Query.FieldByName('字段名').AsDateTime := datetimepicker1.Date;

 
SQL进行日期查询时和存储的日期格式不同,进行数据结算时对日期操作时报错。解决办法:写函数对两种日期进行格式转换。将2002-6-1转换为6/1/02的格式。
代码如下:
function olddtonewd(olddate:Tdatetime):string; //转变日期格式以查询
var
s,s1,year,month,day:string;
l,i,j:integer;
begin
s:=datetostr(olddate);
l:=length(s);
i:=pos('-',s);
s1:=copy(s,i+1,l-i);
j:=pos('-',s1);
j:=i+j;
year:=copy(s,1,4);
year:=copy(year,3,2);
month:=copy(s,i+1,j-i-1);
day:=copy(s,j+1,l-j);
result:=month+'/'+day+'/'+year;
end;
 
顶部