关于生成操作数据库的字符串问题
我从文本框中取数,然后更新到数据库的表中,有这样一个问题,对于一条记录,并不是每个字段都要更新,也许这一次更新这几个字段,下一次就要更新另外几个字段,当然这些字段的取值都取自窗体上的文本框,我要达到的效果是如果用户不在文本框中输入字符,就不更新相应的字段。可是这些操作都要生成一个操作数据库表的字符串呀?比如:
strsql = "update table1 set f1 = '" & bl1 & "',f2 = " & bl2 & "where id = '002'"
诸如此类的语句,如果全部更新好办,可是有些字段不需要更新如何办呀?我总不能为每种情况都生成一个字符串吧。如何在一个字符串中解决多种情况呢?

解决方案 »

  1.   

    strsql去累加
    dim strsql as string
    strsql="update table 1 set"
    if text1.text<>"" then   strSQL=strSQL & F1='"& text1.text &"'"
    if text2.text<>"" then   strSQL=strSQL & F2='"& text2.text &"'"
    这样会自动累加起来,最后debug检查正确与否就行了
      

  2.   

    其实最简单的方法就是每次都认为每个字段都改变了,这样程序最简单!
    --------------------
    谢谢,你讲的有道理,问题是:有可能用户只输入这次改变的数据,以前不需改变的数据用户不用再次输入,所以想用程序判断一下,如果这次用户不输入值,就认为不改变这个字段,这个灵活性如何办呀?
    当然一种最简单的情况是该字段原来为null,这次不输入时也更新为null,单说这种最简单的情况如何处理为好呀?
      

  3.   

    比较简单的方法是,定位到一条记录时,将其所有的字段都显示在相应的文本框中。
    更新时,将所有字段都更新为文本框中的当前值。
    ----------------------------------
    是呀?我就是这么做的呀,关键是文本框中用户不输入任何内容,如何更新呀?
    因为更新语句一定要包括所有字段的文本框的值呀!也就是说,如何文本框中无输入内容,我把对应的字段更新为什么值的问题,如果是数值型的,可是在不输入内容的情况下更新为0,可是这认为不好,好象更新为空更好些。
    如果是字符型,是不是不输入就更新成空字符串呢?还是更新成null好呢?
    我没有经验,请教一下各位老师。
      

  4.   

    dim Sql as String 
    if text1.text <> vbnullstring then sql = sql & "f1 = '" & trim(text1.text) & "',"
    if text2.text <> vbnullstring then sql = sql & "f2 = '" & trim(text2.text) & "',"
    if text3.text <> vbnullstring then sql = sql & "f3 = '" & trim(text3.text) & "',"if sql <> vbnullstring then
       sql = mid(sql,1,len(sql)-1)
       sql = "update table 1 set " & sql & "where id = '002'"
    end if
      

  5.   

    循环所有文本框.使用字符串拼装.
    例如:共有四个文本框.建立控件组.
    TXT()
    dim SQL as string
    SQL="Update Table Set "
    dim i as long
    for i=0 to 3
     if Txt(i).text<>="" then
       SQL=SQL+"Fld='"+Txt(i).text+"',"
     end if
    Conn.Execute SQL