如何自动向paradox表中输入数据?请看一看该程序错在哪?(100分)

  • 主题发起人 主题发起人 rmh
  • 开始时间 开始时间
R

rmh

Unregistered / Unconfirmed
GUEST, unregistred user!
例如:表有'rq','payment'两个字段,设定当前日期为'2001-06-30',则
如何自动向表中'rq'字段输入如下数据
'2001-06-30'
'2001-07-30'
'2001-08-30'
'2001-09-30'
...
...

'2002-05-30'
有朋友给出如下程序:
var yy,mm,dd : word;
i,j,k: Integer;
begin
decodedate(date,yy,mm,dd);
yy:=yy-1;
mm:=mm;
k:=dd;

with query1 do
begin
Close;
SQL.Clear;
SQL.Add('Insert into table (rq) values(:rq1)');
end;

for i:=0 to 11 do
begin
j:=(mm+i) mod 12;
if j=0 then j:=12;
if (j=2) and (dd>28) then k:=28;
Query1.ParamByName('rq1').asDateTime
:=EnCodeDate(yy,mm,dd);
Query1.ExecSQL;
if j=12 then yy:=yy+1;
k:=dd;
end;
end;
运行结果如下:
'2001-06-30'
'2001-06-30'
'2001-06-30'
'2001-06-30'
'2001-06-30'
'2001-06-30'
'2002-06-30'
'2002-06-30'
'2002-06-30'
'2002-06-30'
'2002-06-30'
'2002-06-30'
月份没有根据要求变化.

 
采用decodedate,encodedate函数可以解决!
 
我觉得可以在取得设定日期后,将其转换为字符串,再截为年,月,日三段,
然后日不变,然后用循环嵌套加年和加月,并把加后的年和加后的月组合起来.再加上日.再转换
为日期,最好存入数据表.
 
for i:=0 to 11 do
begin
mm := mm +1;
j:=mm mod 12;
if j=0 then j:=12;
if (j=2) and (dd>28) then k:=28;
Query1.ParamByName('rq1').asDateTime
:=EnCodeDate(yy,mm,dd);
Query1.ExecSQL;
if j=12 then
begin
yy:=yy+1;
mm := 0;
end;
k:=dd;
end;
 
后退
顶部