Sửa dữ liệu file excel đang đóng bằng ADO và SQL (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

maytinhvp01

Thành viên thường trực
Tham gia
27/7/13
Bài viết
390
Được thích
179
Anh em trên diễn đàn cho hỏi dòng code sau có vấn đề chõ nào mà mình chạy cứ báo lỗi dòng bôi đỏ
Mã:
Private Sub Command1_Click()
  Dim cn As Object
  Dim rs As Object
  Dim lsSQL As String
  Set cn = CreateObject("ADODB.Connection")
  Set rs = CreateObject("ADODB.Recordset")
  cn.Provider = "Microsoft.ACE.OLEDB.12.0"
  cn.ConnectionString = "Data Source= " & App.Path & "/Boo1.xlsx; Extended Properties=""Excel 12.0;HDR=Yes;"";"
  cn.Open
   lsSQL = "UPDATE [sheet1$]" & _
            "SET [Ten] = '" & Text2 & "', [Ho] = '" & Text3 & "'&" _
            & "WHERE [Stt] = '" & [B][COLOR=#008000]Text1[/COLOR][/B] & "'"
   [COLOR=#ff0000] rs.Open lsSQL, cn, 3, 1[/COLOR]
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Với ActionQuery (Lệnh update/insert/create..) thì dùng cn.Execute "ActionQuery".
 
Lần chỉnh sửa cuối:
Upvote 0
Chia sẻ thêm 1 kinh nghiệm làm việc cho khỏe là nếu bất đắc dĩ dùng function CreateObject thì coi như là bạn bỏ qua tính năng gợi ý của vba editor. Vậy nên viết code sẽ rất mệt nếu phải thuộc tên mấy chục properties/methods nhất là với người có trí nhớ không tốt mà điển hình như tôi chẳng hạn.

Cách đơn giản là cứ bật Rèference lên và tạm thời comment đoạn code nào dùng CreateObject (đánh dấu nháy ấy). Xong việc rồi thì bỏ comment và tắt Rèference. Điều này sẽ giúp bạn viết code nhanh hơn nhiều, chưa kể còn được gợi ý thêm nhiều cái properties/methods hay nữa chứ.
 
Lần chỉnh sửa cuối:
Upvote 0
Anh em trên diễn đàn cho hỏi dòng code sau có vấn đề chõ nào mà mình chạy cứ báo lỗi dòng bôi đỏ
Mã:
Private Sub Command1_Click()
  Dim cn As Object
  Dim rs As Object
  Dim lsSQL As String
  Set cn = CreateObject("ADODB.Connection")
  Set rs = CreateObject("ADODB.Recordset")
  cn.Provider = "Microsoft.ACE.OLEDB.12.0"
  cn.ConnectionString = "Data Source= " & App.Path & "/Boo1.xlsx; Extended Properties=""Excel 12.0;HDR=Yes;"";"
  cn.Open
   lsSQL = "UPDATE [sheet1$]" & _
            "SET [Ten] = '" & Text2 & "', [Ho] = '" & Text3 & "'&" _
            & "WHERE [Stt] = '" & [B][COLOR=#008000]Text1[/COLOR][/B] & "'"
   [COLOR=#ff0000] rs.Open lsSQL, cn, 3, 1[/COLOR]
End Sub
Chỉnh lại như sau:

[GPECODE=sql]Private Sub Command1_Click()
Dim cn As Object
Dim lsSQL As String
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & App.Path & "\Book1.xlsx;Extended Properties=""Excel 12.0;HDR=Yes;"";"
.Open
lsSQL = "UPDATE [sheet1$] " & _
"SET [Ten] = '" & Text2 & "', [Ho] = '" & Text3 & "' " & _
"WHERE [Stt] = " & Text1
.execute lsSQL
End With
End Sub

[/GPECODE]
 
Upvote 0
Chỉnh lại như sau:

[GPECODE=sql]Private Sub Command1_Click()
Dim cn As Object
Dim lsSQL As String
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & App.Path & "\Book1.xlsx;Extended Properties=""Excel 12.0;HDR=Yes;"";"
.Open
lsSQL = "UPDATE [sheet1$] " & _
"SET [Ten] = '" & Text2 & "', [Ho] = '" & Text3 & "' " & _
"WHERE [Stt] = " & Text1
.execute lsSQL
End With
End Sub

[/GPECODE]
Cảm ơn bạn nhiều. Bạn cho hỏi sao dòng code của bạn lại có các số bên lề trái vậy? môi trường viết code nào vậy ban?
 
Upvote 0
Chia sẻ thêm 1 kinh nghiệm làm việc cho khỏe là nếu bất đắc dĩ dùng function CreateObject thì coi như là bạn bỏ qua tính năng gợi ý của vba editor. Vậy nên viết code sẽ rất mệt nếu phải thuộc tên mấy chục properties/methods nhất là với người có trí nhớ không tốt mà điển hình như tôi chẳng hạn.

Cách đơn giản là cứ bật Rèference lên và tạm thời comment đoạn code nào dùng CreateObject (đánh dấu nháy ấy). Xong việc rồi thì bỏ comment và tắt Rèference. Điều này sẽ giúp bạn viết code nhanh hơn nhiều, chưa kể còn được gợi ý thêm nhiều cái properties/methods hay nữa chứ.

Bạn hướng dẫn từng bước được không cảm ơn bạn trước!
 
Upvote 0
Bạn hướng dẫn từng bước được không cảm ơn bạn trước!
http://www.youtube.com/watch?v=cEPRfPnVdsI

Bạn xem clip này, tập trung từ phút 1 giây 55 của đoạn clip. Chú ý ông ta check mục Microsoft ActiveX Data Objects 2.x Library (phút 3).

Đừng quan tâm người ta nói gì trong clip nhé. Cả đoạn clip bạn tập trung cho vài giây minh họa nói ở trên là được.

Sau khi check chọn thì khi bạn nhấn dấu chấm sau bất cứ đối tượng ADO nào, editor sẽ sổ ra danh sách các property/method, kèm theo gợi ý về cú pháp. Nếu thấy đúng thì nhấn dấu cách để chọn.

Còn comment code nghĩa là làm cho code biến thành màu xanh lá đó bạn, thêm dấu nháy đơn vào trước dòng code.
 
Lần chỉnh sửa cuối:
Upvote 0

Bài viết mới nhất

Back
Top Bottom