Lấy dữ liệu từ Access vào excel (B, H) (1 người xem)

  • Thread starter Thread starter nad582
  • Ngày gửi Ngày gửi
Liên hệ QC

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

nad582

Thành viên thường trực
Tham gia
7/6/11
Bài viết
317
Được thích
48
Tình hình là mình có 1 file excel và 1 file Access...Trong file excel mình lấy được tên cột (Frame) và tên tiết diện (DesignSect) tại "TABLE: Frame Section Assignments" trong file Access. Giờ mình muốn lấy tiết diện B và H tại "TABLE: Frame Section Properties 01 - General" trong file Access vào Excel. Chiều rộng B chính là cột "t2", chiều dài H là "t3" trong bảng "TABLE: Frame Section Properties 01 - General".
Mong được hồi âm "Thank you".
 
Tình hình là mình có 1 file excel và 1 file Access...Trong file excel mình lấy được tên cột (Frame) và tên tiết diện (DesignSect) tại "TABLE: Frame Section Assignments" trong file Access. Giờ mình muốn lấy tiết diện B và H tại "TABLE: Frame Section Properties 01 - General" trong file Access vào Excel. Chiều rộng B chính là cột "t2", chiều dài H là "t3" trong bảng "TABLE: Frame Section Properties 01 - General".
Mong được hồi âm "Thank you".

bổ sung thêm vào code của bạn như sau thử xem :
[GPECODE=vb]
Private Sub CommandButton1_Click()
Dim cnn As Object, lrs As Object
Dim mySQL As String, strFile As String
On Error GoTo Handle
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
strFile = Application.GetOpenFilename("AccessFile,*.mdb")
If Len(strFile) Then
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & strFile

mySQL = "SELECT Frame, DesignSect ,t2,t3 " & _
"FROM [Frame Section Assignments] T1 " & _
"INNER JOIN [Frame Section Properties 01 - General] T2 " & _
"ON T1.DesignSect = T2.SectionName " & _
"WHERE LEFT(Frame,1) like 'C'"
lrs.Open mySQL, cnn, 3, 1, 1
With Sheet1
.[K4:N65000].ClearContents
.[K4].CopyFromRecordset lrs
End With
rs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End If
Exit Sub
Handle:
MsgBox Err.Description
End Sub
[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
@hungpec1:
Tôi chẳng hiểu chủ thớt muốn gì cho nên tôi không nói câu truy vấn trên đúng hay sai.
Chỉ chỉnh sửa 1 chut xíu theo ngôn ngữ như sau

WHERE LEFT(Frame,1) like 'C'

like là phép so sánh wildcard. Nếu bạn muốn lọc ra những dòng có Frame bắt đầu với ký tự C thì phép so sánh wildcard như sau:

WHERE Frame like 'C*' -- tiêu chuẩn SQL là 'C%' nhưng Access không theo tiêu chuẩn
sẽ tiết kiêm được con toán trích ký tự đầu

hoặc so sánh thẳng
WHERE LEFT(Frame,1) = 'C'
sẽ tiết kiệm được phép so sánh gần đúng
 
Upvote 0
@hungpec1:
Tôi chẳng hiểu chủ thớt muốn gì cho nên tôi không nói câu truy vấn trên đúng hay sai.
Chỉ chỉnh sửa 1 chut xíu theo ngôn ngữ như sau

WHERE LEFT(Frame,1) like 'C'

like là phép so sánh wildcard. Nếu bạn muốn lọc ra những dòng có Frame bắt đầu với ký tự C thì phép so sánh wildcard như sau:

WHERE Frame like 'C*' -- tiêu chuẩn SQL là 'C%' nhưng Access không theo tiêu chuẩn
sẽ tiết kiêm được con toán trích ký tự đầu

hoặc so sánh thẳng
WHERE LEFT(Frame,1) = 'C'
sẽ tiết kiệm được phép so sánh gần đúng

A góp ý bổ sung rất chính xác !
em cũng chỉ bổ sung vào code có sẵn trong file --> nên không để ý đến điều kiện Where --> em nghĩ chủ thớt sợ phân biệt 'C' và 'c' nên mới dùng like ,<--- em chỉ đoán vậy thôi !-0-/.
 
Upvote 0
A góp ý bổ sung rất chính xác !
em cũng chỉ bổ sung vào code có sẵn trong file --> nên không để ý đến điều kiện Where --> em nghĩ chủ thớt sợ phân biệt 'C' và 'c' nên mới dùng like ,<--- em chỉ đoán vậy thôi !-0-/.
Thanks bạn nhiều! mình muốn hỏi thêm làm sao để chuyển B, H thành đơn vị cm,...
có nghĩa khi t2 = 0,2 thì B = 20; t3 = 0,3 thì H = 30...
 
Upvote 0
Thanks bạn nhiều! mình muốn hỏi thêm làm sao để chuyển B, H thành đơn vị cm,...
có nghĩa khi t2 = 0,2 thì B = 20; t3 = 0,3 thì H = 30...

Cái này thì quá đơn giản còn gì, bạn chỉ cần lồng biểu thức vào câu lệnh SQL là ok :
[GPECODE=vb]
Private Sub CommandButton1_Click()
Dim cnn As Object, lrs As Object
Dim mySQL As String, strFile As String
On Error GoTo Handle
Set cnn = CreateObject("ADODB.Connection")
Set lrs = CreateObject("ADODB.Recordset")
strFile = Application.GetOpenFilename("AccessFile,*.mdb")
If Len(strFile) Then
cnn.Open "Provider=Microsoft.JET.OLEDB.4.0;" & _
"Data Source=" & strFile

mySQL = "SELECT Frame, DesignSect ,t2*100,t3*100 " & _
"FROM [Frame Section Assignments] T1 " & _
"INNER JOIN [Frame Section Properties 01 - General] T2 " & _
"ON T1.DesignSect = T2.SectionName " & _
"WHERE LEFT(Frame,1) like 'C'"
lrs.Open mySQL, cnn, 3, 1, 1
With Sheet1
.[K4:N65000].ClearContents
.[K4].CopyFromRecordset lrs
End With
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End If
Exit Sub
Handle:
MsgBox Err.Description
End Sub
[/GPECODE]
 
Upvote 0
Bạn có thể giải thích cho mình dòng lệnh sau "mysql= " được không.vì hiện tại mình muốn lấy dữ liệu từ access mà chưa biết phải làm sao. Mà bạn có thể cho mình hỏi tài liệu của cái này được ko.cảm ơn bạn..
 
Upvote 0
Web KT

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

Back
Top Bottom