你可以增加一个隐藏列(列宽为0),记录哪些行被修改过,保存的时候根据主键(你的数据表好象没有主键呀)来保存。如果是新增行则Addnew就可以了。

解决方案 »

  1.   

    每一行的tag屬性也可以保存一列紀錄
      

  2.   

    把主键值放在 .RowData(.Row) 中,这个东东在每一个 Row 中都有,比 .Tag 好。把
         .RowData(r)=gRs("id")
    加入循环中。
      

  3.   

    我的一段代馬,添加時把rowdata設置為1,保存后复員
    If Rs1.State = 1 Then Rs1.Close
    Rs1.Open "select top 1 CompanyName,Customer_NO ,ContactName,ContactSex ,ContactTitle,Phone1,Phone2,Fax,E_Mail, Other,Address,PostalCode,City,Country,Re from tbl_customers", CN1, adOpenStatic, adLockOptimistic
    For X = 1 To mg1.Rows - 1
        if mg1.RowData(x) = 1 then
            Rs1.AddNew
            For Y = 0 To mg1.cols - 1
                Rs1.Fields(Y).Value = mg1.TextMatrix(X, Y)
            Next
            Rs1.Update
            mg1.RowData(X) = 0
        end if
                
    Next
      

  4.   

    如果是修改的話在設置一個變量比如用 2 ,确認后在打開紀錄集和if     if mg1.RowData(x) > 0 then
            if mg1.RowData(x)=1 then Rs1.AddNew '判斷是增加還是修改
            For Y = 0 To mg1.cols - 1
                Rs1.Fields(Y).Value = mg1.TextMatrix(X, Y)
            Next
            Rs1.Update
            mg1.RowData(X) = 0
        end if
      

  5.   

    看你應該是會寫代碼,給你個思路(如果還不會就只能怪你基礎差了).
    如果你數據庫為SQL,且想保證數據完整性,在代碼開頭加上BEGIN TRANS,結尾加上COMMIT TRANS用到MSFlexGrid,我想你應該是主檔明細表關系吧:
    主檔即是更新
    明細表(即MSFlexGrid中的數據),先刪除(Delete * From 表 Where *) 再逐行增加(Insert *,不要逐個字段是賦值,一是代碼太長,二是執行速度相對慢些),最好用SQL語句直接操作
    去跟蹤是否更新或又增加了新行或刪除了某行太麻煩了.
      

  6.   

    按照樓上的方法在SQL數据同步時間會遇上更新行太多麻煩,我以前也是那樣做的,後來還是不得不麻煩一點
      

  7.   

    eRUGUO如果妳做過sql的數据同步的話妳就會明白我的痛苦了.........
      

  8.   

    to Frank_Xu:你的思路我曾经考虑过,但这样做是否是最好的方法呢?
      

  9.   

    to hnlzh:你提供的代码是否真的可以处理SQL的数据同步?请指教应该还要注意什么问题,多谢!
      

  10.   

    to hnlzh:我想知道在MSFlexGrid中如何使某列的标题居中,而其他内容按默认的方式排列?
      

  11.   


            Mg1.FixedAlignment(COL) = 4