• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

ADODB với Access, DataGrid, DataReport, DE, DAO

Chuyên mục thảo luận các vấn đề liên quan đến ứng dụng quản lý và cơ sở dữ liệu

Moderator: Điều hành

Mai_Xinh
Thành viên chính thức
Thành viên chính thức
Posts: 25
Joined: Fri 06/02/2009 10:59 am

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby Mai_Xinh » Wed 18/03/2009 10:04 pm

Pác Phú cho em hỏi. Nếu em muốn dùng VSflexgrid để lọc(filter) dữ liệu trong lưới thì em cần làm như thế nào hả Pác. Làm sao để dòng đầu tiên của VSlexgrid là dòng để lọc dữ liệu.
Ví dụ: ở cột Tên trong lưới. Em gõ kí tự "Th" thì lưới sẽ tự động lọc và cho hiển thị các tên bắt đầu bằng "Th".
Như vậy đó Pác.



User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby truongphu » Thu 19/03/2009 8:11 am

Tôi chuưa dùng VSflexgrid
Bạn có thể tham khảo:
Re: giúp em code về đổ data vào lưới vsflex
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

duynnds
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Tue 17/03/2009 2:46 am
Location: Xứ sở Hoa Phượng
Been thanked: 1 time

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby duynnds » Sat 21/03/2009 1:55 am

Att file la đoạn code mình dùng tạo file *.mdb và lỗi xảy ra khi thực hiện chương trình. Làm ơn giải thích lỗi và cách khắc phục hộ mình.

lỗi ở dùng
cat.tables.append rsTable
Attachments
pi1.JPG
Đây là code
picerr.JPG
Đây là lỗi được thông báo

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby truongphu » Sat 21/03/2009 9:22 am

duynnds wrote:Làm ơn giải thích lỗi và cách khắc phục hộ mình.


http://support.microsoft.com/kb/269495

Lỗi thiếu đăng ký:
Khắc phục
* Chạy Regedit Editor
* Tìm nhánh: HKEY_CLASSES_ROOT\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}
và bôi đen nhánh nầy
* Cửa sổ bên phải: nhấn chuột phải: New DWORD VALUE, gõ tên : OLEDB_SERVICES
nhấn chuột phải vào key mới tạo, chọn Modify, cho giá trị: 0xFFFFFFFF
là xong

Nếu bạn chưa rành Registry, click double vào file Run-time error -2147217887 (80040e21).REG mà tôi gởi kèm là tự động merge giá trị trên vào Registry

Đến anh HoangThu1974: Nhân trả lời bài nầy, tôi test bài anh viết:
Tạo file MDB bằng code
viewtopic.php?f=7&t=3942#p24367
gửi bởi hoangthu1974 » T.Sáu 31/10/2008 9:06 am
chạy chưa êm lắm
Mong anh Fix lại bug
Attachments
Run-time error -2147217887 (80040e21).rar
(613 Bytes) Downloaded 360 times
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Dùng INNER JOIN

Postby truongphu » Sat 21/03/2009 9:26 am

Code: Select all

  1. Private Sub Command3_Click()
  2. rs.Close
  3. rs.Open "SELECT THISINH.sbd,thisinh.Hoten,thisinh.ngaysinh,thisinh.noisinh," _
  4. & "thisinh.lop,thisinh.truong,table1.aaa,TABLE1.sss" _
  5. & " FROM thisinh" _
  6. & " INNER JOIN table1 ON thisinh.sbd=table1.sbd" _
  7. & " WHERE hoten like '" & Text2 & "%'"
  8.  
  9. Set DataGrid1.DataSource = rs
  10. End Sub
  11.  


INNER JOIN.rar
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

duynnds
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Tue 17/03/2009 2:46 am
Location: Xứ sở Hoa Phượng
Been thanked: 1 time

Re: Code mẫu về kết nối CSDL

Postby duynnds » Mon 23/03/2009 2:04 am

Cho mình hỏi VB6 nhận được tập tin *.mdb version bao nhiêu của Acess vậy (97, 2000....). Mình tạo file *.mdb bằng access 2002 mà VB6 bao không nhân dạng được kiểu format. Cách khắc phục ra sao.

Cảm ơn nhiều

User avatar
tiger86love102
Thành viên danh dự
Thành viên danh dự
Posts: 610
Joined: Sun 19/10/2008 1:10 am
Location: http://ready.vn
Has thanked: 4 times
Been thanked: 21 times
Contact:

Re: Code mẫu về kết nối CSDL

Postby tiger86love102 » Mon 23/03/2009 2:13 am

Cách khắc phục đơn giản mà nhanh nhất là bạn cài office 2003 đi.
Ko nhầm thì đọc đc tất chứ riếng ji vesion nào đâu nhỉ :-/
Đội bóng Ready
facebook.com/tiger86love102

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Code mẫu về kết nối CSDL

Postby truongphu » Mon 23/03/2009 3:48 am

duynnds wrote:VB6 nhận được tập tin *.mdb version bao nhiêu của Acess vậy (97, 2000....).


