上面的回答都不对!!! 正确的原因是当你执行完“create table mytablename(.....)”语句之后,vfp就创建了“mytablename”,但是也同时把这个表设置为当前工作区了。这个表刚刚建立的时候是空的,因此循环语句走到开始的时候“.not. eof()”条件为假,程序退出循环!导致了你所说的结果。解决方法有两个: (1) select 1 use a shar go top do while .not. eof() mytablename = a.field1+'_1' create table mytablename(.....) select a && 把a表设置为当前工作区。 skip enddo (2) select 1 use a shar go top scan while .not. eof() mytablename = a.field1+'_1' create table mytablename(.....) endscan *** 使用scan …… endscan代替do while……enddo,就不用考虑工作区以及串指针的问题了。
上面的回答都不对!!! 正确的原因是当你执行完“create table mytablename(.....)”语句之后,vfp就创建了“mytablename”,但是也同时把这个表设置为当前工作区了。这个表刚刚建立的时候是空的,因此循环语句走到开始的时候“.not. eof()”条件为假,程序退出循环!导致了你所说的结果。 (1) select 1 use a shar go top do while .not. eof() mytablename = a.field1+'_1' create table &mytablename. (.....) select a && 把a表设置为当前工作区。 skip enddo (2) select 1 use a shar go top scan while .not. eof() mytablename = a.field1+'_1' create table &mytablename. (.....) endscan *** 使用scan …… endscan代替do while……enddo,就不用考虑工作区以及串指针的问题了。 ------------ 呵呵
create table (mytablename)(.....)
V_str varchar(100);
V_str := 'create table '||mytablename||'(.....)';
execute immediate V_str;
正确的原因是当你执行完“create table mytablename(.....)”语句之后,vfp就创建了“mytablename”,但是也同时把这个表设置为当前工作区了。这个表刚刚建立的时候是空的,因此循环语句走到开始的时候“.not. eof()”条件为假,程序退出循环!导致了你所说的结果。解决方法有两个:
(1)
select 1
use a shar
go top
do while .not. eof()
mytablename = a.field1+'_1'
create table mytablename(.....)
select a && 把a表设置为当前工作区。
skip
enddo
(2)
select 1
use a shar
go top
scan while .not. eof()
mytablename = a.field1+'_1'
create table mytablename(.....)
endscan
*** 使用scan …… endscan代替do while……enddo,就不用考虑工作区以及串指针的问题了。
正确的原因是当你执行完“create table mytablename(.....)”语句之后,vfp就创建了“mytablename”,但是也同时把这个表设置为当前工作区了。这个表刚刚建立的时候是空的,因此循环语句走到开始的时候“.not. eof()”条件为假,程序退出循环!导致了你所说的结果。
(1)
select 1
use a shar
go top
do while .not. eof()
mytablename = a.field1+'_1'
create table &mytablename. (.....)
select a && 把a表设置为当前工作区。
skip
enddo
(2)
select 1
use a shar
go top
scan while .not. eof()
mytablename = a.field1+'_1'
create table &mytablename. (.....)
endscan
*** 使用scan …… endscan代替do while……enddo,就不用考虑工作区以及串指针的问题了。 ------------
呵呵
在你的程序中加了一个"&"后结果就对了。但如果使用的是6.0以上版本,MountLion(人不寐)的方法更快。