第一个问题,看看下面代码有什么问题:
    tbgs.First;
    tbgz.Active:=true;
    tbgz.First;
    while not tbgs.Eof do
    begin
        while not tbgz.Eof do
        begin
            with query1 do
            begin
                close;
                sql.Clear;
                sql.Add('update gzgl set '+tbgs.fieldbyname('公式左边').Value+'='+tbgs.fieldbyname('公式右边').Value+'');
                execsql;
            end;
        tbgz.Next;
        end;
        tbgs.Next;
    end;
    tbgz.Active:=false;为什么只能实现公式表中第一个公式的计算?第二个问题就是如何获得操作系统的系统目录比如win98是windows,2000却是winnt,如何在程序中获得是%systemdir%吗?呵呵,乱写一个

解决方案 »

  1.   

    好像是%system%,你测试一下吧
      

  2.   

    1.每次的循环里面都
    with query1 do
                begin
                    close;
                    sql.Clear;
                    sql.Add('update gzgl set '+tbgs.fieldbyname('公式左边').Value+'='+tbgs.fieldbyname('公式右边').Value+'');
                    execsql;
                end;
    肯定会出问题,自己改变一下,try
    2。search一下以前的帖子,很多
      

  3.   

    不太理解意思
    “tbgs.fieldbyname('公式左边').Value”的值返回的是字段名,
    “tbgs.fieldbyname('公式右边').Value”的值作为赋值,
    改为:
      sql.Add('update gzgl set '+tbgs.fieldbyname('公式左边').Value+'='''+tbgs.fieldbyname('公式右边').Value+'''');试试
      

  4.   

    第2个问题这样对吗,大家看看procedure TfrmMain.tButtonJsqClick(Sender: TObject);
    var
        sysdir:array[0..255] of char;
    begin
        getwindowsdirectory(sysdir,255);
        winexec(pchar(sysdir+'\calc.exe'),SW_SHOWNORMAL);end;
      

  5.   

    第一个问题,我试了,不是它通不过,是只会执行tbgs中第一条记录,后面的都不会
      

  6.   

    第一个怎么看都没问题
    第二个
    var
      SystemDir : array[0..MAX_PATH] of Char;
    begin
      GetSystemDirectory(@SystemDir,MAX_PATH);
      ShowMessage(SystemDir);
    end;
      

  7.   

    第二个问题我想调用windows自带的计算器,怎么不行啊
      

  8.   

    第二个问题解决,谢谢lion_lh(xmanx)!!!第一个问题还没有解决啊,求大家帮帮我,我总觉得根本没有任何问题
      

  9.   

    1. ;//将内循环条件放到外循环内,否则内循环只执行一次
       tbgs.First;
       while not tbgs.Eof do
        begin
             tbgz.Active:=true;
             tbgz.First;  //就是这个
            while not tbgz.Eof do
            begin
                with query1 do
                begin
                    close;
                    sql.Clear;
                    sql.Add('update gzgl set '+tbgs.fieldbyname('公式左边').Value+'='+tbgs.fieldbyname('公式右边').Value+'');
                    execsql;
                end;
            tbgz.Next;
            end;
            tbgs.Next;
        end;
        tbgz.Active:=false;2.GetSystemDirectory()
      

  10.   

    1.大家忽略了,他的tbgz.在第一次因EOF跳出以后,没有用First;所以        while not tbgz.Eof do以后再也得不到执行..... tbgs.First;
        tbgz.Active:=true;
        tbgz.First;
        while not tbgs.Eof do
        begin
         tbgz.First;//加进去!!!!!
            while not tbgz.Eof do
            begin
                with query1 do
                begin
                    close;
                    sql.Clear;
                    sql.Add('update gzgl set '+tbgs.fieldbyname('公式左边').Value+'='+tbgs.fieldbyname('公式右边').Value+'');
                    execsql;
                end;
            tbgz.Next;
            end;
            tbgs.Next;
        end;
        tbgz.Active:=false;
      

  11.   

    呵呵,不好意思,写的时候没人,帖上来才看到myling(阿德) ,真快啊!
    另,调用计算器可以直接
    shellexec('calc.exe');
    或者winexec('calc.exe');
      

  12.   

    有星星的就是有星星的,谢谢myling(阿德)!!!谢谢firetoucher(蹈火者)!!!第二个问题要谢谢lion_lh(xmanx)!!!虽然分少了点,表达我一点心意,不要介意,谢谢大家!!!
      

  13.   

    哈哈, firetoucher(蹈火者) 哪里哪里,兄弟你也不慢呀,哈哈