现在知道一个access数据库中的表room  
字段为:  fanghao  busy  free现在要修改fanghao为12的那一行,把busy的值加1,把free的值减1。
请问应该怎么写?
用table好还是用query好,怎么写?
哪位大侠可以告诉我啊,麻烦写出来好吗?谢谢!!!

解决方案 »

  1.   

    var
      newbusy,newfree :integer;with ADOQuery1 do
    begin
      sql.close;
      sql.clear;
      sql.add('select * from room where fanghao=12');
      open;
      if recordcount <> 0 then
      begin
        newbusy := Fieldbyname('busy').asinteger; 
        newfree := Fieldbyname('free').asinteger; 
      end;
    end;
    -----------------------------------------------
    with ADOQuery1 do
    begin
      sql.close;
      sql.clear;
      sql.add('update set busy=:busy and free=:free where fanghao=12');
      parameters.parambyname('busy').value := newbusy;
      parameters.parambyname('free').value := newfree;
      execsql;
    end;
      

  2.   

    对不起,楼主
    把第2个adoquery的sql语句改一下,少了表名room
    ------------------------------------------------------------
    'update room set busy=:busy and free=:free where fanghao=12'
      

  3.   

    var
      iCount : Integer;with ADOQuery1 do
    begin
      sql.close;
      sql.clear;
      sql.add('select * from room where fanghao=12');
      open;
      if recordcount <> 0 then
      begin
        Edit;
        for iCount := 0 to RecordCount -1 do
        begin
          Fieldbyname('busy').Value := Fieldbyname('busy').asinteger + 1; 
          Fieldbyname('free').Value := Fieldbyname('free').asinteger - 1;
          Next;
        end; 
        Post;
      end;
    end;
      

  4.   

    哎,就是,一条SQL语句就解决的...
      

  5.   

    不用Query不行吗?可以用ADOCommand啊,一句就完了。
    还有就是前提是有没有一个结果集,
    如果有结果集:
    那就用adoquery1.fieldbyname('busy').asinteger:=adoquery1.fieldbyname('busy').asinteger+1;
    这样的。
    要是没有结果集就用:
    adocommand1.commandtext:='update room set busy=busy+1,free=free-1 where fanghao=12';
    adocommand1.execute;
      

  6.   

    var
      mysql: string;
    begin
      mysql := 'update room set busy=busy+1,free=free-1 where fanghao=12';
      with ADOQuery1 do
      begin
        close;
        sql.clear;
        sql.text := mysql;
        try
          ExecSQL;
        except     end;
      end;
    end;
      

  7.   

    谢谢!能否不用ADOQuery1 而只用table?怎么写
      

  8.   

    用query和table都可以实现,基本是一样的,但是query比较好,具体可以去看看李维的书