打印本文 打印本文 关闭窗口 关闭窗口
ADO多表更新BCB實現
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2233  更新时间:2009/4/23 10:47:14  文章录入:mintao  责任编辑:mintao
;         if(Query->Fields->Fields[F]->Value == TableField[F].FNValue);
                else
                {
                  {
                    Query->Edit();
                    Query->Fields->Fields[F]->Value = TableField[F].FNValue;
                    Query->Post();//更新回數據庫;
                  }
                }
              }
                                            
              Query->Next();
            }
              Query->Close();
      }
   }
}
//--------------------------------------------------------------------

更新表的按扭代碼為:
  std::vector<AnsiString>tableName;
  tableName.push_back("AA");//AA為表名:,把要更改表的名稱插入Vector
  tableName.push_back("BB");//BB為表名
  GetTheUpdateTable(tableName);
//---------------------------------------------
OK啦。
記錄DataSet要設成批更新模式。切記,切記。

有些不好的地方就是SQL語句的寫法不是很好。但沒辦法。因為我還沒有解決我上面問到的題。
還有有些地方不合理,如果做了很多次的POST,每改動一條記錄就Post了一次,如果一次改過超萬條的話,這樣做可是不行的。!!!!!!!!!!!!!!!!!!!!!1
有很多沒有必要的空循環。

我只能通過SQL語句來加下相應的辨別信息:
如:
Select A.ID as AA_Key_ID,A.Name as AA__Name ,A.StdNO as AA__StdNO ,B.Mark as BB__Mark , B.ID as BB_Key_ID from AA as A,BB as B where A.stdNO = B.stdNO
//----------AA,BB為表名:
每個表的關建字段要給出:我用 "表名 + _Key +關建字段名"來表示,
每個字段的的名字都要用:"表名+ __ + 字段名來分別"
上面的SQL語句,如果沒有加上附加信息:SQL就像這個樣子:
Select A.Id,A.Name,A.stdNO,B.Mark,B.ID from AA as A,BB as B
所以寫SQL語句有些繁,這只是多表修改的,刪除 ,和新增的代碼 在理解些代碼的基礎下可寫出。
實現的思原則是:把每一條改動過記錄記錄下來,然後拿這個記錄按表分類。再拿它來和數據庫原數據進行比較,如果不一樣,改之。

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口