关于生成操作数据库的字符串问题
我从文本框中取数,然后更新到数据库的表中,有这样一个问题,对于一条记录,并不是每个字段都要更新,也许这一次更新这几个字段,下一次就要更新另外几个字段,当然这些字段的取值都取自窗体上的文本框,我要达到的效果是如果用户不在文本框中输入字符,就不更新相应的字段。可是这些操作都要生成一个操作数据库表的字符串呀?比如:
strsql = "update table1 set f1 = '" & bl1 & "',f2 = " & bl2 & "where id = '002'"
诸如此类的语句,如果全部更新好办,可是有些字段不需要更新如何办呀?我总不能为每种情况都生成一个字符串吧。如何在一个字符串中解决多种情况呢?
我从文本框中取数,然后更新到数据库的表中,有这样一个问题,对于一条记录,并不是每个字段都要更新,也许这一次更新这几个字段,下一次就要更新另外几个字段,当然这些字段的取值都取自窗体上的文本框,我要达到的效果是如果用户不在文本框中输入字符,就不更新相应的字段。可是这些操作都要生成一个操作数据库表的字符串呀?比如:
strsql = "update table1 set f1 = '" & bl1 & "',f2 = " & bl2 & "where id = '002'"
诸如此类的语句,如果全部更新好办,可是有些字段不需要更新如何办呀?我总不能为每种情况都生成一个字符串吧。如何在一个字符串中解决多种情况呢?
解决方案 »
- 高手来一下 数据库连接的问题
- 话说MVP的那些事。
- 请问各位大虾,能否帮小弟我解决一个"先乘除" "后加减"算法的问题
- ado和odbc的问题.
- 能否改变菜单和工具栏颜色?
- 求达人帮一下忙,用完打包工具sbp1_50sc(sp6)后,为什么ADODC/ADODB控件,移动记录的按钮变灰,ADODC/ADODB控件的move类方法无法使用,Da
- 如何得到网上的文件。如在程序中输入http://www.163.com/1.dat后就把1.dat读到程序中。
- 请问LoadResString()函数所加载的字符串资源放在哪里?
- 请各位大虾帮忙,急
- 求助一个算法,大神都看过来。我觉得很有挑战性
- 高分求解小问题,关于自制浏览器。。。
- 为什么下列视图有问题呢,百思不得其解啊!
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检查正确与否就行了
--------------------
谢谢,你讲的有道理,问题是:有可能用户只输入这次改变的数据,以前不需改变的数据用户不用再次输入,所以想用程序判断一下,如果这次用户不输入值,就认为不改变这个字段,这个灵活性如何办呀?
当然一种最简单的情况是该字段原来为null,这次不输入时也更新为null,单说这种最简单的情况如何处理为好呀?
更新时,将所有字段都更新为文本框中的当前值。
----------------------------------
是呀?我就是这么做的呀,关键是文本框中用户不输入任何内容,如何更新呀?
因为更新语句一定要包括所有字段的文本框的值呀!也就是说,如何文本框中无输入内容,我把对应的字段更新为什么值的问题,如果是数值型的,可是在不输入内容的情况下更新为0,可是这认为不好,好象更新为空更好些。
如果是字符型,是不是不输入就更新成空字符串呢?还是更新成null好呢?
我没有经验,请教一下各位老师。
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
例如:共有四个文本框.建立控件组.
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