 |
|
ไม่สามารถ Delete ข้อมูลได้ครับ VB 6.0 ฐานข้อมูล Access 2003 ADODB รบกวนหน่อยครับ |
|
 |
|
|
 |
 |
|
พอดีเขียน VB 6.0 ติดต่อฐานข้อมูล Access 2003 โดยติดต่อแบบ ADODB ครับ ตามที่อาจาร์ยเขาสอน แต่อันนี้ เขาให้กลับมาทำเป็นการบ้านครับ แล้สจะส่งสินเดือนนี้แล้ว คือ ตอนนี้ สามารถ Insert , Update ได้เรียบร้อยแล้วครับ เหลือแต่ Delete ไม่สามารถลบได้ไม่เข้าใจครับ ให้เก่งๆ ช่วยดูหน่อยครับ เหนื่อยมาทั้งวันแล้ว
ยกตัวอย่างหลักๆนะครับ ไม่เอามาหมดมันเยอะ
'เริ่มต้นประกาศตัวแปล
Dim cn As ADODB.Connection
Dim rsType As ADODB.Recordset
Dim cnString As String
Dim cmdSQL As String
Dim StatusDel As Boolean
Dim StatusEdit As Boolean
Dim StatusAdd As Boolean
'ฟอร์มถูกโหลดเพื่อเปิดใช้งานฐานข้อมูล
Private Sub Form_Load()
On Error GoTo Error1
c1 = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\\dbone.mdb"
cnString = c1
Set cn = New ADODB.Connection
Set rsType = New ADODB.Recordset
With cn
.CursorLocation = adUseClient
.ConnectionTimeout = 4
.ConnectionString = cnString
.Open
End With
If cn.State = adStateOpen Then
MsgBox "Connect OK", vbInformation, "Connect"
End If
'Set rsType = cn.Execute(cmdSQL)
cmdSQL = "select * from type"
rsType.Open cmdSQL, cn, adOpenKeyset, adLockBatchOptimistic
txtTypeId.Text = rsType.Fields("type_id")
txtTypeName.Text = rsType.Fields("type_name")
TextStatusTrue
StatusEdit = False
StatusAdd = False
Exit Sub
Error1:
MsgBox "Connect Fail", vbInformation, "Connect"
End Sub
'คำสั่งในปุ่มเพิ่ม
Private Sub Svae_Click()
If StatusAdd = True Then
rsType.AddNew
End If
rsType.Fields("type_id").Value = Val(txtTypeId)
rsType.Fields("type_name").Value = Val(txtTypeName)
rsType.UpdateBatch adAffectCurrent
cn.CommitTrans
TextStatusFalse
rsType.Close
cmdSQL = "select * from type"
rsType.Open cmdSQL, cn, adOpenStatic, adLockReadOnly
txtTypeId.Text = rsType.Fields("type_id")
txtTypeName.Text = rsType.Fields("type_name")
End Sub
'คำสั่งในปุ่มลบ
Private Sub Delete_Click()
On Error GoTo err1
StatusDel = True
rsType.Close
cmdSQL = "select * from type where type_id=" & Val(txtTypeId) & "for update nowait"
cn.BeginTrans
rsType.Open cmdSQL, cn, adOpenDynamic, adLockOptimistic
rsType.Delete adAffectCurrent
err1:
If Err.Number = -2147217873 Then
MsgBox "Child record found"
rsType.CancelUpdate
End If
If Err.Number = -2147467259 Then
MsgBox "Data Locked"
cn.RollbackTrans
cmdSQL = "select * from type"
rsType.Open cmdSQL, cn, adOpenDynamic, adLockOptimistic
rsType.Requery
End If
End Sub
ช่วยดูในคำสั่งลบให้หน่อยนะครับ งงมากๆ ว่าทำไม อาจาร์ยเขาใช้ select ทำไมไม่ใช่ Delete อยากจะให้มันลบได้ ถ้าใช้ตามที่อาจาร์ยเขาทำนั้นไม่ได้ก็ อยากให้ใช้ คำสั่งแบบ Delete ก็ได้ค่ะแต่หนูลองเปลี่ยนแล้วครับ ก็ไม่ลบให้ นั่งงมหาทั้งวันแล้วเหนื่อย ต้องมาพึ่งที่บอร์ดนี้ครับ จนปัญญา :'(
Tag : Ms Access, VS 2003 (.NET 1.1)
|
|
 |
 |
 |
 |
Date :
2011-03-28 19:52:45 |
By :
Firstziie |
View :
2042 |
Reply :
2 |
|
 |
 |
 |
 |
|
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ปกติใช้ DELETE FROM table WHERE ก็พอน่ะครับ
'*** Connection String ***'
Dim strConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("database/mydatabase.mdb")&";Jet OLEDB:Database Password=;"
'*** Query ***'
Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Set objRec = New ADODB.Recordset
strSQL = "SELECT * FROM.... "
Conn.ConnectionString = strConnectionString
Conn.Open
objRec.Open strSQL, Conn, 1, 3
'*** Execute ***'
Dim Conn As ADODB.Connection
Set Conn = New ADODB.Connection
Conn.ConnectionString = strConnectionString
Conn.Open
strSQL = "INSERT INTO...."
Conn.Execute (strSQL)
If Err.Number <> 0 Then
Exit Function
End If
Conn.Close
Go to : ขอ code ปุ่มเพิ่มข้อมูล vb6.0 เชื่อมต่อ Access หน่อยครับ
|
 |
 |
 |
 |
Date :
2011-03-28 20:28:41 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|