我的目的是将forpro2.6的dbf文件通过batchmove组件导入到sql2000中去,由于每次选择的源文件不定,故在程序中动态设定:
    table1.DatabaseName := directorylistbox1.Directory;
    table1.TableName := FileListBox1.FileName;
同样,目标文件(sql2000)将设定为同名文件:
   table2.DatabaseName := 'HisDataSql';
   aaa:=stringreplace('dbo.'+extractfilename(filelistbox1.filename),' ','',[rfReplaceAll]);
   aaa:=copy(aaa,1,Length(aaa)-4);
   table2.TableName:=aaa;
   // table2.TableName:='03d10d02' ;
   label5.Caption := table2.TableName;
但结果是在导入时(batchmove.execute),出现错误提示:‘Invalid table name’,
若直接: table2.TableName:='03d10d02' ,则不会出错;
为什么用变量aaa替换就不行呢?

解决方案 »

  1.   

    aaa:=stringreplace('dbo.'+extractfilename(filelistbox1.filename),' ','',[rfReplaceAll]);
    aaa:=copy(aaa,1,Length(aaa)-4);
     会不会是你有时候获得的aaa的结果为空的原因呢?
      

  2.   

    你看看你的 aaa 的值是不是 03d10d02。肯定不是的,那么是你转换 aaa 时有问题了。
      

  3.   

    我感覺,你的
    >>aaa:=stringreplace('dbo.'+extractfilename(filelistbox1.filename),' ','',[rfReplaceAll]);
    轉過來後 aaa 不是 '03d10d02', 你可試試!!
      

  4.   

    跟踪aaa的值,看是不是'03d10d02'
      

  5.   

    没错的,aaa:='03d10d02';请高手指教!!!
      

  6.   

    不可能,你这样写:
    aaa:='03d10d02';
    Table2.TableName:=aaa;如果不行,才怪了
      

  7.   

    对不起,我以下大括号内的内容是错误的:{ 没错!aaa的确是我要的内容。
    就是说:
        aaa:='abcd';
        table2.tablename:=aaa;
    都不行;
    但table2.tablena:='abcd'; 就行。为什么???}环境:win2000server+d6+sqlserver2000
    我今天发现情况是:只要aaa:='03d10d02', 就不行,如果是aaa:='a03d10d02'就行,
    也就是说:sql中的表开头是‘0’开头就不行,是不是与sql的命名规则有关,可我在
    sql中手工建立表‘03d10d02’时,却正常!到底是什么回事!!!
    请高手不要吝啬!谢谢!!!