|
本帖最后由 夜来清香 于 2014-9-13 18:16 编辑
如题,在向texbox赋值后,如果有一个textbox没被赋值便会报错,全部输入则不会有问题,问题已经明确所以就不传附件了(参见下述代码)
http://club.excelhome.net/thread-456852-1-1.html这里也有一个帖子,不要仅仅是先判断是否为空,因为我不仅仅是要遇到空值就结束,而是要继续insert空值
**************分界线,问题2*************
另外请教,下述部分语句可以精简么,换句话说不要一个个的罗列出来,而是直接用A(i)和Fields建立联系?(字段的属性既有文本,数字,又有日期,字段属性已经在字段名里体现出来了)
Set cnn = CreateObject("Adodb.Connection")
Set rst = CreateObject("Adodb.Recordset")
Me.Controls("textbox" & 15) = Format(Date, "yyyy-mm-dd")
For i = 1 To 14
a(i) = Me.Controls("textbox" & i).Value
Next
cnn.Open "provider=microsoft.ace.oledb.12.0;data source=" & ThisWorkbook.Path & "\Database.accdb"
Strsql = "Insert Into RM([数字1],[文本1],[数字2],[数字3],[数字4],[数字5],[数字6],[数字7],[数字8],[数字9],[数字10],[数字11],[文本2],[文本3],[文本4],[日期1]) " & _
"Values(" & a(1) & ",'" & a(2) & "'," & a(3) & "," & a(4) & "," & a(5) & "," & a(6) & "," & a(7) & "," & a(8) & "," & a(9) & "," & a(10) & "," & a(11) & ",'" & a(12) & "','" & a(13) & "','" & a(14) & "',#" & TextBox15 & "# )"
cnn.Execute Strsql
****************继续分割,问题3**************
还是接着上面的问题
For i = 1 To 14
a(i) = Me.Controls("textbox" & i).Value
Next
'该语句对于文本与数字格式的字段都是适用的,textbox是一个日期格式的,原本想改成i = 1 To 15实现给a(15)赋值的,但貌似不适用于日期字段,怎么修改语句既适用于文本、数字又适用于日期?
**************继续分割,问题4************
用上述笨拙穷举的方法解决了insert问题,但是update时却又出新的问题
Strsql = "Update RM2 Set [文本1]='" & a(2) & "',....中间省略11字段(已测试无问题).....,[日期1]=#" & TextBox15 & "# where [数字1] =" & a(1) & "" '运行问题来了
第一种情况,把[日期1]字段去掉时,运行正常
第二种情况,把【日期1】字段加进来就报错,按理说在问题2里insert【日期1】是没错的,我只是把insert改成update而已为什么就报错了呢
|
|