菜鸟请教一个关于VB和access数据库的奇怪问题
没法贴图上来,大家帮我看看,在调试中if 条件语句中的.EOF条件都为false 了,为什么还执行了then下面的语句(从.AddNew到.update的语句都执行了,本来是想.EOF为false时不执行这个then后面的语句的),小弟纳闷啊,纠结了半天~~求救!
Adodc1.Recordset.MoveFirst
.Find "易损件编号= '" & Bian1 & "' ", , , 1
If .EOF Then '如果没有找到,就新增一条使用记录
.AddNew
.Fields("易损件名称") = Trim(Text1.Text)
.Fields("易损件序号") = Left(Trim(Frame1.Caption), 1)
.Fields("型号规格") = Trim(Text2.Text)
.Fields("生产厂家") = Trim(Text3.Text)
.Fields("压缩机编号") = Trim(Text5.Text)
.Fields("元件单价") = Val(Trim(Text8.Text))
.Fields("理论平均寿命(h)") = Val(Trim(Text9.Text))
.Fields("现役元件安装日期") = DTPicker1
.Fields("易损件库存(使用)量统计") = Val(Trim(Text7.Text))
.Fields("实际平均寿命(h)") = Val(Trim(Text4.Text))
.Fields("易损件编号") = Left(Frame1.Caption, 1) & "-" & Mid(Trim(Text5), 4) & "-" & Right(Frame1.Caption, 1)
.Update
Adodc1.Refresh
'无论更新一条使用记录,还是增加一条使用记录,库存量都得减少相应的量
.Find "易损件编号= '" & Left(Frame1.Caption, 1) & "-" & 0 & "-" & Right(Frame1.Caption, 1) & "' ", , , 1
Bian = Left(Frame1.Caption, 1) & "-" & 0 & "-" & Right(Frame1.Caption, 1)
n = Str(Val(Text6) - Val(Text7))
stsql1 = "update ysjgl set 易损件库存(使用)量统计=" + n + " where 易损件编号='" + Bian + "'"
cnn1.Execute (stsql1)
.Update
Adodc1.Refresh
Y = MsgBox("新增使用成功!", , "系统提示")
If Y = vbOK Then Unload Me: main_ysjkccx.Show
End If
[解决办法]
.Find "易损件编号= '" & Bian1 & "' ", , , 1 '会不会是这句查询有问题
'在这个位置看下.EOF
MSGBOX .EOF
If .EOF Then '如果没有找到,就新增一条使用记录
[解决办法]
查了一下AbsolutePosition属性...
你可以尝试find方法以后,用其来判断是不是存在搜索记录:
if rs.AbsolutePosition=adPosEOF then msgbox "记录不存在"