|
|
#4
wxflw2012-11-18 19:38
没有哪位师傅有耗电的方法吗?我自己瞎弄了一个,帮看看有什么更好的方法,我的贴出来大家看看!
Private Sub Command3_Click()'这个是添加按钮
Dim A
Dim B
If Text1.Text = "" Then
MsgBox "请输入名称!", 32, "系统"
Text1.SetFocus
Exit Sub
End If
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
sql = "select " & Combo1.Text & " from bk "
rs.Open sql, cn, 3, 3
'=======================
'循环对比是否已有记录
A = Combo1.Text
B = Text1.Text
Do While Not rs.EOF
If Text1.Text = rs.Fields(A) & "" Then
A = 1 '设置一个变量标记是否从循环退出
MsgBox "已有记录!", , "系统提示"
Exit Do
End If
rs.MoveNext
Loop
If A = 1 Then '如果循环退出的
GoTo XXX '结束
End If
'=======================
rs.MoveFirst
'循环到空值将空值改为添加的值
Do While Not rs.EOF
If rs.Fields(A) & "" = "" Then
rs.Fields(A) = B
rs.Update
A = 1
Exit Do
End If
rs.MoveNext
Loop
If A = 1 Then '如果存循环退出的
GoTo XXX '结束
End If
'===============================
rs.MoveFirst
'再次循环,如果还没有记录就说明上面没有空值可以改变,那么直接新建
Do While Not rs.EOF
If Text1.Text = rs.Fields(A) & "" Then
A = 1 '设置一个变量标记是否从循环退出
MsgBox "已有记录!", , "系统提示"
Exit Do
End If
rs.MoveNext
If rs.EOF Then
rs.AddNew
rs.Fields(A) = B
rs.Update
A = 1
MsgBox "添加成功!", , "系统提示"
Exit Do
End If
Loop
If A = 1 Then '如果存循环退出的
GoTo XXX '结束
End If
'===============================
XXX:
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
sql = "select " & Combo1.Text & " from bk "
rs.Open sql, cn, 3, 3
If rs.RecordCount > 0 Then
Set MSHFlexGrid1.DataSource = rs
End If
Text1.Text = ""
Text1.SetFocus
----------------------------------------------------------------------
End SubPrivate Sub Command4_Click()’这个是删除
If Text1.Text = "" Then
MsgBox "无此记录!", , "系统提示"
Text1.SetFocus
Exit Sub
End If
If Text1.Text <> "" Then
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
sql = "select " & Combo1.Text & " from bk "
rs.Open sql, cn, 3, 3
'=============================
A = Combo1.Text
B = Text1.Text
Do While Not rs.EOF
If Text1.Text = rs.Fields(A) & "" Then
myval = MsgBox("确定删除此记录吗?", vbYesNo, "系统")
If myval = vbYes Then
rs.Fields(A) = ""'不直接删除,只是把值变为空,删除的话,一行中的所有记录就会全部删除,因为我只操作单个单元格。
rs.Update
End If
A = 1 '设置一个变量标记是否从循环退出
MsgBox "删除成功!", , "系统提示"
Exit Do
End If
rs.MoveNext
If rs.EOF Then
A = 1
MsgBox "没有这条记录!", , "系统提示"
Exit Do
End If
Loop
If A = 1 Then '如果存循环退出的
GoTo XXX '结束
End If
'=============================
XXX:
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
sql = "select " & Combo1.Text & " from bk "
rs.Open sql, cn, 3, 3
If rs.RecordCount > 0 Then
Set MSHFlexGrid1.DataSource = rs
End If
Text1.Text = ""
Text1.SetFocus
End If
End Sub
------------------------------------------
’今天发现个以前没有找到的答案,自己想到了
'循环查询记录集一列中的所有记录加载到combo1中
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
sql = "select 区域 from qy "
rs.Open sql, cn, adOpenForwardOnly, adLockBatchOptimistic
Do While Not rs.EOF
If rs.Fields(Combo1.Text) <> "" Then '刚想到的!刚才在数据库中把值变成空值的时候想到的,以前加载的时候连空格都加载了,
'难看死了,现在加了个判断的空值就不加载了。
Combo1.AddItem rs.Fields("区域") & ""
end if
rs.MoveNext
Loop
有好的建议请告诉我以啊!谢谢了
|