窗体上有很多文本框,对应着表记录的各个字段.我设计一个"保存"按钮,点一下保存将把文本框中的内容写入到各个字段中,可是有这么一个问题,比如有20个字段,对应着窗体上的20个文本框,可是每次并不是全部字段都要更新.一般只会修改其中的几个字段.可是更新代码如何写好呀?下面几种方案大家评判一下:
1.全部字段都更新,不管用户是否更改过.[优点是代码好写,可是增加了重复更新的操作,即好多字段都要被相同的值更新一次.]
2.仅更新修改过的字段.----我是想这么做,可是不知代码如何写.大家一般如何做呀?

解决方案 »

  1.   

    其实很简单,定义1个数组,存放文本框的原始数据,保存时比较一下,如果有变化就保存。
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    谢谢,可是这样更新前要比较一下,这也好办.可是更新时是不是要写很多update语句呀.
    如果写到一句update更新中.如何写呀?
      

  2.   

    for i=0 to 19
        if text1(i).text<>db.recordset.fields(i).value then
            更新数据库的i列自段的值
        endif
    next i
      

  3.   

    for i=0 to 19
        if text1(i).text<>db.recordset.fields(i).value then
            更新数据库的i列自段的值
        endif
    next 
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>
    是的,这样可以,可是这样的话,有多少个字段改了,就要发送多少个update语句.
    如何在一条update语句中更新已经更新的字段呢?
      

  4.   

    如何能成为:
    update table set a1 = 32,a2=65,a3=54 where xxxxxxxxxxxxxx
    关键是更新哪些字段如何能过代码确定
    而不是:
    update table 
    set a1=32
    where xxxxxxxxxxxxx
    update table 
    set a2=32
    where xxxxxxxxxxxxx
    update table 
    set a3=32
    where xxxxxxxxxxxxx
    因为发送多次update语句是影响性能的呀.
      

  5.   

    str=""
    for i=0 to 19
        if text1(i).text<>db.recordset.fields(i).value then
            str=str & db.recordset.fields(i).name & "=" & text1(i).text & ","
        endif
    next 
    if str<>"" then
        str="update table set " & left(str,len(str)-1) & " where xxx"
    endif
      

  6.   

    在文本框的"LostFocus"事件中判断一下是否有数据的改动,如有则修改数组中对应值