Bạn đọc bài Tổng quan về kết nối VB6 với CSDL(Access) trong VBMaz số 1/2009 ,Box Trang chủ ‹ TÀI NGUYÊN ‹ VBLib - VBMaz

Phần B- Kết nối kiểu giao diện:

Mục 5- Data1 sẽ không nhận dạng được Access 2000. Chúng ta nên update:

http://download.microsoft.com/download/ ... 6sp5vb.exe
File 57.1 MB
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

boy1234
Guru
Guru
Posts: 448
Joined: Mon 13/10/2008 3:12 pm
Location: Dĩ An - Bình Dương
Been thanked: 32 times

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby boy1234 » Mon 23/03/2009 8:03 am

Bác Phú!
Trong code VBA Access dùng DAO mở Table bằng lệnh "Select.." được không? Cháu cần mở theo đúng 1 điều kiện nhưng vì chưa biết có cách nào loay hoay hoài mà không mở ra đành mở cả Table đọc từ đầu đến record cần kiếm rồi thoát.

Note: xin lỗi nếu cháu hỏi đã có ở đâu đó xin cho đường link
Dạo này nghiện honda SS50

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby truongphu » Mon 23/03/2009 8:35 am

Vẫn y choang ADODB:

Code: Select all

  1. Private Sub Lop10A1_Click()
  2. Data1.RecordSource = "Select  MSHS,Ten from LyLich where Lop = '10A1'"
  3. Data1.Refresh
  4. End Sub
  5.  
  6. Private Sub Lop10A2_Click()
  7. Data1.RecordSource = "Select * from LyLich where Lop = '10A2'"
  8. Data1.Refresh
  9. End Sub


Tôi đã test, chạy tốt
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

duynnds
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Tue 17/03/2009 2:46 am
Location: Xứ sở Hoa Phượng
Been thanked: 1 time

Re: Code mẫu về kết nối CSDL

Postby duynnds » Mon 23/03/2009 6:45 pm

Cảm ơn truongphu nhiều, cả đêm hôm qua ngồi search trên dd mà không thấy nên đành phải hỏi. :)

duynnds
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Tue 17/03/2009 2:46 am
Location: Xứ sở Hoa Phượng
Been thanked: 1 time

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby duynnds » Tue 24/03/2009 1:22 am

Tôi xây dựng hàm cho sự kiện khi mình click nut New thì sẽ lưu một record mới vào table HocsinhInfo trong file dữ liệu datHocsinh. Nhờ mọi người kiểm tra, fix lỗi và giải thích lỗi giùm.

Private Sub cmdNew_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
cn.ConnectionString = "Provider = Microsoft.Jet.LOEDB.4.0;" & _
"Data Source =" & App.Path & "\datHocsinh.mdb;"
rs.Open "select * from HocsinhInfo", cn, adOpenStatic, adLockOptimistic
rs.AddNew
rs("maHocsinh") = txtmaHocsinh
rs("hoHocsinh") = txthoHocsinh
rs("tenHocsinh") = txtenHocsinh
rs("nsHocsinh") = txtnsHocsinh
rs("GTHocsinh") = txtGTHocsinh
rs("maLop") = txtmaLop
rs("maKhoi") = txtmaKhoi

End Sub

Err: Run time error (3709) - This connection cannot be used to perform this action. Its is either closed or invalid in this context

table HocsinhInfo là table rỗng.

Xin cảm ơn nhiều.

duynnds
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Tue 17/03/2009 2:46 am
Location: Xứ sở Hoa Phượng
Been thanked: 1 time

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby duynnds » Tue 24/03/2009 6:06 am

Phù, may quá tìm được rùi :D, mày mò cả đêm trên 4rum. Cảm ơn các bạn nhiều. Sai ở cn.ConnectionString ==> phải là cn.Open :). Còn viết nhầm OLEDB thành LOEDB. Nhưng lại nảy sinh một yêu cầu khác:

Mình đặt khung dataGrid lên form để hiện bảng danh sách học sinh nhưng khi add thêm recordset mới thì datagrid không tự động refresh. Mình dùng control ADODB để tham chiếu tới nó. Các bạn chỉ mình cách xử nó :D.

À mà cho mình hỏi field maKhoi và maLop của mình cũng có ở trong 2 table khác và là khóa chính của 2 table đó vậy khi mình nhập vào bảng bên này thì nó có tự assign vào bảng bên kia không, nếu có thì cách mà nó ghi vào như thế nào vì hai bảng kia đã được insert csdl có thể nói là cố định.

Cảm ơn nhiều

User avatar
elevation_118
Posts: 6
Joined: Thu 25/12/2008 12:10 am
Location: HUT
Contact:

Re: Code mẫu về kết nối CSDL

Postby elevation_118 » Tue 24/03/2009 11:00 pm

Mình cũng đang làm một cái từ điển code cho vi điều khiển, lúc chép sang máy khác chạy thử cũng bị lỗi tùm lum cả lên, bi h thì hiểu rồi. Thank mọi người nhiều.
Elevation_118
Runtime error #118

ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

