﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Diễn đàn lập trình viên .NET / Cơ sở dữ liệu / Microsoft Access  </title><generator /><description>Diễn đàn lập trình viên .NET</description><link>http://forum.vi-vn.com/</link><webMaster>admin@vi-vn.com</webMaster><lastBuildDate>Thu, 11 Mar 2010 05:03:28 GMT</lastBuildDate><ttl>20</ttl><item><title>Nhờ các cao thủ Access</title><link>http://forum.vi-vn.com/Topic1880-7-1.aspx</link><description>Mình đang viết &lt;SPAN class=VClickTextLink id=link86&gt;phần mềm&lt;/SPAN&gt; quản lý thư viện bằng Access. Ý tưởng là khi Load chương trình sẽ tự động tìm tập tin Dulieu.MDB là tập tin chứa dữ liệu chương trình. Nếu không tìm thấy sẽ thông báo và cho phép mình lựa chọn lại đường dẫn để kết nối lại. Mình đã làm tạm tạm rồi nhưng lại gặp lỗi 424 "Object Required". Mong các cao thủ gỡ dùm!!!&lt;BR&gt;Code của Form đăng nhập đây:&lt;BR&gt;--------------------&lt;BR&gt;Private Sub Form_Load()&lt;BR&gt;On Error GoTo Form_LoadError&lt;BR&gt;&lt;BR&gt;Dim db As DAO.Database&lt;BR&gt;Dim rec As DAO.Recordset&lt;BR&gt;&lt;BR&gt;Set db = CurrentDb()&lt;BR&gt;Set rec = db.OpenRecordset("THONGTIN")&lt;BR&gt;&lt;BR&gt;'Call Main&lt;BR&gt;Dim vntTemp As Variant&lt;BR&gt;Dim vnDummy As Variant&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;' Retrieve all the states in the table&lt;BR&gt;'&lt;BR&gt;Form_LoadExit:&lt;BR&gt;Exit Sub&lt;BR&gt;&lt;BR&gt;Form_LoadError:&lt;BR&gt;If Err = 3024 Or Err = 3044 Then&lt;BR&gt;MsgBox "Khong tim thay tap tin dulieu.mdb" &amp;amp; Chr(13) &amp;amp; "Ban phai ket noi den tap tin dulieu.mdb", vbCritical, "Loi"&lt;BR&gt;Set fdialog = Application.FileDialog(msoFileDialogFilePicker)&lt;BR&gt;With fdialog&lt;BR&gt;.Title = "Ket noi tap tin 'dulieu.mdb' ..."&lt;BR&gt;.Filters.clear&lt;BR&gt;.Filters.Add "(*.MDB)", "*.mdb"&lt;BR&gt;'"Hinh anh(*.BMP)", "*.bmp"&lt;BR&gt;.Filters.Add "All Files", "*.*"&lt;BR&gt;'.Action = 1&lt;BR&gt;If .Show = True Then&lt;BR&gt;&lt;BR&gt;'Loop through each file selected and add it to our list box.&lt;BR&gt;For Each varFile In .SelectedItems&lt;BR&gt;If Right(UCase(varFile), Len("\dulieu.mdb")) = "\dulieu.mdb" Then&lt;BR&gt;' db.Close&lt;BR&gt;' Set db = OpenDatabase(varFile)&lt;BR&gt;' Set rec = db.OpenRecordset("THONGTIN") ' RecordSource = "SELECT * from thongtin"&lt;BR&gt;' Me.Refresh&lt;BR&gt;' MsgBox (fdialog.FileName)&lt;BR&gt;Address.databasename = varFile &lt;FONT color=#ff1111&gt;'Lỗi 424 báo tại dòng này&lt;/FONT&gt;&lt;BR&gt;Address.Refresh&lt;BR&gt;Resume Next&lt;BR&gt;End If&lt;BR&gt;&lt;BR&gt;Next&lt;BR&gt;Else&lt;BR&gt;MsgBox "Khong co tap tin dulieu.mdb" &amp;amp; Chr(13) &amp;amp; "Chuong trinh se dong lai ngay bay gio...", vbCritical, "QLTV"&lt;BR&gt;DoCmd.Quit acQuitPrompt&lt;BR&gt;End If&lt;BR&gt;End With&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;'fdialog.Show&lt;BR&gt;ElseIf Err &amp;lt;&amp;gt; 0 Then ' another error&lt;BR&gt;MsgBox "Unexpected Error: " &amp;amp; Err.Description&lt;BR&gt;End&lt;BR&gt;End If&lt;BR&gt;Resume Form_LoadExit&lt;BR&gt;&lt;BR&gt;End Sub</description><pubDate>Fri, 26 Feb 2010 06:54:06 GMT</pubDate><dc:creator>phamvinhgd</dc:creator></item><item><title>Cú Pháp SQL trong Access</title><link>http://forum.vi-vn.com/Topic183-7-1.aspx</link><description>&lt;STRONG&gt;&lt;FONT color=#0000ff&gt;Cú Pháp SQL: &lt;/FONT&gt;&lt;/STRONG&gt;&lt;DIV&gt;&lt;BR&gt;Thật ra cú pháp SQL không có khó đối với những ai học tiếng Anh, bởi vì Microsoft đã xây dựng cú pháp này dựa trên văn phạm tiếng Anh. Cho nên những ai chịu khó học tiếng Anh thì không có vấn đề gì.&lt;BR&gt;&lt;U&gt;&lt;B&gt;Cú pháp của câu lệnh Select: &lt;/B&gt;&lt;/U&gt;&lt;BR&gt;Select &amp;lt;fieldname&amp;gt; From &amp;lt;tablename&amp;gt; [Where: &amp;lt;condition&amp;gt; (criteria)] [Group By: &amp;lt;columnname&amp;gt; ] [Having : &amp;lt;group's condition&amp;gt;] [Order By: &amp;lt;columnname&amp;gt; [order type ]&lt;BR&gt;&lt;I&gt;Giải thích: &lt;/I&gt;&lt;BR&gt;&lt;B&gt;Select&lt;/B&gt; &amp;lt; fieldname&amp;gt; : tên các field mà các bạn muốn chọn&amp;gt;&lt;BR&gt;Ví dụ: SELECT Ccode, FName, LName, Age : chọn lấy field CCode, FName, LName, Age.&lt;BR&gt;&lt;BR&gt;&lt;B&gt;From &lt;/B&gt;&amp;lt;tablename&amp;gt; : tên của table chứa các field trên, nếu các field nằm trong nhiều table khác nhau thì sẽ dùng tác vụ JOIN để nối các table lại thành 1 table, tác vụ JOIN sẽ được đề cập ở phần sau&lt;BR&gt;Ví dụ: FROM Customer : từ table Customer&lt;BR&gt;&lt;BR&gt;[&lt;B&gt;Where&lt;/B&gt;: &amp;lt;condition&amp;gt;] : dùng để chọn ra các record thỏa 1 số điểu kiện nhất định.&lt;BR&gt;Ví dụ: Where FName='Phuong' : trong đó field Fname phải có giá trị là Phuong&lt;BR&gt;&lt;BR&gt;[&lt;B&gt;Group By&lt;/B&gt;: &amp;lt;column name&amp;gt; ] : tên các cột mà các bạn muốn nhóm theo&lt;BR&gt;Ví dụ: Group By LName : nhóm theo field LName&lt;BR&gt;&lt;BR&gt;[&lt;B&gt;Having&lt;/B&gt; : &amp;lt;condition&amp;gt;] : điều kiện để nhóm, cái này dùng để tăng khả năng của group by, làm cho các field group by trong với điều kiện nào đó.&lt;BR&gt;Ví dụ: Having LName='Ng*' : có giá trị bắt đầu là Ng&lt;BR&gt;Chú ý: * dùng để chọn tất cả trong Access, % : SQL Server. Nếu dùng * không được thì hãy dùng %.&lt;BR&gt;&lt;BR&gt;[&lt;B&gt;Order By&lt;/B&gt;: &amp;lt;tên cột&amp;gt; [ASC | DESC] ]&lt;BR&gt;Ví dụ: Order By FName ASC : sắp xếp theo tên từ nhỏ đến lớn.&lt;BR&gt;Nhớ đặt dấu chấm phẩy ở cuối câu.&lt;BR&gt;&lt;BR&gt;&lt;B&gt;Ghi chú&lt;/B&gt;: các thành phần nằm trong : [ ] có thể có, có thể không có.&lt;BR&gt;ASC : sắp xếp từ nhỏ đến lớn.&lt;BR&gt;DESC: sắp xếp từ lớn đến nhỏ.&lt;BR&gt;He he, sau đây là 1 số ví dụ. Tui chọn Biblio. mdb vì file này đi kèm theo khi cài đặt Access, chắc chắn ai cũng có. He he..&lt;BR&gt;Ví dụ 1: câu lệnh SQL đơn giản. Lấy tất cả các field trong table Authors&lt;BR&gt;Select * From Authors; rất đơn giản phải không.&lt;BR&gt;Ví dụ 2: câu lệnh SQL với mệnh đề WHERE. Lấy các field trong table Publishers ở thành phố New York.&lt;BR&gt;Select * From Publishers where city="New York";&lt;BR&gt;Ghi chú: dấu * dùng để chọn hết tất cả các field có trong table.&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Nhiều người tự hỏi nếu muốn lấy các field từ nhiều bảng khác nhau thì phải làm sao, câu trả lời chính là tác vụ &lt;B&gt;Join&lt;/B&gt;.&lt;BR&gt;&lt;BR&gt;Có 3 kiểu JOIN: Inner Join, Outer Join và Self Join.&lt;BR&gt;&lt;BR&gt;-&lt;U&gt;&lt;FONT color=#ff0000&gt;Inner Join &lt;/FONT&gt;&lt;/U&gt;: Dùng để trả về tất cả các records khớp với chuẩn định ghép trong cả 2 table. chú ý là phải cả 2 table.&lt;BR&gt;&lt;BR&gt;Ví dụ: Bạn muốn nối 2 bảng Authors và Title Authours trong Biblio.mdb.&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT Authors.Au_ID, Author, [Title Author].ISBN&lt;BR&gt;FROM Publishers, Authors INNER JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;-&lt;U&gt;&lt;FONT color=#ff0000&gt;Outer Join:&lt;/FONT&gt;&lt;/U&gt; có 2 loại Outer Join. Đó là Right Join và Left Join. &lt;BR&gt;&lt;BR&gt;&lt;I&gt;Ghi chú&lt;/I&gt;: khi nói về mối quan hệ giữa 2 table thì sẽ có 1 table là table chính ( master table) và 1 table phụ (details table). Cái này các bạn chắc ai cũng biết nếu đã học qua Relationships trong Access.&lt;BR&gt;&lt;BR&gt;+&lt;I&gt;Right Join&lt;/I&gt;: dùng để trả về các records trong details table được ghép với các records so khớp trong master table.&lt;BR&gt;&lt;BR&gt;Ví dụ:&lt;SPAN style="COLOR: blue"&gt; SELECT Authors.Au_ID, Authors.Author, [Title Author].ISBN&lt;BR&gt;FROM Publishers, Authors RIGHT JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;+&lt;I&gt;Left Join&lt;/I&gt;: dùng để trả về các records trong master table được ghép với các records so khớp trong bảng details table.&lt;BR&gt;&lt;BR&gt;Ví dụ: &lt;SPAN style="COLOR: blue"&gt;SELECT Authors.Au_ID, Authors.Author, [Title Author].ISBN&lt;BR&gt;FROM Publishers, Authors LEFT JOIN [Title Author] ON Authors.Au_ID = [Title Author].Au_ID;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;Ngoài ra còn có Full Outer Join, nhưng Access không hỗ trợ cú pháp này.&lt;BR&gt;&lt;BR&gt;-&lt;U&gt;&lt;FONT color=#ff0000&gt;Self&lt;/FONT&gt;&lt;FONT color=#ff0000&gt; Join:&lt;/FONT&gt; &lt;/U&gt;cái này hơi phức tạp, tui sẽ dành hẳn 1 bài riêng cho nó. Các bạn có thể hiểu đơn giản là: 1 table sẽ tự Join với chính nó. Access cũng không hỗ trợ cú pháp này, nhưng cú pháp này rất hữu dụng cho những ai sử dụng ASP hay VB để truy xuất dữ liệu.&lt;BR&gt;&lt;BR&gt;Ok, sau đây là 1 số ví dụ.&lt;BR&gt;&lt;BR&gt;-Lấy thông tin về các cuốn sách và tác giả của chúng:&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments&lt;BR&gt;FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;-Bây giờ có thêm điều kiện: tác giả là Bisland, Ralph B&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments&lt;BR&gt;FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID&lt;BR&gt;WHERE Authors.Author='Bisland, Ralph B';&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;-Nhóm theo tác giả&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments&lt;BR&gt;FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID&lt;BR&gt;GROUP BY Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;-Nhóm theo tác giả, với điều kiện tên tác giả là 'Adams, Pat'&lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments&lt;BR&gt;FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID&lt;BR&gt;GROUP BY .Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments&lt;BR&gt;HAVING (((Authors.Author)='Adams, Pat'));&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;-Sắp xếp theo bảng kí tự &lt;BR&gt;&lt;BR&gt;&lt;SPAN style="COLOR: blue"&gt;SELECT Author, [Title Author].Au_ID, Title, Titles.[Year Published], PubID, Description, Notes, Subject, Comments&lt;BR&gt;FROM Authors INNER JOIN (Titles INNER JOIN [Title Author] ON Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = [Title Author].Au_ID&lt;BR&gt;ORDER BY Authors.Author;&lt;/SPAN&gt;&lt;BR&gt;&lt;BR&gt;Chú ý mặc định defaul trong Order by là ASC.&lt;/DIV&gt;&lt;DIV&gt; &lt;/DIV&gt;&lt;DIV&gt;Theo:&lt;/DIV&gt;&lt;DIV&gt;forum.infoworldschool.com&lt;/DIV&gt;</description><pubDate>Sat, 20 Sep 2008 20:40:56 GMT</pubDate><dc:creator>Bill_Gates</dc:creator></item></channel></rss>