hỏi về SQL, ADO và recordset

Liên hệ QC

maytinhvp01

Thành viên thường trực
Tham gia
27/7/13
Bài viết
390
Được thích
179
Mình có một database là file excel : book1 có sheet1 và sheet2 chứa dữ liệu
Mình dùng form VB6 : Có một textbox và 1 command
Mình muốn dùng ADO, SQL và recordset để hoán đổi dữ liệu trên 2 sheet theo mã nhập vào textbox ( phần bôi màu của dữ liệu trên 2 sheet sẽ được hoán đổi ) khi click command
(Mình đã làm theo cách : Từ VB6 mở ở dạng ẩn file excel và thao tác hoán đổi OK nhưng chết cái là các form khác cũng đang được mở nên luôn có sự kết nối "connection" nên không thể mở file. Nếu đóng hết các form đang mở để kết thúc connection thì mở được file và hoán đổi mowis được. Nên thấy bất tiện quá. Muốn hỏi anh em giải quyết cho việc hoán đổi đó bằng ADO và SQL)
 

File đính kèm

  • Hoan doi.rar
    7.5 KB · Đọc: 15
Mình có một database là file excel : book1 có sheet1 và sheet2 chứa dữ liệu
Mình dùng form VB6 : Có một textbox và 1 command
Mình muốn dùng ADO, SQL và recordset để hoán đổi dữ liệu trên 2 sheet theo mã nhập vào textbox ( phần bôi màu của dữ liệu trên 2 sheet sẽ được hoán đổi ) khi click command
(Mình đã làm theo cách : Từ VB6 mở ở dạng ẩn file excel và thao tác hoán đổi OK nhưng chết cái là các form khác cũng đang được mở nên luôn có sự kết nối "connection" nên không thể mở file. Nếu đóng hết các form đang mở để kết thúc connection thì mở được file và hoán đổi mowis được. Nên thấy bất tiện quá. Muốn hỏi anh em giải quyết cho việc hoán đổi đó bằng ADO và SQL)

Cách làm từng bước = ADO như sau:
  1. Tạo 1 Sheet mới có tên là sheet Temp.
  2. Copy toàn bộ dữ liệu sheet 1 vào sheet temp.
  3. Update dữ liệu theo điều kiện là mã từ sheet 2 vào sheet 1.
  4. Update dữ liệu theo điều kiện là mã từ sheet temp vào sheet 2.
  5. Xóa dữ liệu sheet temp đi.
 
Cách làm từng bước = ADO như sau:
  1. Tạo 1 Sheet mới có tên là sheet Temp.
  2. Copy toàn bộ dữ liệu sheet 1 vào sheet temp.
  3. Update dữ liệu theo điều kiện là mã từ sheet 2 vào sheet 1.
  4. Update dữ liệu theo điều kiện là mã từ sheet temp vào sheet 2.
  5. Xóa dữ liệu sheet temp đi.

anh giup em them chut code vơi ạ. có code cụ thể cho bài này em mới học tập mở rộng ứng dụng cho bài khác được ạh! cảm ơn anh nhiều
 
không ACE nao giúp mình dòng code để học tập ah?. Bạn nào có giúp mình thì chú ý là dữ liệu hai sheets là khác nhau nhé mình lấy dữ liệu 2 trên cùng mã để hoán đổi thôi
 
không ACE nao giúp mình dòng code để học tập ah?. Bạn nào có giúp mình thì chú ý là dữ liệu hai sheets là khác nhau nhé mình lấy dữ liệu 2 trên cùng mã để hoán đổi thôi
Như bài số 2 tôi đã gợi ý cho bạn rồi, đúng ra bạn phải chịu khó hơn tí để tìm cách giải theo hướng đó chứ, nếu đợi người ta làm sẵn thì khó có thể mà tiến bộ nhanh được.

[GPECODE=sql]Private Sub Command1_Click()
Dim cn As Object
Dim mySQL 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
mySQL = "INSERT INTO [Temp$] IN '' SELECT * FROM [Sheet1$] WHERE [Sheet1$].Ma like '" & Text1 & "'"
.execute mySQL
mySQL = "UPDATE [Sheet1$] INNER JOIN [Sheet2$] ON [Sheet1$].Ma = [Sheet2$].Ma " & _
"SET [Sheet1$].T1 = [Sheet2$].[t1], [Sheet1$].T2 = [Sheet2$].[T2], [Sheet1$].T3 = [Sheet2$].[t3] " & _
"WHERE [Sheet1$].Ma like '" & Text1 & "'"
.execute mySQL
mySQL = "UPDATE [Sheet2$] INNER JOIN [Temp$] ON [Sheet2$].Ma = [Temp$].Ma " & _
"SET [Sheet2$].T1 = [Temp$].[t1], [Sheet2$].T2 = [Temp$].[T2], [Sheet2$].T3 = [Temp$].[t3] " & _
"WHERE [Sheet2$].Ma like '" & Text1 & "'"
.execute mySQL
mySQL = "UPDATE [Temp$] SET Stt=null,Ten=null,Ma=null,T1=null,T2=null,T3=null "
.execute mySQL
End With

