您的位置:首页 > 编程语言 > VB

[VB.NET]求个修改和删除代码??

2008-12-28 11:48 99 查看



<script type="text/javascript"><!--
google_ad_client = "pub-8333940862668978";
/* 728x90, 创建于 08-11-30 */
google_ad_slot = "4485230109";
google_ad_width = 728;
google_ad_height = 90;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>

求个修改和删除代码??
我用的是vb.net和sql2000,想通过修改datagrid中的信息来直接修改数据库中的信息,希望高手可以给我写个修改代码,最好是完整的

想通过点击按纽删除来删除datagrid选中的行,同时删除对应的数据库中的信息。

希望高手能给我写出删除按纽中的代码,最好是完整的,

如图 http://www1.freep.cn/photo1.php?url=url=photo5/0705211514221468.JPG
先谢谢了
__________________________________________________________________________
前台代码:
<%@ Page Language= "vb " AutoEventWireup= "false " Codebehind= "sbchange.aspx.vb " Inherits= "jianan.sbchange "%>

请选择要修改设备类型: <?xml:namespace prefix = asp />
锻压设备
焊接设备
起重运输设备
机械加工设备
检测仪表
其它设备
Width= "720px " Height= "272px " AutoGenerateColumns= "False " AllowPaging= "True " OnCancelCommand= "canceledit "
OnUpdateCommand= "updateedit " OnEditCommand= "editmainyj " OnDeleteCommand= "delete ">

__________________________________________________________________________
后台代码:
Imports System.Data.OleDb
Public Class sbchange
Inherits System.Web.UI.Page

#Region " Web 窗体设计器生成的代码 "

''该调用是 Web 窗体设计器所必需的。
Private Sub InitializeComponent()

End Sub
Protected WithEvents Drop1 As System.Web.UI.WebControls.DropDownList
Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

''注意: 以下占位符声明是 Web 窗体设计器所必需的。
''不要删除或移动它。
Private designerPlaceholderDeclaration As System.Object

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
''CODEGEN: 此方法调用是 Web 窗体设计器所必需的
''不要使用代码编辑器修改它。
InitializeComponent()
End Sub

#End Region
Dim con As New OleDbConnection( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath( " data/jadata.aspx "))
Dim com As New OleDbCommand

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
''在此处放置初始化页的用户代码
If InStr(Session( "AdminPass "), "pass ") = 0 Then
Me.Response.Redirect( "jiananAdmin.aspx ")
Else

If Not IsPostBack Then

bindgrid()
End If
End If

