送分100分:如何处理SQL语句包含的多个变量包含空值的情况。 当一个SQL语句中引用了多个变量时,可能会有部分变量包含空值,如何组织这条SQL语句才能保证SQL语句的正常执行。谢谢大家。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先使用条件语句判断一下,再组织自己的SQL语句。 '在SQL语句中如果控件内容为空则为NULLstrsql=" insert into 表名(字符字段,数值字段) values("& iif(trim(text1.text)="","NULL","'"& text1.text &"'") &","& iif(trim(text2.text)="","NULL","" & text2.text &"") &")"cn.execute strsql Public Function ncc(ByVal ConvValue As Variant, Optional ByVal DefaultValue As Variant = "") As Variant On Error GoTo errEx ncc = IIf(IsNull(ConvValue) Or Trim(ConvValue) = "", DefaultValue, ConvValue) Exit FunctionerrEx: ncc = DefaultValueEnd Function對於字符型變量,使用此函數轉一下,對就數值型變量,使用VAL函數。日期類型,則為NULLeg:"insert into 表格(字符欄位,數值欄,日期欄) VALUES('" & ncc(字符變量,"") & "'," & val(數值變量) & "," & iif(IsNull(日期變量),"NULL","'" & format(日期變量,"yyyy-MM-dd") & "'") & ") " 存入数据库在VB语句里用IIf(expr, truepart, falsepart)读出数据在SQL语句里用ISNULL(check_expression , replacement_value), 使用指定的替换值来替换 NULL。 为什么当Rs3.Fields("小区")为空时,下面这条语句sql = "insert into chao(用户编号,小区) values ( " + CStr(Cbcard.Kahao) + "','" + Rs3.Fields("小区") + "')"执行时出错,必须改成以下格式才能正常执行:sql = "insert into chao(用户编号,小区) values ( " + CStr(Cbcard.Kahao) + "','" + CStr(IIf(IsNull(Rs3.Fields("小区")), "", Rs3.Fields("小区"))) + "') " 这样就可以sql = "insert into chao(用户编号,小区) values ( " + CStr(Cbcard.Kahao) + "','" + CStr(Rs3.Fields("小区") & "") + "') " 猜想是cstr的原因,把cstr去掉试一下 其实数据库中字段不用这样做可以这样sql = "insert into chao(用户编号,小区) select '" + CStr(Cbcard.Kahao) + "',小区 from 小区编码 where 小区code = '001' " Rs3.Fields("小区")为null(表示没有数据,不是什么"为空")时,你第一句 后面就插入的是'null值',语法错误要插入null值,直接 values( ,"null") 你的这个"NULL”值,存入数据库好象是字符串NULL,不是空值吧。 我也是经常这么写的 Rs3.Fields("小区").value & ""如果Rs3.Fields("小区").value 是空值也不会报错 关键是Rs3.Fields("小区").value 为空值时报引用错误,程序执行到这里就飞了 Rs3.Fields("小区").value & "" 这样挺好的 values( ,null)sql = "insert into chao(用户编号,小区) values ( '" + Cbcard.Kahao + "',null)" 关于圆弧坐标值 VB6.0 用openURL提取网页源文件提不全的问题 这个菜单怎么做 mdiform窗体的激活 "无法为更新行集定位"的错误 类似于html中框架结构的窗体 请问如何打开一个写字板文件???谢谢 关于VBA调用DLL的问题 VB6 的帮助文件咨询? vb如何用HTTP协议上传文件 VB inet控件下载文件不稳定的问题。 简体与繁体系统的环境变量或是系统变量区别在哪
strsql=" insert into 表名(字符字段,数值字段) values("& iif(trim(text1.text)="","NULL","'"& text1.text &"'") &","& iif(trim(text2.text)="","NULL","" & text2.text &"") &")"
cn.execute strsql
On Error GoTo errEx
ncc = IIf(IsNull(ConvValue) Or Trim(ConvValue) = "", DefaultValue, ConvValue)
Exit Function
errEx:
ncc = DefaultValue
End Function
對於字符型變量,使用此函數轉一下,對就數值型變量,使用VAL函數。日期類型,則為NULL
eg:
"insert into 表格(字符欄位,數值欄,日期欄) VALUES('" & ncc(字符變量,"") & "'," & val(數值變量) & "," & iif(IsNull(日期變量),"NULL","'" & format(日期變量,"yyyy-MM-dd") & "'") & ") "
读出数据在SQL语句里用ISNULL(check_expression , replacement_value), 使用指定的替换值来替换 NULL。
sql = "insert into chao(用户编号,小区) values ( " + CStr(Cbcard.Kahao) + "','" + Rs3.Fields("小区") + "')"执行时出错,必须改成以下格式才能正常执行:sql = "insert into chao(用户编号,小区) values ( " + CStr(Cbcard.Kahao) + "','" + CStr(IIf(IsNull(Rs3.Fields("小区")), "", Rs3.Fields("小区"))) + "') "
sql = "insert into chao(用户编号,小区) values ( " + CStr(Cbcard.Kahao) + "','" + CStr(Rs3.Fields("小区") & "") + "') "
sql = "insert into chao(用户编号,小区) select '" + CStr(Cbcard.Kahao) + "',小区 from 小区编码 where 小区code = '001' "
你的这个"NULL”值,存入数据库好象是字符串NULL,不是空值吧。
如果Rs3.Fields("小区").value 是空值也不会报错
这样挺好的