nmhung49
Thành viên tích cực
- Tham gia
- 20/8/09
- Bài viết
- 1,186
- Được thích
- 1,337
Bạn thay đổi đoạn code nay thêm dấu nháy vào"WHERE stt =3"
PHP:
"WHERE stt ='3'"
Bạn thay đổi đoạn code nay thêm dấu nháy vào"WHERE stt =3"
"WHERE stt ='3'"
Bạn thay đổi đoạn code nay thêm dấu nháy vào
Vì dữ liệu ở file data là kiểu text nên nó không hiểu khi bạn dùng where stt=3 khi đó là kiểu sốPHP:"WHERE stt ='3'"
mysql = "UPDATE [data$] " & _
"SET sl=[COLOR=#ff0000]'[/COLOR]12345[COLOR=#ff0000]'[/COLOR]" & _
"WHERE stt like '3'"
Có thể không dùng dấu nháy đơn như trên.Thank bạn nhé! đúng là tiền bối đi trước có khác!
Vậy đồng nghĩa với chỗ gán sl = 12345 cũng phải cho trong dấu nháy " ' "Mã:mysql = "UPDATE [data$] " & _ "SET sl=[COLOR=#ff0000]'[/COLOR]12345[COLOR=#ff0000]'[/COLOR]" & _ "WHERE stt like '3'"
Cho em hỏi đôi chút kiến thức về EOF với ạh!!Bạn dùng code sau nhé:
[GPECODE=sql]Private Sub UserForm_Initialize()
Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset, i As Integer
cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _
ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
lrs.Open "select * From [Temp$] ", cnn
With Me.ComboBox1
.Clear
Do
.AddItem lrs![LastName]
lrs.MoveNext
Loop Until lrs.EOF
End With
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End Sub[/GPECODE]
Cho em hỏi đôi chút kiến thức về EOF với ạh!!
Để đọc dữ liệu từ file cvs , bạn có thể dùng nhiều cách , còn muốn dùng ADO thì tham khảo code sau :
[GPECODE=vb]
Sub GPE()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnn
.CursorLocation = 3
.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & ";" & _
"Extended Properties=""text;HDR=YES;FMT=Delimited"""
End With
rst.Open "SELECT * FROM 001.csv", cnn, 3, 3, adCmdText
Range("A1100").ClearContents
Range("A1").CopyFromRecordset rst
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
End Sub
[/GPECODE]
Xin lỗi anh HL nhưng vô tình em thấy file của anh Join.xlsm chạy rất tốt trên kingsoft ở dạng "KẾT NỐI ADO & SQL " tới chính file đang chạy. Cái này em thử và tìm hiểu rất nhiều mà không có được kết quả.Em tiếp tục đưa các code tương tự vào file của anh để truy vấn trên chính file Join.xlsm của anh mà trước đó hoàn toàn không kết nối được thì vẫn chạy bình thường.Em tắt file của anh đi và đưa lại những code đó vào workbook mới của kingsoft thì hoàn toàn lại không được gì cả dù đổi đuôi đủ thứ.Em lại mở file của anh lên và làm gì cũng được với chính file đó "ADO và SQL" . Nhưng chết cái save lại thì không được vì kiểm tra thấy file anh để dạng "Read-only" . Em save as lại ".xlsm" thì code lại không chạy được. Em bỏ read-only của file của anh cũng không chạy được. Em thử làm code truy vấn trên chính file hiện hành băng office 2007 OK và mở lại bằng kingsoft vẫn không được. Không biết file của anh trước khi gủi lên diễn đàn đã để read-only chưa vậy ạ hay em load về tự nó chuyển sang read-only. Nữa là file của anh có gì đặc biệt không mà chạy được trên kingsoft vậy ạ. ANH CÓ THỂ BỎ READ ONLY FILE JION TRÊN MÁY ANH VÀ GỦI LẠI CHO EM XIN FILE ĐÓ EM THỬ ĐƯỢC KHÔNG A" và có gì đó khác anh chỉ dẫn cho em với. XIN LỖI VÌ CHEN NGANG VẤN ĐỀ KHÁC Ạ. "Nhưng vẫn là muốn áp dụng cái ADO của anh rộng dãi thôi mà. Cảm ơn anh nhiều!!!Ví dụ mình có đoạn code như bên dưới, các bạn cho hỏi là giữa inner join, left join và right join có sự khác biệt hay là không? Xin giải thích.
[GPECODE=sql]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$4" Then
Dim adoConn As Object, adoRS As Object
Set adoConn = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
With adoConn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
.Open
End With
With adoRS
.ActiveConnection = adoConn
.Open "select T1.MS,T2.ten,T2.mau,T1.soluong " _
& "from [Data1$] T1 " _
& Sheet3.Range("C4").Value & " [Data2$] T2 " _
& "on T1.ms = T2.ms"
End With
With Sheet3
.[B8:E120].ClearContents
.[B8].CopyFromRecordset adoRS
End With
adoRS.Close: Set adoRS = Nothing
adoConn.Close: Set adoConn = Nothing
End If
End Sub
[/GPECODE]
P/s: Do các phần trên chưa nói đến phần căn bản này nên xin bổ sung thêm, mong các bạn hưởng ứng.
Xin lỗi anh HL nhưng vô tình em thấy file của anh Join.xlsm chạy rất tốt trên kingsoft ở dạng "KẾT NỐI ADO & SQL " tới chính file đang chạy. Cái này em thử và tìm hiểu rất nhiều mà không có được kết quả.Em tiếp tục đưa các code tương tự vào file của anh để truy vấn trên chính file Join.xlsm của anh mà trước đó hoàn toàn không kết nối được thì vẫn chạy bình thường.Em tắt file của anh đi và đưa lại những code đó vào workbook mới của kingsoft thì hoàn toàn lại không được gì cả dù đổi đuôi đủ thứ.Em lại mở file của anh lên và làm gì cũng được với chính file đó "ADO và SQL" . Nhưng chết cái save lại thì không được vì kiểm tra thấy file anh để dạng "Read-only" . Em save as lại ".xlsm" thì code lại không chạy được. Em bỏ read-only của file của anh cũng không chạy được. Em thử làm code truy vấn trên chính file hiện hành băng office 2007 OK và mở lại bằng kingsoft vẫn không được. Không biết file của anh trước khi gủi lên diễn đàn đã để read-only chưa vậy ạ hay em load về tự nó chuyển sang read-only. Nữa là file của anh có gì đặc biệt không mà chạy được trên kingsoft vậy ạ. ANH CÓ THỂ BỎ READ ONLY FILE JION TRÊN MÁY ANH VÀ GỦI LẠI CHO EM XIN FILE ĐÓ EM THỬ ĐƯỢC KHÔNG A" và có gì đó khác anh chỉ dẫn cho em với. XIN LỖI VÌ CHEN NGANG VẤN ĐỀ KHÁC Ạ. "Nhưng vẫn là muốn áp dụng cái ADO của anh rộng dãi thôi mà. Cảm ơn anh nhiều!!!
Bạn chạy code sau thử:mình thấy các ban thảo luận với nhau hay quá - xin lỗi vì chen ngang.
minh có copy code của các bạn vào file của mình. file chuong trình khi thực hiện sẽ ghi dữ liệu vào fìle data rất tốt bây giờ mình muốn làm ngược lại từ file chương trình Sheet2 lấy dữ liệu ở sheet tổng hợp của file data mà chưa làm được mong các bạn trợ giúp code ghi như sau:
file kèm
Sub ChuyenDL()
Dim Cnn As Object
Set Cnn = CreateObject("ADODB.Connection")
With Cnn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & _
"\data.xlsb;Extended Properties=""Excel 12.0;HDR=No;"""
.Open
.Execute "INSERT INTO [Sheet1$] SELECT F1,F2,F3,F4,F5,F6,F7 FROM [Excel 12.0;Database=" & _
ThisWorkbook.FullName & ";HDR=No].[Sheet1$A6:G82]"
End With
Cnn.Close: Set Cnn = Nothing
End Sub
Private Sub CommandButton1_Click()
Dim adoConn As Object, adoRS As Object
Set adoConn = CreateObject("ADODB.Connection")
Set adoRS = CreateObject("ADODB.Recordset")
With adoConn
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & ThisWorkbook.Path & _
"\data.xlsb;Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
.Open
End With
With adoRS
.ActiveConnection = adoConn
.Open "select * from [tonh hop$] "
End With
With Sheet2
.[A2:G120].ClearContents
.[A2].CopyFromRecordset adoRS
End With
adoRS.Close: Set adoRS = Nothing
adoConn.Close: Set adoConn = Nothing
End Sub
Vẫn có thể được bạn à, chỉ chỉnh lại chuổi kết nối dữ liệu chút xíu là được.Nếu mình muốn chỉnh sửa dữ liệu giữa 2 file A và B không cung 1 Folder thì sao?
Giả sử file A lưu ở Desktop, con file B lưu tại ổ D.
[GPECODE]
Sub Some_function_ADO_test()
'Declare some various connection objects
Dim cnn1 As New ADODB.Connection
Dim cnn2 As ADODB.Connection
Dim cnn3 As ADODB.Connection
Dim cnn4 As ADODB.Connection
Dim rcSet As New Recordset
Dim sqlStr As String
Dim DataSource1, DataSource2 As String
DataSource1 = "C:\Users\Nhat\Desktop\"
DataSource2 = "D:\Data\"
'Open a connection using a Data Source Name (DSN).
Set cnn1 = New ADODB.Connection
Set rcSet = New ADODB.Recordset
cnn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & DataSource1 & "\IpAddress.xls" & _
";Extended Properties=""Excel 8.0;HDR=Yes;"";"
cnn1.ConnectionTimeout = 30
cnn1.Open
'Set SQL string command in copy from Workbook A to Workbook b
sqlStr = "INSERT INTO [Sheet2$] IN '" & DataSource & _
"\Book1.xls ' 'Excel 8.0;' SELECT f1,f2,f3,f4 FROM [Data$A115]"
cnn1.Execute (sqlStr)
Set rcSet = Nothing
cnn1.Close
Set cnn1 = Nothing
End Sub
[/GPECODE]
Mình đã chỉnh sửa theo như mình hiểu và mình đảm bảo là thong tin về đường dẫn cũng như thông tin các sheet trên các workbooks đều tồn tại, tuy nhiên khi chạy mình lại nhận được lỗi như hình dưới đây. Mong bạn chỉ giáo !
Book 1 là 1 wb rỗng có 3 sheet là “Sheet1”, “Sheet2”,”Sheet3” mình để ngay desktop nhằm mục đích test thôi nên có lẽ không cần đưa lên. IpAddress có 1 sheet là “Data”.
Mình khai báo kết nối nhiều căn bản là vì mình muốn phục vụ bài tập lớn hơn, nhân tiện đây cũng xin ý kiến các bạn luôn. Mình có 1 server có địa chỉ IP, UserName và Password. Mình muốn sau khi xử lý dữ liệu excel xong, sẽ gửi các thông tin cần thiết lên 1 file excel có mẫu sẵn trên server. Liệu có thể dung ADODB được không?
Cảm ơn cac bạn nhiều !
Tôi không hiểu bạn muốn đưa cái gì vào file mà bạn để ở Desktop? Dữ liệu như thế này mà bạn đòi làm bàng ADO sao?
Nếu bạn là người quản trị CSDL thì không cần phải hỏi tôi câu hỏi đó rồi. Còn nếu như chưa phải thì có thể từ từ nghiên cứu đi bạn.Thật ra mình muốn test xem ADO hoạt động như thế nào thôi. Mình đang có bài toán là gửi những thông tin cần thiết lên server nên mình tạo các file trên máy mình để test trước khi xem liệu có thể làm tương tự trên server ko, vì vậy dữ liệu có thể hơi linh tinh mong bạn thông cảm.
Mình cũng không hiểu ý bạn là dữ liệu như thế nào thì làm bằng ADODB?
Mình chưa từng quản trị dữ liệu nhưng mình nghĩ là làm được vì mình có đọc sách về ADO thấy họ truy cập và sửa dữ liệu trên SQL server với cấu trúc tương tự. Mình nghĩ tới việc là thử truy cập giữa các file excel khác nhau trên các thư mục khác nhau sau đó là truy cập file excel trên hai máy tính cùng mang LAN . Vấn đề quản trị dữ liệu mình sẽ tìm hiểu sau nhưng bài toán truy cập filex excel trên 2 thư mục khác nhau luôn gặp lỗi mà mình không nghĩ ra cách sửa. Nếu được bạn viết giúp mình code minh họa còn mình tự tìm hiểu các bài toán còn lại.Nếu bạn là người quản trị CSDL thì không cần phải hỏi tôi câu hỏi đó rồi. Còn nếu như chưa phải thì có thể từ từ nghiên cứu đi bạn.