End Sub
Sub bindgrid()
Dim dat As New DataSet
com.Connection = con
com.Parameters.Add(New OleDbParameter( "@pno ", OleDbType.VarChar))
com.Parameters( "@pno ").Value = Trim(Drop1.SelectedItem.Value)
com.CommandText = "select * from sb where (sbkind=@pno) "
Dim dap As New OleDbDataAdapter
dap.SelectCommand = com
dap.Fill(dat)
DataGrid1.DataSource = dat.Tables(0)
DataGrid1.DataBind()
End Sub
Sub editmainyj(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
DataGrid1.EditItemIndex = e.Item.ItemIndex
bindgrid()

End Sub
Sub canceledit(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
DataGrid1.EditItemIndex = -1

bindgrid()

End Sub
Sub updateedit(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
com.Connection = con
Dim tsbname As TextBox, tsbxh As TextBox, tsbjs As TextBox, tsbsl As TextBox
tsbname = e.Item.Cells(1).Controls(0)
tsbxh = e.Item.Cells(2).Controls(0)
tsbjs = e.Item.Cells(3).Controls(0)
tsbsl = e.Item.Cells(4).Controls(0)
Dim picno As Integer
picno = Trim(e.Item.Cells(0).Text)
com.Parameters.Add(New OleDbParameter( "@pno ", OleDbType.VarChar))
com.Parameters( "@pno ").Value = picno
com.CommandText = "update sb set sbname= '' " & tsbname.Text & " '',sbxh= '' " & tsbxh.Text & " '',sbjs= '' " & tsbjs.Text & " '',sbsl= '' " & tsbsl.Text & " '' where (sbid=@pno) "
con.Open()
com.ExecuteNonQuery()
con.Close()
DataGrid1.EditItemIndex = -1
bindgrid()

End Sub

Sub delete(ByVal sender As Object, ByVal e As DataGridCommandEventArgs)
com.Connection = con
Dim picno As Integer
picno = Trim(e.Item.Cells(0).Text)
com.Parameters.Add(New OleDbParameter( "@pno ", OleDbType.VarChar))
com.Parameters( "@pno ").Value = picno
com.CommandText = "delete from sb where (sbid =@pno) "
con.Open()
com.ExecuteNonQuery()
con.Close()
bindgrid()

End Sub

Private Sub Drop1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Drop1.SelectedIndexChanged
bindgrid()
End Sub

Private Sub DataGrid1_PageIndexChanged(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridPageChangedEventArgs) Handles DataGrid1.PageIndexChanged
On Error GoTo s1
DataGrid1.CurrentPageIndex = e.NewPageIndex
s1: bindgrid()

End Sub
End Class
__________________________________________________________________________
用的是access数据库,sql2000的你改一下就可以了..
__________________________________________________________________________
哦。
__________________________________________________________________________
可是人家的是winForm程序啊,你怎么给了段webForm代码?
__________________________________________________________________________
winForm不是更简单吗?
修改可以直接修改,删除deleterow(行号)
完成后,update就可以了..
__________________________________________________________________________
'' 这个是DataGridView的一段代码,您看看可不可以
Imports System.Data
Imports System.Data.SqlClient

Public Class Form1

Dim conn As SqlConnection
Dim da As SqlDataAdapter
Dim ds As DataSet
Dim b As SqlCommandBuilder

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
conn = New SqlConnection( "您的链接词 ")
conn.Open()
da = New SqlDataAdapter( "SELECT * FROM 表1 ", conn)
ds = New DataSet
da.Fill(ds)
conn.Close()
DataGridView1.DataSource = ds.Tables(0)
Me.DataGridView1.AllowUserToDeleteRows = True
Me.DataGridView1.AllowUserToAddRows = True
Me.DataGridView1.EditMode = DataGridViewEditMode.EditOnEnter
b = New SqlCommandBuilder(da)
End Sub

'' 修改
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
da.Update(ds)
ds.AcceptChanges()
MsgBox( "Updated ")
Catch ex As Exception
MsgBox( "Error ")
End Try
End Sub

'' 删除
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.DataGridView1.Rows.Remove(Me.DataGridView1.CurrentRow)
Try
da.Update(ds)
ds.AcceptChanges()
MsgBox( "Updated ")
Catch ex As Exception
MsgBox( "Error ")
End Try
End Sub
End Class
__________________________________________________________________________ http://chs.gotdotnet.com/quickstart/aspplus/doc/webdataaccess.aspx#serverdata __________________________________________________________________________
magicbacon(Cannot help coding)
你的代码输入后显示的是
“DataGridView1”不是“工程1.公寓基本情况查询”的成员。
点击修改后 显示“Error”
__________________________________________________________________________
D:/我的文件/工程1.NET/公寓基本情况查询.vb(291): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。
D:/我的文件/工程1.NET/公寓基本情况查询.vb(292): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。
D:/我的文件/工程1.NET/公寓基本情况查询.vb(293): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。
D:/我的文件/工程1.NET/公寓基本情况查询.vb(306): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。
D:/我的文件/工程1.NET/公寓基本情况查询.vb(306): “DataGridView1”不是“工程1.公寓基本情况查询”的成员。
D:/我的文件/工程1.NET/公寓基本情况查询.vb(290): 名称“DataGridView1”未声明。
D:/我的文件/工程1.NET/公寓基本情况查询.vb(293): 名称“DataGridViewEditMode”未声明。
__________________________________________________________________________
我的是2005啊,呵呵。我的意思只能参考一下的。
__________________________________________________________________________
你帮我改一下吧 看是哪的问题 vb.net里我就找不见DataGridView1这个
__________________________________________________________________________
好吧,我试试。
__________________________________________________________________________
谢谢了
__________________________________________________________________________
'' 很抱歉,您可以试试我的代码,但是这段代码没经过测试
Imports System.Data
Imports System.Data.SqlClient

Public Class Form1

Dim conn As SqlConnection
Dim da As SqlDataAdapter
Dim ds As DataSet
Dim b As SqlCommandBuilder

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
conn = New SqlConnection( "您的链接词 ")
conn.Open()
da = New SqlDataAdapter( "SELECT * FROM 表1 ", conn)
ds = New DataSet
da.Fill(ds)
conn.Close()
DataGrid1.DataSource = ds.Tables(0)
b = New SqlCommandBuilder(da)
End Sub

'' 修改
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
da.Update(ds)
ds.AcceptChanges()
MsgBox( "Updated ")
Catch ex As Exception
MsgBox( "Error ")
End Try
End Sub

'' 删除
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
ds.Tables(0).Rows.RemoveAt(Me.DataGrid1.CurrentRowIndex)
Try
da.Update(ds)
ds.AcceptChanges()
da.Fill(ds)
MsgBox( "Updated ")
Catch ex As Exception
MsgBox( "Error ")
End Try
End Sub

End Class
__________________________________________________________________________
.
__________________________________________________________________________
写上代码没有错误显示

运行时点击删除 出现一个小窗口显示Updated 并没有删除

修改了其中信息点击修改时 出现一个小窗口显示Error 最前面出现了红色感叹号 显示的是‘对于不返回任何键列信息的selectCommand不支持updataCommand的动态sql生成’。
__________________________________________________________________________
您的数据库有主键么?
__________________________________________________________________________
应该是没有
__________________________________________________________________________
要有主键才行的。
__________________________________________________________________________
可以告诉我怎么弄主键么??
__________________________________________________________________________
就是在您的数据库中找到这个表,然后把某个特征列设置为主键,在设计视图中用右键单击那个字段应该可以看到的。每条记录的主键都必须唯一,如果做不到可以用两个或多个字段做联合主键,唯一地确定一条记录,也可以加入一个自动增加的字段作为主键。

您既然会用数据库,不会不知道主键吧?
__________________________________________________________________________
我设置了主键了 修改可以实现了

但是删除还是不行 点击删除后出现Updated,但是datagrid和表中的信息并没有删除掉。
__________________________________________________________________________
我再试试别的写法看。
__________________________________________________________________________
谢谢了
__________________________________________________________________________
'' 删除
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
conn.Open()
da.DeleteCommand = New SqlCommand( "DELETE FROM 表1 WHERE ID=@ID ", conn)
da.DeleteCommand.Parameters.Add( "@ID ", SqlDbType.Int)
da.DeleteCommand.Parameters( "@ID ").Value = ds.Tables(0).Rows(Me.DataGrid1.CurrentRowIndex)(0)
da.DeleteCommand.ExecuteNonQuery()
ds.Tables(0).Clear()
da.Fill(ds)
Me.DataGrid1.DataSource = ds.Tables(0)
conn.Close()
MsgBox( "Updated ")
Catch ex As Exception
MsgBox( "Error ")
End Try
End Sub
__________________________________________________________________________
久等了。

我这个菜鸟耽误您时间了,抱歉啊。

这次手动生成SQL语句,应该可以了。在删除后重新读取数据绑定到DataGrid1上。
__________________________________________________________________________
其中ID是您的主键,用它来确定要删除的行。
__________________________________________________________________________
我用的是vb.net2005 的winfrom (DataGridView1)
用上面的代码无法删除、更新数据。
给大哥帮个忙啊。
__________________________________________________________________________
ls的,您再开个帖,把您的情况说一下吧。
__________________________________________________________________________
Private Sub _Command1_4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _Command1_4.Click
Try
conn.Open()
da.DeleteCommand = New SqlCommand( "DELETE FROM 公寓基本情况 WHERE ID=@地址 ", conn)
da.DeleteCommand.Parameters.Add( "@地址 ", SqlDbType.Int)
da.DeleteCommand.Parameters( "@地址 ").Value = ds.Tables(0).Rows(Me.DataGrid1.CurrentRowIndex)(0)
da.DeleteCommand.ExecuteNonQuery()
ds.Tables(0).Clear()
da.Fill(ds)
Me.DataGrid1.DataSource = ds.Tables(0)
conn.Close()
MsgBox( "Updated ")
Catch ex As Exception
MsgBox( "Error ")
End Try
End Sub

我的按照你的这个代码 调试时一直都没有删除,一直都是Error,我的表主键是地址

帮忙看看吧
__________________________________________________________________________
先不要用try catch看看报什么错
__________________________________________________________________________
地址在您的DataGridView中是第一列么?数据类型是Int么?我估计是

da.DeleteCommand.Parameters.Add( "@地址 ", SqlDbType.Int)
da.DeleteCommand.Parameters( "@地址 ").Value = ds.Tables(0).Rows(Me.DataGrid1.CurrentRowIndex)(0)

这两句中有错,您先把上面两个问题的答案说一下,我改过不行的话再把

Catch ex As Exception
MsgBox( "Error ")
End Try

改成

Catch ex As Exception
MsgBox( "ex.Message ")
End Try

看看报什么错吧。
__________________________________________________________________________
地址在我的DataGridView中是第一列
数据类型是char
__________________________________________________________________________
呵呵,这个问题我也搞了好久
如果你用2005就好办多了
用一个bindingSource 绑定一下
adapter.fill(dataset, "tablename ")
bindingsource=dataset
bindingsource= "tablename "
datagridview.source=bindingsource
然后就可以通过 bindingsource 修改删除数据了
因为datagridview移动记录时,bindingsource 游标是变的,所以操作bindingsource当前记录就可以了
修改
BindingSource1.Current!公司名称 = CustomerNameTextBox.Text
BindingSource1.Current!公司地址 = AddressTextbox.Text
BindingSource1.ResetBindings(True)
BindingSource1.EndEdit()
删除
BindingSource1.RemoveCurrent()
__________________________________________________________________________
修改一下
adapter.fill(dataset, "tablename ")
BindingSource.DataSource = dataset
BindingSource.DataMember = "tablename "
__________________________________________________________________________
那么

da.DeleteCommand.Parameters.Add( "@地址 ", SqlDbType.Int)

这一句应该改为

da.DeleteCommand.Parameters.Add( "@地址 ", SqlDbType.Char)

才对哦~~~~
__________________________________________________________________________
晕呀那么长的代码呀
超出了我的阅读范围
真是高手呀
好长好长呀
希望我有一天我也可以,写那么长的代码
__________________________________________________________________________
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