ado检测数据被覆盖?

shortppsy 2005-01-14 11:36:14
我想在输入的时候判断text1.text中的内容是否与user中的字段有相同的
如果有,就不输入`
该怎么做,我头已经大了

Option Explicit
Private conn1 As ADODB.Connection
Private rs1 As ADODB.Recordset

Private Sub Command1_Click()
Dim dbfilename As String
Dim strsql As String
Dim ConnectString As String
Dim i As Integer
Dim txtsql As String
Set conn1 = New ADODB.Connection
dbfilename = "E:\te\user.mdb"
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbfilename & ";Persist Security Info=False;"
conn1.Open ConnectString

Set rs1 = New ADODB.Recordset

strsql = "select * from users"
rs1.Open strsql, conn1, 1, 3

rs1.AddNew
rs1.Fields("name") = Text1.Text
rs1.Fields("word") = Text2.Text

rs1.Update
End Sub
...全文
72 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2005-01-15
  • 打赏
  • 举报
回复
你把以前的数据都清空

Set rs2=conn1.Execute("select name from users where name='" & trim(Text1.Text) & "'")
rs1.Fields("name") = trim(Text1.Text)
再试试
shortppsy 2005-01-15
  • 打赏
  • 举报
回复
OK
去掉空格了,谢谢楼上的~
马上给分
shortppsy 2005-01-15
  • 打赏
  • 举报
回复
trim?
去掉text1的空格
trim(text1.text)
不行啊,帮帮忙,麻烦了
viena 2005-01-15
  • 打赏
  • 举报
回复
要用Trim()去掉空格的
shortppsy 2005-01-15
  • 打赏
  • 举报
回复
请看看全部的代码

Option Explicit
Private conn1 As ADODB.Connection
Private rs1 As ADODB.Recordset
Private Sub Command1_Click()
Dim dbfilename As String
Dim strsql As String
Dim rs2 As ADODB.Recordset
Dim ConnectString As String
Dim i As Integer
Dim txtsql As String
Set conn1 = New ADODB.Connection
dbfilename = "E:\te\user.mdb"
ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbfilename & ";Persist Security Info=False;"
conn1.Open ConnectString
Set rs2 = conn1.Execute("select [name] from users where [name]=' " & Text1.Text & " ' ")
Set rs1 = New ADODB.Recordset
strsql = "select * from users"
rs1.Open strsql, conn1, 1, 2


If rs2.BOF And rs2.EOF Then

rs1.AddNew
rs1.Fields("name") = Text1.Text
rs1.Fields("word") = Text2.Text

rs1.Update
End If

'关闭并释放对象
rs1.Close
rs2.Close
Set rs1 = Nothing
Set rs2 = Nothing
conn1.Close
Set conn1 = Nothing
End Sub
viena 2005-01-15
  • 打赏
  • 举报
回复
//当查询后,数据库里的name还是会重复输入呀
怎么会呢?
set rs2 =conn1.execute("select name from users where name='" & text1.text & "'")
if rs2.BOF and rs2.EOF'无符合条件记录,等于text1.text的name不存在啊
shortppsy 2005-01-15
  • 打赏
  • 举报
回复
谢谢两位,这么晚了,打扰你们,实在不好意思
不过2位给出的代码
我都实过,山芋的,如果记录里没有text1.text的内容,那么会出错

维也纳的,当查询后,数据库里的name还是会重复输入呀

ID Name Word
2974 Text1 Text2
2975 Text1 Text2
2976 Text1 Text2
2977 Text1 Text2
2978 Text1 Text2
viena 2005-01-15
  • 打赏
  • 举报
回复
哦,是users,我写成user了,如果是user,是关键字,要加[]的,users没事,但是name可能是关键字吧
set rs2 =conn1.execute("select [name] from users where [name]='" & text1.text & "'")
viena 2005-01-15
  • 打赏
  • 举报
回复
dim rs2 As ADODB.Recordset
set rs2 = conn1.execute("select [name] from [user] where [name]='" & text1.text & "'" )
if rs2.BOF and rs2.EOF'
rs1.AddNew
rs1.Fields("name") = Text1.Text
rs1.Fields("word") = Text2.Text

rs1.Update
end if

'关闭并释放对象
rs1.close
rs2.close
set rs1=nothing
set rs2=nothing
conn1.close
set conn1=nothing
临摹 2005-01-14
  • 打赏
  • 举报
回复
写错了点,倒数第二行是rs1.movenext.
临摹 2005-01-14
  • 打赏
  • 举报
回复
做一个循环,
addnew之前加一段判断代码.
rs1.movefirst
while(rs1.bof=false or rs1.eof=false)
if(rs1.Fields("name").value=text1.text) then
exit sub
end if
rst.movenext
wend
自己调试一下,这样判断就可以了.

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