tt1212 > 27-10-15, 10:57 PM
thucgia > 28-10-15, 01:51 PM
(27-10-15, 10:57 PM)tt1212 Đã viết: Bạn chỉ mới hiểu được khoảng 10 % của Ado thối
Theo mô hình lập trinh Ado ở đây bạn mới chi dùng đến
Adodb.recordset
adodb.connection
bạn chưa sử dụng adodb.command........
Thì làm sao bạn nắm giữ được dữ liệu và phân phối dữ liệu
Nếu viết theo ADo đúng nghĩa thì sẽ loại bỏ được xung đôt dữ liệu và dữ liệu được phân cấp nhiều giai đoạn
Private Const tbl As String = "tblusers"
Private Const f1 As String = "UserID"
Private Const f2 As String = "UserName"
Private Const f3 As String = "Password"
Private Const f4 As String = "Role"
Function Them(ByRef nv As UserDto) As Long
On Error GoTo ErrorHandler
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim Param As ADODB.Parameter
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "INSERT INTO " & tbl & " ([" & f2 & "],[" & f3 & "],[" & f4 & "]) values(? , ? , ? )"
End With
Set Param = cmd.CreateParameter("x", adVarChar, adParamInput, 20)
Param.Value = nv.UserName
cmd.Parameters.Append Param
Set Param = cmd.CreateParameter("y", adVarChar, adParamInput, 20)
Param.Value = nv.Password
cmd.Parameters.Append Param
Set Param = cmd.CreateParameter("z", adVarChar, adParamInput, 20)
Param.Value = nv.Role
cmd.Parameters.Append Param
cmd.Execute
Set rst = New ADODB.Recordset
rst.Open "select @@identity as NewID from tblusers", CurrentProject.Connection
'MsgBox rst!NewID
Them = 0
ExitSub:
'Clear
Set cmd = Nothing
Set rst = Nothing
Set Param = Nothing
Exit Function
ErrorHandler:
MsgBox "sfsf" & Err.Number & " - " & Err.Description
Resume ExitSub
End Function
Public Sub Xoa(id As Long)
On Error GoTo ErrorHandler
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim Param As ADODB.Parameter
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "delete from " & tbl & " where UserID=?"
End With
Set Param = cmd.CreateParameter("@UserID", adInteger, adParamInput)
Param.Value = id
cmd.Parameters.Append Param
cmd.Execute
ExitSub:
'Clear
Set rst = Nothing
Set cmd = Nothing
Set Param = Nothing
Exit Sub
ErrorHandler:
MsgBox "sfsf" & Err.Number & " - " & Err.Description
Resume ExitSub
End Sub
MTNQ > 29-10-15, 06:58 PM
(27-10-15, 02:03 PM)thucgia Đã viết: -1,Nhưng còn vấn đề table có primary key hoặc autonumber thì chắc là phức tạp hở bạn.
-2,Nếu ADO ngon rồi thì tại sao Microsoft ra cái thằng ADO.net để làm gì!!!!
-3, Bạn có nghiên cứu cái này chưa?
link : http://www.databasejournal.com/features/...rdsets.htmMã:Dim rstADO As ADODB.Recordset
Dim fld As ADODB.Field
Set rstADO = New ADODB.Recordset
With rstADO
.Fields.Append "EmployeeID", adInteger, , adFldKeyColumn
.Fields.Append "FirstName", adVarChar, 10, adFldMayBeNull
.Fields.Append "LastName", adVarChar, 20, adFldMayBeNull
.Fields.Append "Email", adVarChar, 64, adFldMayBeNull
.Fields.Append "Include", adInteger, , adFldMayBeNull
.Fields.Append "Selected", adBoolean, , adFldMayBeNull
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Open
End With
Mình thắc mắc là tại sao nó không cho add dữ liệu ? thk.
- ps định phân trang giống web luôn hả?
Sub test()
Dim rstADO As New ADODB.Recordset
Dim fld As ADODB.Field
Set rstADO = New ADODB.Recordset
With rstADO
.Fields.Append "EmployeeID", adInteger, , adFldKeyColumn
.Fields.Append "FirstName", adVarChar, 10, adFldMayBeNull
.Fields.Append "LastName", adVarChar, 20, adFldMayBeNull
.Fields.Append "Email", adVarChar, 64, adFldMayBeNull
.Fields.Append "Include", adInteger, , adFldMayBeNull
.Fields.Append "Selected", adBoolean, , adFldMayBeNull
.CursorType = adOpenKeyset
.CursorLocation = adUseClient
.LockType = adLockPessimistic
.Open
End With
Dim FieldsArray As Variant, ValuesArray As Variant
FieldsArray = Array("EmployeeID", "FirstName", "LastName", "Email", "Include", "Selected")
ValuesArray = Array(1, "F", "L", "E", 1, 0)
rstADO.AddNew FieldsArray, ValuesArray
For Each fld In rstADO.Fields
Debug.Print fld.Name & "=" & fld.Value
Next
rstADO.Close
Set rstADO = Nothing
End Sub
MTNQ > 29-10-15, 07:14 PM
(27-10-15, 10:57 PM)tt1212 Đã viết: Bạn chỉ mới hiểu được khoảng 10 % của Ado thối-"Nếu viết theo ADo đúng nghĩa thì sẽ loại bỏ được xung đôt dữ liệu và dữ liệu được phân cấp nhiều giai đoạn"
Theo mô hình lập trinh Ado ở đây bạn mới chi dùng đến
Adodb.recordset
adodb.connection
bạn chưa sử dụng adodb.command........
Thì làm sao bạn nắm giữ được dữ liệu và phân phối dữ liệu
Nếu viết theo ADo đúng nghĩa thì sẽ loại bỏ được xung đôt dữ liệu và dữ liệu được phân cấp nhiều giai đoạn
tt1212 > 29-10-15, 11:33 PM
tt1212 > 29-10-15, 11:52 PM
tt1212 > 29-10-15, 11:55 PM
Private Const tbl As String = "tblusers"
Private Const f1 As String = "UserID"
Private Const f2 As String = "UserName"
Private Const f3 As String = "Password"
Private Const f4 As String = "Role"
Function Them(ByRef nv As UserDto) As Long
On Error GoTo ErrorHandler
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim Param As ADODB.Parameter
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "INSERT INTO " & tbl & " ([" & f2 & "],[" & f3 & "],[" & f4 & "]) values(? , ? , ? )"
End With
Set Param = cmd.CreateParameter("x", adVarChar, adParamInput, 20)
Param.Value = nv.UserName
cmd.Parameters.Append Param
Set Param = cmd.CreateParameter("y", adVarChar, adParamInput, 20)
Param.Value = nv.Password
cmd.Parameters.Append Param
Set Param = cmd.CreateParameter("z", adVarChar, adParamInput, 20)
Param.Value = nv.Role
cmd.Parameters.Append Param
cmd.Execute
Set rst = New ADODB.Recordset
rst.Open "select @@identity as NewID from tblusers", CurrentProject.Connection
'MsgBox rst!NewID
Them = 0
ExitSub:
'Clear
Set cmd = Nothing
Set rst = Nothing
Set Param = Nothing
Exit Function
ErrorHandler:
MsgBox "sfsf" & Err.Number & " - " & Err.Description
Resume ExitSub
End Function
Public Sub Xoa(id As Long)
On Error GoTo ErrorHandler
Dim cmd As ADODB.Command
Dim rst As ADODB.Recordset
Dim Param As ADODB.Parameter
Set cmd = New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandText = "delete from " & tbl & " where UserID=?"
End With
Set Param = cmd.CreateParameter("@UserID", adInteger, adParamInput)
Param.Value = id
cmd.Parameters.Append Param
cmd.Execute
ExitSub:
'Clear
Set rst = Nothing
Set cmd = Nothing
Set Param = Nothing
Exit Sub
ErrorHandler:
MsgBox "sfsf" & Err.Number & " - " & Err.Description
Resume ExitSub
End Sub
tt1212 > 30-10-15, 07:16 AM
Private Sub cmdLuu_Click()
On Error Resume Next
On Error GoTo HandleError
DoCmd.RunCommand acCmdSaveRecord
Call OpenMyConnect
Set rstData.ActiveConnection = cnn
rstData.UpdateBatch adAffectAll
Err_Exit:
rstData.Requery
Set rstClone = CloneRST(rstData)
Set rstData.ActiveConnection = Nothing
Set Me.Recordset = rstClone
Call loadDatalistfrmxuat
Call CloseMyConnect
Exit Sub
HandleError:
GeneralErrorHandler Err.Number, Err.Description, frmDSKH, "Form_Open"
Resume Err_Exit
End Sub
MTNQ > 30-10-15, 09:36 PM
(29-10-15, 06:58 PM)MatTroiNguQuen Đã viết: - ps định phân trang giống web luôn hả?
Câu này chưa hiểu
MTNQ > 31-10-15, 08:27 AM
(29-10-15, 11:52 PM)tt1212 Đã viết: Mình đang vướng mắc ở một vấn đề mọi người xem sao
Trong subform mình muốn tạo conterniufỏm để tạo nhiều dóng
Trong đó mình lấy dữ liệu từ tbnhom có trướng mã nhóm và tên nhóm
Bảng này mính lấy từ csdl
Mình thiết kế một fom trên đó minh tạo một text box và mình muốn gán recoset cho fom thông qua thu luc kết nối dữ liệu
Khó ở vấn đề là sound của text box mà mình đặt control source = manhom thì lại không gõ vào dữ liệu mới
Còn nếu để trống thì sửa được nhưng nhiều dọng lại có dữ liệu giống nhau và chỉ hiện thi có một đòng trong bảng dữ liệu vậy phải giải quyết làm sao đây