Sử dụng câu lệnh SELECT đặc biệt

Postby ngaydautiendihoc » Wed 25/03/2009 8:21 pm

Có 1 bảng như sau
A 1
B 2
C 3
A 4
D 7
A 6
Dùng câu lệnh SELCT thế nào để có thể ra được kết quả như sau:
1A 1
2A 4
3A 6
Tức là chèn luôn số thứ tự vào trong từng dòng kết quả hoặc chèn thêm vào 1 cột mới.
Nếu sau khi SELECT rồi dùng For Next cũng được nhưng như thế sẽ mất thêm thời gian, tôi muốn tiết kiệm bước này, rất mong mọi người giúp đỡ.

duynnds
Thành viên chính thức
Thành viên chính thức
Posts: 14
Joined: Tue 17/03/2009 2:46 am
Location: Xứ sở Hoa Phượng
Been thanked: 1 time

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby duynnds » Thu 26/03/2009 1:39 am

Cho mình hỏi để hiên thông tin dũ liệu lên datagrid dùng lệnh như thế nào vậy?

User avatar
truongphu
VIP
VIP
Posts: 4766
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 520 times

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby truongphu » Thu 26/03/2009 8:10 am

@ duynnds: Set datagrid1.DataSource = <RecordSet của bạn> . Các vấn đề về datagrid có trong topic nầy.
@ngaydautiendihoc: Chỉ có thể chèn một nội dung cố định vào một field khi Recordset truy xuất dữ liệu.
Trong trường hợp bạn muốn có thêm STT tự động thay đổi, phải sử dụng Data Report, đã đề cập trong topic nầy.
o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby ngaydautiendihoc » Thu 26/03/2009 9:54 am

truongphu thử xem qua cái này xem thế nào.
http://www.postgresonline.com/journal/index.php?/archives/79-Simulating-Row-Number-in-PostgreSQL-Pre-8.4.html
Tôi dốt tiếng anh quá nên chưa hiểu lắm nhưng thấy có vẻ rất giống vấn đề tôi nêu.
Câu SELECT lồng nhau mấy cấp liền, nhìn phát hãi.

User avatar
xuanquy_th
Guru
Guru
Posts: 803
Joined: Tue 05/08/2008 9:15 pm
Location: Thanh Hoá
Has thanked: 1 time
Been thanked: 10 times
Contact:

Re: Sử dụng câu lệnh SELECT đặc biệt

Postby xuanquy_th » Thu 26/03/2009 10:51 am

ngaydautiendihoc wrote:Có 1 bảng như sau
A 1
B 2
C 3
A 4
D 7
A 6
Dùng câu lệnh SELCT thế nào để có thể ra được kết quả như sau:
1A 1
2A 4
3A 6
Tức là chèn luôn số thứ tự vào trong từng dòng kết quả hoặc chèn thêm vào 1 cột mới.
Nếu sau khi SELECT rồi dùng For Next cũng được nhưng như thế sẽ mất thêm thời gian, tôi muốn tiết kiệm bước này, rất mong mọi người giúp đỡ.


Bằng câu lệnh Select của SQL có thể làm được. (Access thì tạm thời bó tay)
VD: trong trường hợp của bạn tôi có thể viết như thế này. (Sử dụng SQL2005)

Code: Select all

  1. --Trường hợp trường dữ liệu của bạn đưa ra chỉ là một cột
  2. SELECT Cast(ROW_NUMBER() OVER (PARTITION BY Left(a,1) ORDER BY right(a,len(a)-1)) AS nVarChar(Max))+a FROM a
  3.  
  4. --Trường hợp trường dữ liệu của bạn đưa ra là hai cột độc lập
  5. SELECT Cast(ROW_NUMBER() OVER (PARTITION BY a ORDER BY b) AS nVarChar(Max))+a + ltrim(b) FROM a
Khi Chúa Trời đóng cánh cửa này lại, Ngài sẽ mở một cánh cửa khác cho ta.
Nhưng ta thường nhìn quá lâu vào cánh cửa đã đóng nên không thấy được có một cánh cửa khác đang mở ra cho ta!!!

ngaydautiendihoc
Thành viên danh dự
Thành viên danh dự
Posts: 262
Joined: Mon 12/03/2007 10:55 pm
Location: Hà Giang
Has thanked: 2 times
Been thanked: 1 time
Contact:

Re: Kết nối CSDL, ADODB. Cập nhật thường xuyên. Mục Lục

Postby ngaydautiendihoc » Thu 26/03/2009 11:31 am

Access và SQL2005 là sao? Dữ liệu á.
Dữ liệu của tôi là Access, truy vấn từ VB.
Có ảnh hưởng gì không, tôi mù tịt về mấy cái SQL, chưa động tới bao giờ.


Return to “Ứng dụng Quản lý và Cơ sở dữ liệu”

Who is online

Users browsing this forum: No registered users and 1 guest