End Sub

[/GPECODE]

Cách xóa dữ liệu sheet Temp bạn nên suy nghĩ cách khác nhanh hơn.
Tôi làm ví dụ cho bạn chỉ 3 trường, các trường còn lại bạn tự làm nhé.
 

File đính kèm

  • Hoan doi.rar
    8.4 KB · Đọc: 46
Như bài số 2 tôi đã gợi ý cho bạn rồi, đúng ra bạn phải chịu khó hơn tí để tìm cách giải theo hướng đó chứ, nếu đợi người ta làm sẵn thì khó có thể mà tiến bộ nhanh được.

[GPECODE=sql]Private Sub Command1_Click()
Dim cn As Object
Dim mySQL 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
mySQL = "INSERT INTO [Temp$] IN '' SELECT * FROM [Sheet1$] WHERE [Sheet1$].Ma like '" & Text1 & "'"
.execute mySQL
mySQL = "UPDATE [Sheet1$] INNER JOIN [Sheet2$] ON [Sheet1$].Ma = [Sheet2$].Ma " & _
"SET [Sheet1$].T1 = [Sheet2$].[t1], [Sheet1$].T2 = [Sheet2$].[T2], [Sheet1$].T3 = [Sheet2$].[t3] " & _
"WHERE [Sheet1$].Ma like '" & Text1 & "'"
.execute mySQL
mySQL = "UPDATE [Sheet2$] INNER JOIN [Temp$] ON [Sheet2$].Ma = [Temp$].Ma " & _
"SET [Sheet2$].T1 = [Temp$].[t1], [Sheet2$].T2 = [Temp$].[T2], [Sheet2$].T3 = [Temp$].[t3] " & _
"WHERE [Sheet2$].Ma like '" & Text1 & "'"
.execute mySQL
mySQL = "UPDATE [Temp$] SET Stt=null,Ten=null,Ma=null,T1=null,T2=null,T3=null "
.execute mySQL
End With

End Sub

[/GPECODE]

Cách xóa dữ liệu sheet Temp bạn nên suy nghĩ cách khác nhanh hơn.
Tôi làm ví dụ cho bạn chỉ 3 trường, các trường còn lại bạn tự làm nhé.

Đầu tiên cảm ơn bạn trước nhé. Thực ra không phải là lười. mà vấn đề này trên diễn đàn còn ít quá chưa được đọc lấy một lần ( CODE : truy vấn sủa chữa dữ liệu trong excel qua SQL, ADO trên VB6 ), ngoài ra truy vấn không thì mình thấy còn có và tự học được không hiểu lại hỏi. Ý của bạn muốn mình tự làm cho năng cao khả năng viết và tư duy nhưng như ở trên mình đã nói >>có CODE của bạn mình sẽ học tập và làm cho những nhu cầu tương tự. Thanh!
 
Đầu tiên cảm ơn bạn trước nhé. Thực ra không phải là lười. mà vấn đề này trên diễn đàn còn ít quá chưa được đọc lấy một lần ( CODE : truy vấn sủa chữa dữ liệu trong excel qua SQL, ADO trên VB6 ), ngoài ra truy vấn không thì mình thấy còn có và tự học được không hiểu lại hỏi. Ý của bạn muốn mình tự làm cho năng cao khả năng viết và tư duy nhưng như ở trên mình đã nói >>có CODE của bạn mình sẽ học tập và làm cho những nhu cầu tương tự. Thanh!

Túm lại code trên bài số #5 có đúng yêu cầu của bạn chưa?
 
Anh chị giúp em tạo đoạn code ADO kết nối với file .DBF , em tìm trên diễn đàn mà không thấy. Cám ơn anh chị
 
Lần chỉnh sửa cuối:
Anh chị giúp em tạo đoạn code ADO kết nối với file .DBF , em tìm trên diễn đàn mà không thấy. Cám ơn anh chị
Bạn thử với chuổi sau thử nhé:

[GPECODE=sql]Provider=MSDASQL.1;Extended Properties="DefaultDir=C:\MyDBaseFolder;Driver={Microsoft dBase Driver (*.dbf)};DriverId=277;"[/GPECODE]
 
Cám ơn anh Hai Lúa, em cũng mới tìm được bài của cô Handung107 để ngâm cứu.
 
Web KT
Back
Top Bottom