火速急救:数据库问题

setfocus 2001-09-17 04:19:43
大虾。。。救我
Dim i As Integer
Dim rst As ADODB.Recordset
For i = 1 To 7
If Text1(i) = "" Then
MsgBox "必要数据不能为空
Exit Sub
Else


Set rst = New ADODB.Recordset
With rst
.open"............"
.AddNew
.Fields(i).Value = Text1(i).Text
.Update
.Requery
.Close

End With
Text1(i).Text = ""
End If
Next i
我的问题是 1为什么添加入表的记录会分行?2怎么解决?请给代码!
...全文
201 点赞 收藏 27
写回复
27 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
lanboy 2001-09-18
像你那种做法是很容易出错的,也很容易造成数据不完整...
回复
lanboy 2001-09-18
应该这样才对......

Dim i As Integer
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
For i = 1 To 7
If Text1(i) = "" Then
MsgBox "必要数据不能为空
Exit Sub
Else
next
rst.open "............"
rst.addnew
for i=1 to 7
rst.fields(i)=text1(i).text
next
rst.update
rst.close
回复
itmouse 2001-09-18
试一下这个:
Private Sub Command1_Click()
Dim i As Integer
Dim rs As ADODB.Recordset

For i = 1 To 7
If Text1(i).Text = "" Then
MsgBox "必要数据不能为空!"
Text1(i).SetFocus
Exit Sub
End If
Next i

Set rs = New ADODB.Recordset
With rs
.Open YourSource, YourConnection, adOpenDynamic, adLockOptimistic
.AddNew
For i = 1 To 7
.Fields(i) = Text1(i).Text
Next i
.Update
.Close
End With
Set rs = Nothing

For i = 1 To 7
Text1(i).Text = ""
Next i
End Sub

Private Sub Command1_Click()
Set rs = New ADODB.Recordset
With rs
.Open YourSource, YourConnection, adOpenDynamic, adLockOptimistic
.AddNew
For i = 1 To 7
If Text1(i).Text = "" Then
.CancelUpdate
.Close
Set rs = Nothing
MsgBox "必要数据不能为空!"
Text1(i).SetFocus
Exit Sub
Else
.Fields(i) = Text1(i).Text
End If
Text1(i).Text = ""
Next i
.Update
.Close
End With
Set rs = Nothing
End Sub
回复
starbattler 2001-09-18
是什么数组?控件还是数据?你每次用一次addnew他就加一条记录,而你对每个textbox都多循环的话,这条记录其实只有1个field有数据,其他都是空的。所以你7次循环后,有7条记录,每个数据又是分行的。你一定要用addnew也可以。但必须把7个field数据写在同一句内,他就加了一条记录,并保存了7个数值。
你的数组到底指的是控件数组,还是数据数组,我不太明白。2者都能用上面的方法实现的呀。请仔细说说你的具体情况!
回复
setfocus 2001-09-18
我的初衷好象您没有明白,我想用ADDNEW来完成,这样行不行?再者,我想用数组循环这样可以少写好多的代码!我试过您的方法,但是好象对数组不起作用!
回复
starbattler 2001-09-18
提示什么错误啊?
我的程序的一个部分也和你的问题相似,我在自己机器上通过上面的代码的。新记录被写进了数据库了。你其他的设置没问题吗?
把错误贴出来!
回复
setfocus 2001-09-18
不行呀!真的不行呀!
回复
setfocus 2001-09-18
可是我想用添加这样的方式,是不是不行呀?我现在真的头都大了!快点解决呀
回复
starbattler 2001-09-18
我认为这并不需要循环就能实现:
Dim i As Integer
Dim rst As ADODB.Recordset
strSQL = "insert into 表名 (列名1,列名,列名,列名,列名,列名,列名) values ('" & text(0).Text & "','" & text(1).Text & "','" & text(2).Text & "','" & text(3).Text & "','" & text(4).Text & "','" & text(5).Text & "','" & text(6).Text & "')"

Set rst = New ADODB.Recordset
With RS
.ActiveConnection = strConection '你的数据库连接
.CursorLocation = adUseClient
.CursorType = adOpenStatic
.LockType = adLockOptimistic
.Open strSQL
End With

for i%=0 to 6
text(i%).text=""
next i%
回复
setfocus 2001-09-18
TO WIW:您说错了循环我想也肯定是循环上的问题,但是要如何改呢?请付上代码好吗?
回复
setfocus 2001-09-18
to 网虫:如果按您说的那样写的话,我就没必要设定一个控件组了,您说不是吗?
回复
wangchong 2001-09-18
如果是field() 太多可在ADDNEW内设一个循环!!!
回复
wiw 2001-09-18
循环做错地方了。
假设i=1,第一个文本框不为“”,其余为“”,增加一条记录,只有第一个这段不为空。
然后i=2,第二个文本框不为空,其余为空又增加一条记录,
结果是:
N个文本框增加了N个记录
回复
wangchong 2001-09-18
那就不能这么写,一个简单明了的方法是这样:
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
rst.open "............"
rst.addnew
If Text1(0) = "" and text1(1) = "" and ...... Then
MsgBox "必要数据不能为空
Exit Sub
Else
With rst
.Fields(1).Value = cint(Text1(0).Text)
.fields(2).value = cint(text1(1).text)
.
.
.
.
End With
Text1(i).Text = ""
End If
with rst
.Update
.Requery
.Close
end with
回复
setfocus 2001-09-18
^_^!好吧!这样说:我现在有七个TEXT控件分别对应于数据库中的七个字段,我点击“OK”按钮的时候的第一个目的是让输入TEXT控件中的信息添加入数据库中,同时,在添加完成后,清除掉TEXT控件中所有的信息,以便再输入新的信息!我也想过了,如果分成两个按钮的话——一个“添加”,一个“刷新”,也许不会出现问题,但是我现在就是想用一个按钮来同时完成这两个功能!^_^!谢谢各位,请费心!加分!绝对!只要成功,分都是你一个人的!不够了可以再加的!
回复
kare 2001-09-18
For循环的结束应在那里!不是在最后吧
回复
wangchong 2001-09-18
A
回复
wangchong 2001-09-18
真的看不懂你的意思,你做完循环时想添加几条记录????一条还是七条??
回复
setfocus 2001-09-18
To hhdsq:我把代码已经写了呀!^_^!我的目的是:当点击“OK”按钮的时候,先是让数据通过TEXT控件添加入数据库,然后将TEXT控件中的数据清除!
回复
hhdsq 2001-09-18
晕,你能不能把问题说清楚些
回复
加载更多回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2001-09-17 04:19
社区公告
暂无公告