我用VB编一个简单的数据库操作软件,界面上有DATAGRID控件,用于显示数据库中的数据,界面上还有一个按钮,用于删除DATAGRID上的一条记录,按钮点击事件中先执行"DELETE FROM DATANAME WHERE NO='DATANO'",然后执行ADODC1.FRESH,但DATAGRID控件中内容无变化,不知为何?请各位高手指点一下,多谢!
解决方案 »
- 自己写了下载工具,怎么样把他设置成系统默认的下载工具(如flashget)?
- 如何才能 让BAT文件的每一行加上命令代码?
- 一个小问题:#If 0 then 是判断什么?
- 怎样通过程序从已经有的mdb库中,取得里面已经有表的结构,并按取得的结构生成另一表??
- 我有两个问题,大家帮帮忙,谢谢!
- 我写了一个小程序,用到了SSTab控件,想做个绿色软件,可到了没有SSTab控件的机器上该如何运行
- 关于用APi进行文件读写的问题!!!
- 书山有径何为路,程序无涯怎做舟?
- 谁能告诉我 msflexgrid.ocx中 sort属性中8个具体的值
- VB关于SQL select from where读取ACCESS的问题
- 求助 MDI 窗体如何做成--VB---左侧有工具提条的样式
- 数据和元数据有什么不同,元数据是个什么概念
再显示一下
记得要引用adoDim WithEvents adoPrimaryRS As Recordset '数据库连接对象
Private Sub Command1_Click()
'strsql 是你的查询语句 你可以order by 排序的字段
'strsql="select xh as 学号 from 表" 这里的学号就是你datagrid中列的标题 strsql="select 字段 from 表"
Set Db = New Connection
Db.CursorLocation = adUseClient
'下面的连接数据字符串你要修改一下
Db.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\计划管理系统.mdb;Persist Security Info=False"
Set adoPrimaryRS = New Recordset
adoPrimaryRS.Open strsql, Db, adOpenStatic, adLockOptimistic
Set DataGrid1.DataSource = adoPrimaryRS
end sub在说datagrid控件不需要用sql语句也可以删除指定的记录选中一条记录,然后按键盘键delete就可以删除这条记录
dim rs as new adodo.recordset
private sub form_load()
conn.cursorlocation =0
dim rs as new adodo.recordset
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DatabaseName.mdb;Persist Security Info=False"
strsql="select * from tableName where fieldName=condition order by fieldName"
if conn.state<>0 then conn.close
conn.open connstr
if rs.state<>0 then rs.close
rs.open strsql,conn,3,3
if rs.eof then
msgbox "no wanted record exist"
rs.close 'release the data object
set rs=nothing
conn.close
set conn=nothing
else
set datagrid1.datasource=rs
datagrid1.refresh
endif
end sub
'delete record from datagrid1
private sub command1_click()
if rs.recordcount=0 then
msgbox "u can`t delete record 'cos none from rs"
exit sub
endif
rs.delete
datagrid1.refresh
end sub
Adodc1.Refresh
Adodc1.Refresh
Private Sub Cmd3_Click()'界面上的删除按钮事件函数
Dim TmpId As String
Dim Pos As Integer
If Adodc1.Recordset.EOF = True Then
MsgBox "Please choose!"
Exit Sub
End If
Pos = Adodc1.Recordset.AbsolutePosition
TmpId = Trim(Adodc1.Recordset.Fields(0))
objBookInfo.Delete (TmpId)
Call adoBinfoRefresh
If Pos - 2 >= 0 Then
Adodc1.Recordset.Move Pos - 2
Else
If Pos - 1 < Adodc1.Recordset.RecordCount Then
Adodc1.Recordset.Move Pos - 1
End If
End If
End Sub
Private Sub adoBinfoRefresh()'更新界面函数
Adodc1.RecordSource = "Select * From BookInfo"
Adodc1.Refresh
With DataGrid1
.Columns(0).Width = 800
.Columns(1).Width = 3600
.Columns(2).Width = 1000
.Columns(3).Width = 1400
.Columns(4).Width = 1600
End With
End Sub
Public Sub Delete(ByVal paraBNo As String)'表类中的删除记录函数
SQLStmt = "DELETE FROM BookInfo WHERE BookNo =' Trim(paraBNo)'"
SQLExt SQLStmt
End Sub
Private IsConnect As Boolean
Private cnn As ADODB.Connection
Private rs As ADODB.Recordset
Public Sub DBConnect()
If IsConnect = True Then
Exit Sub
End If
Set cnn = New ADODB.Connection
cnn.ConnectionString = CONSTR
cnn.Open
If cnn.State <> adStateOpen Then
MsgBox "Connection is failed!"
End
End If
IsConnect = True
End Sub
Public Sub DBDisconnect()
If IsConnect = False Then
Exit Sub
End If
cnn.Close
Set cnn = Nothing
IsConnect = False
End Sub
Public Sub SQLExt(ByVal SQLStmt As String)
Dim cmd As Command
Set cmd = New ADODB.Command
DBConnect
Set cmd.ActiveConnection = cnn
cmd.CommandText = SQLStmt
cmd.Execute
Set cmd = Nothing
DBDisconnect
End Sub
请各位高手指教!