• 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

Điều hành viên: Điều hành

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » T.Năm 30/10/2008 3:28 pm

Tập hợp các thao tác trên file *MDB đã viết trên CLB VB
Mục lục
Ghi chú: các link sau không tự động vì mỗi bài viết chỉ cho 10 link

1- Mở tập tin XXX.mdb không mật khẩu
2- Mở tập tin Tinhluong.mdb có mật khẩu
3- Các hằng cần khai trước khi duyệt tables
4- Duyệt các Tables
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942#p24277

Bài sửa của anh HoangThu1974
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24285

5 AddNew và Update
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24318

6- Đường dẫn tương đối của file *.mdb
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24321

7- Mở cùng lúc nhiều tables
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24338

8- Cách lấy CSDL Access có password từ máy khác
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24339

9- Cấu trúc vòng lặp: Do While . . . loop trong duyệt recordset
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24340

10- Nối dữ liệu từ nhiều bảng trong Access2000?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24358

11- Nhanh hơn trong truy xuất CSDL
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24359

12- Tạo file MDB bằng code
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24367

13- Tạo một field mới trong table đang tồn tại
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24374

14- Các thông số cho định dạng field được tạo
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24386

15- Tạo Table mới kèm fields
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24387

16- Xóa field
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24388

17- Lưu ý Reference Object
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24394

18- Xóa toàn bộ các Records, Table chỉ còn các fields trống rỗng:
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24428

19- Xóa luôn Table, Dùng Access
19- Xóa luôn Table, Dùng ADODB
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=0#p24429

20- Lệnh Find trong ADODB
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24439

21- Làm sao khi ADODB.Recordset không cho mở giá trị NULL?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24443

22- Tạo khóa chính (primary key hoặc index key), thường sử dụng cái này khi bạn muốn tạo csdl, table =code

(xem thêm bài viết tạo table của hoangthu1974)
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24479

23- Bài tập Tính điểm chênh lệch giữa các ngày
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24504

24- Tìm trong Database với mệnh đề WHERE
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24553

25- Làm sao để kết nối đến cơ sở dữ liệu Server.
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24574

26- Datagird có để đặt Setfocus cho 1 ô bất kỳ ?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24685

27- Export dữ liệu từ excell vào access bằng VB6
a- Chuyển file dữ liệu Excel sang file Access
b- Access qua Excel
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24770

28- Truy xuất bản ghi thứ 20 trong database
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24773
29- Câu lệnh SQL trong vb
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24894

30- Datagrid dùng các câu lệnh kết nối
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24896

31- Lỗi kết nối CSDL Access
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p24897

32- Xử lý lỗi
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p25068

33- Lỗi gọi hàm trong thư viện
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p25069

34- Hỏi cách xem cấu trúc của database SQL trong VB
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p25070

Bài viết anh HoangThu1974 về Add ActiveX
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p25093

35- Hỏi cách đọc CSDL master trong SQL
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=20#p25141

36- Dùng lệnh Find với nhiều điều kiện
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25189

37- Kỹ thuật truy xuất nhanh CSDL
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25212

38- Hiển thị nhanh 5 dòng đầu của table ngay khi kết nối
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25259

39- Điều chỉnh độ rộng cột dữ liệu trong MsFlexGrid và tạo màu khác nhau cho các dòng dữ liệu
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25265

40- Giải thích dùm câu báo lỗi này trong VB: Parameters Xephang has no default valid.
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25321

41- Thu nhỏ tập tin MDB
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25358

42- Lỗi Update CSDL. Xem thêm để rút kinh nghiệm
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25379

43- TextBox thể hiện giá trị record khi click vào 1 hàng của dataGrid
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25380

44- Chọn n bản ghi cuối Danh sách không sắp xếp!
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25381

45- Tự động thêm, xoá dòng trong CSDL
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25405

46- Phân tích câu lệnh trong kết nối và truy xuất dữ liệu
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=40#p25424

47- Bắc buộc dùng sau câu truy vấn "SELECT...": Do While not Recordset.EOF?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p25493

48- Tài liệu học tập bằng tiếng Việt: Đối tượng dữ liệu ActiveX
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p25579

49- Cách lưu dấu (') trong sql server từ VB6
50- Định dạng khổ giấy của Report nằm ngang?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p25683

51- Truy vấn biến đổi Field
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p25751

52- cách sử dụng câu truy vấn "select" khi chọn 1 date bất kỳ ?
53- "Runtime 3021: error Either EOF and BOF is true,or current record has been deleted
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p25998

54- Truy vấn nhiều Table
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26022

55- Adodc1.Recordset.Filter không làm việc được
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26199

56- DataGrid báo lỗi: Run-time error '7004' The Rowset is not bookmarkable
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26208

57- Tạo một Table tạm thời
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26313

58- Đánh số thứ tự trong DataReport
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26335

59- Hiệu chỉnh các Records trong một Field
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26754

60- Kết nối CSDL chỉ dùng Recordset, không dùng Connection!
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=60#p26762

Bài viết xuanquy_th Set Control.DataSource
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27095

Bài viết thuytrang2542000 giải thích bài trên
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27113

61-Link các textbox với Recordset bằng code
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27119

Bài viết của TTD hướng dẫn lập trình CSDL
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27173

62- Xác định field nào là autonumber và field nào là (primary) key
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27244

63- Sắp xếp cột ASC hay DESC và chọn TOP
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27272

Bài viết xuanquy_th về Xác định field nào là autonumber và field nào là (primary) key
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27306

http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27313

63b- Function toàn vẹn tìm Primary Key và ID Autonumber
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27333

64- SQL Tutorial (Tiếng Anh)
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27491
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27546
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p27604
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p27935
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28177

chuyển tác ( Transactions)
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p27832

65- Thiết kế Report
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28425

66- Lỗi Update
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28426

67- Xếp hạng khi đồng điểm trong vb
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28427

68- Lệnh tìm kiếm trong SQL: Like
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28428

69- code tính điểm trung bình trong vb
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28429

70- Trị RecordCount liên quan các hằng con trỏ
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28433

Bài viết của manhtung mở kết nối trong c# và trả về tất cả các bảng trong file access
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28436

Bài viết của manhtung hàm export data to excel trong C#
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=100#p28437

72- Liệt kê dữ liệu khi trùng khóa chính trong vb6.
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28439

73- Tạo Datareport lọc dữ liệu từ nhiều bảng
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28441

Bài viết về nhầm ngày
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28453

74- Làm thế nào để lấy những record bị trùng ?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28468

75- file CSDL nào thích hợp VB6?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28472

Tránh nhầm ngày tháng
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28482

project về STT trong DataReport
http://caulacbovb.com/forum/download/file.php?id=3588

76- Kết nối đến CSDL trên Internet
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28773

77- DataReport không cập nhật
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28775

78- Nhập Dữ liệu không trùng
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28776

79- Lổi khi truy xuất Table có dạng các ký tự đặc biệt
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=120#p28777

80- lỗi syntax error của lẹnh update. Không đặt tên Field với chữ 'NO'
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p28955

Bài viết thuytrang2542000 hướng dẫn cài đặt SQL 2000
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29065

81- ADO Field Object Type Property
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29302

82- xác định Field Type
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29387

83- Vài điều nhắc khi lập CSDL
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29402

84- Thắc mắc tạo Relationship khi thiết kế Database
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29404

85- các bài tập về Date
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29452

86- Khai báo, mở và đóng các kết nối
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=140#p29509

87- Lỗi Run-time error '3021' Either BOF or EOF is true
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29866

88- Chức năng tìm kiếm của Data1
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29939

89- Thắc Mắc Về Vòng Lặp For ....
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29940

90- VB6.0 có thể kiểm tra 1 Table Access đang đóng hay mở ?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29974

91- Xuất dữ liệu từ datagrid ra excel
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29977

92- câu lệnh Select case với mẫu tin có giá trị Null
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29978

93- Vị trí dòng thú i trong datagrid ?
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29979

94- hỏi về lưới datagrid
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29986

95- Kỹ thuật ghi hình vào file MDB và load hình từ MDB ra Picture1
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p29988

96- Giới thiệu Function Coalesce
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=160#p30116

Project minh họa ghi hình vào file MDB
http://caulacbovb.com/forum/download/file.php?id=3815

97- Nói thêm về kiểm tra trùng record
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p30574

98- Lỗi an out-of-range datetime value
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p30575

Ứng dụng Client1.exe và Server.exe
http://caulacbovb.com/forum/download/file.php?id=3864

99- Cách dùng BOF và EOF
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p30955

100- Lệnh Find phải được dùng nhiều hơn
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p30956

101- Xử lý cột excel sang dòng của access
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p30977

102- Ký tự thay thế của Like
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p30978

103- Cách phân trang trong datareport
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p31022

104- Tính tổng theo điều kiện
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p31136

105- Hỏi về cách chuyển nội dung 1 bảng sang bảng mới
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p31254

106- Đưa dữ liệu lên gridview với SQL 2000
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p31517

107- Chỉ hiện lên Datagrid vài trường
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p31518

108- Tối ưu các trường (định dạng Field)
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=180#p32224

109- Project mẫu dùng ADODC
http://caulacbovb.com/forum/download/file.php?id=4033

110- Project mẫu dùng ADODB
http://caulacbovb.com/forum/download/file.php?id=4053

Kiểm tra trùng record trong field khóa chính
http://caulacbovb.com/forum/viewtopic.php?f=30&p=32486#p32480

Giới hạn Update của Recordset
http://caulacbovb.com/forum/viewtopic.php?f=30&p=32486#p32486

Bài viết về lệnh chạy Query
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=200#p32405
xuanquy_th bổ sung
http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=200#p32410
-------------------------------------------------


1- Mở tập tin XXX.mdb không mật khẩu

Mã: Chọn hết

Set objConnection = CreateObject("ADODB.Connection")   'Kho'i tao một kêt nôiobjConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source = XXX.mdb"


2- Mở tập tin Tinhluong.mdb có mật khẩu

Mã: Chọn hết

Set objConnection = CreateObject("ADODB.Connection")   'Kho'i tao một kêt nôiobjConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source =" & App.Path & "\Tinhluong.mdb;" & _                      "Persist Security Info=False;" & _                      "Jet OLEDB:Database Password =thuytrang"


Dùng Data1:
gửi bởi xuanquy_th vào ngày Thứ 6 21/12/2007 7:36 am

Mã: Chọn hết

Global DLieu As DatabaseSet DLieu = OpenDatabase("C:\QLBN.mdb", False, False, ";PWD=PassWord")Set Data1.RecordSet=DLieu.OpenRecordSet("Select * From tblName")


gửi bởi thuat vào ngày Chủ nhật 24/02/2008 6:52 pm

Mã: Chọn hết

With Data1.DatabaseName = App.Path & "\Data.mdb".RecordSource = "TB_Ho".Connect = ";Pwd=thuat;".RefreshEnd With


3- Các hằng cần khai trước khi duyệt tables: dần dần sẽ hiểu!
CursorTypeEnum Values:

Mã: Chọn hết

 Const  adOpenUnspecified = -1Const adOpenForwardOnly = 0Const adOpenKeyset = 1Const adOpenDynamic = 2Const adOpenStatic = 3

LockTypeEnum Values:

Mã: Chọn hết

Const adLockUnspecified = -1Const adLockReadOnly = 1Const adLockPessimistic = 2Const adLockOptimistic = 3Const adLockBatchOptimistic = 4

CommandTypeEnum Values:

Mã: Chọn hết

Const adCmdUnspecified = -1Const adCmdText = 1Const adCmdTable = 2Const adCmdStoredProc = 4Const adCmdUnknown = 8Const adCmdFile = 256Const adCmdTableDirect = 512

ExecuteOptionEnum Values:

Mã: Chọn hết

Const adOptionUnspecified = -1Const adAsyncExecute = 16Const adAsyncFetch = 32Const adAsyncFetchNonBlocking = 64Const adExecuteNoRecords = 128Const adExecuteStream = 256Const adExecuteRecord = 512

EventStatusEnum Values:

Mã: Chọn hết

Const adStatusOK = 1Const adStatusErrorsOccurred = 2Const adStatusCantDeny = 3Const adStatusCancel = 4Const adStatusUnwantedEvent = 5


4- Duyệt các Tables: Duyệt TableYYY

Mã: Chọn hết

Set objRecordSet = CreateObject("ADODB.RecordSet") 'Kho'i tao môt bô duyêt các Records' chú y khai 2 ha`ng sô sau adOpenStatic, adLockOptimisticobjRecordSet.Open "SELECT * FROM TableYYY", objConnection, adOpenStatic, adLockOptimistic'Duyêt qua Recorset: Goi hàng 1 và di chuyên Ðên hàng cuôi cùngobjRecordSet.MoveFirst'Ngang Ðây, ta có thê biet sô luong record:MsgBox objRecordSet.RecordCount'Bat Ðâu duyêt recordDo Until objRecordSet.EOF'. . . Làm viêc gì o' Ðây trong khi duyêt Recorset: Ví du: MsgBox Item("ComputerName")MsgBox objRecordSet.Fields.Item("ComputerName")'Nêu muôn, xóa record, updateobjRecordSet.Delete'objRecordSet.Update '<-- Ðu`ng nên Ðê o Ðây, mà Ðê ngoai vòng lap'. . .objRecordSet.MoveNextLoopobjRecordSet.Update'Ðóng các kêt nôiobjRecordSet.CloseobjConnection.Close


Còn tiếp..., tôi sẽ lần lượt gom hàng. Các bạn cũng thoải mái đặt vấn đề. Tranh thủ lúc nầy anh hoangthu1974 đang rảnh :D
Sửa lần cuối bởi truongphu vào ngày T.Bảy 22/05/2010 9:05 pm với 7 lần sửa.


o0o--truongphu--o0o

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

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1318
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 time
Been thanked: 69 time
Liên hệ:

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi vietteiv » T.Năm 30/10/2008 3:44 pm

hay đấy, bác truongphu =D>

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi hoangthu1974 » T.Năm 30/10/2008 3:46 pm

Ặc, sao biết tôi đang rảnh vậy? mà sao tự nhiên động đến tôi trong này thế?

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi hoangthu1974 » T.Năm 30/10/2008 3:53 pm

truongphu đã viết:Duyệt các Tables: Duyệt TableYYY
Set objRecordSet = CreateObject("ADODB.RecordSet") 'Kho'i tao môt bô duyêt các Records
' chú y khai 2 ha`ng sô sau adOpenStatic, adLockOptimistic
objRecordSet.Open "SELECT * FROM TableYYY", objConnection, adOpenStatic, adLockOptimistic
'Duyêt qua Recorset: Goi hàng 1 và di chuyên Ðên hàng cuôi cùng
objRecordSet.MoveFirst
'Ngang Ðây, ta có thê biet sô luong record:
MsgBox objRecordSet.RecordCount
'Bat Ðâu duyêt record
Do Until objRecordSet.EOF
'. . . Làm viêc gì o' Ðây trong khi duyêt Recorset: Ví du: MsgBox Item("ComputerName")
MsgBox objRecordSet.Fields.Item("ComputerName")
'Nêu muôn, xóa record, update
objRecordSet.Delete
'objRecordSet.Update '<-- Ðu`ng nên Ðê o Ðây, mà Ðê ngoai vòng lap
'. . .
objRecordSet.MoveNext
Loop
objRecordSet.Update
'Ðóng các kêt nôi
objRecordSet.Close
objConnection.Close


Mã: Chọn hết

  1. Set objRecordSet = CreateObject("ADODB.RecordSet") 'Kho'i tao môt bô duyêt các Records
  2. ' chú y khai 2 ha`ng sô sau adOpenStatic, adLockOptimistic
  3. objRecordSet.Open "SELECT * FROM TableYYY", objConnection, adOpenStatic, adLockOptimistic
  4. 'Duyêt qua Recorset: Goi hàng 1 và di chuyên Ðên hàng cuôi cùng
  5. 'objRecordSet.MoveFirst <-- Chỗ này đổi là
  6. If Not objRecordSet.BOF And objRecordSet.RecordCount > 0 Then objRecordSet.MoveFirst
  7. 'Để tránh trường hợp Recordset rỗng, nó báo lỗi
  8. 'Ngang Ðây, ta có thê biet sô luong record:
  9. MsgBox objRecordSet.RecordCount
  10. 'Bat Ðâu duyêt record
  11. Do Until objRecordSet.EOF 'Tương tự như Do While Not objRecordSet.EOF
  12. 'nhưng nếu duyệt hết Recordset, nên dùng vòng lặp While.. Wend để tăng tốc độ xử lý
  13. DoEvents '<-- Thêm cái này để chống treo chương trình nếu nhiều record quá.
  14. '. . . Làm viêc gì o' Ðây trong khi duyêt Recorset: Ví du: MsgBox Item("ComputerName")
  15. MsgBox objRecordSet.Fields.Item("ComputerName")
  16. 'Nêu muôn, xóa record, update
  17. objRecordSet.Delete
  18. 'objRecordSet.Update '<-- Ðu`ng nên Ðê o Ðây, mà Ðê ngoai vòng lap
  19. '. . .
  20. objRecordSet.MoveNext
  21. Loop
  22. objRecordSet.Update
  23. 'Ðóng các kêt nôi
  24. objRecordSet.Close
  25. objConnection.Close
  26.  

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Năm 30/10/2008 6:21 pm

1- Cảm ơn anh vietteiv đã ủng hộ, đẩy lên đầu trang
2- Cảm ơn anh hoangthu1974 đã duyệt code và bổ sung những chiêu rất thực tế
xin tiếp tục

. . .
5 AddNew và Update

Mã: Chọn hết

  1. objRecordSet.Open "SELECT * FROM TableYYY", objConnection, adOpenStatic, adLockOptimistic
  2.  ' Ðã khai báo o' trên, viêt tiêp ..
  3. 'Goi phuong thu'c AddNew
  4. objRecordSet.AddNew
  5. 'Câu trúc: objRecordSet("Field Name") = "Field Value"
  6. ' nghia là tai field "Category" ghi thêm record "Quán Net"
  7. objRecordSet("Category") = "Quán Net"
  8. objRecordSet("ComputerName") = "Máy A1"
  9. 'tuong tu' nhu' trên . . .
  10. objRecordSet("RecordNumber") = "12"
  11. objRecordSet("TimeWritten") = "12:30"
  12. objRecordSet("UserName") = "Khách"
  13.  
  14. 'Goi phuong thu'c Update
  15. objRecordSet.Update
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Năm 30/10/2008 6:44 pm

6- Đường dẫn tương đối của file *.mdb
đường dẫn tương đối, nghĩa là đường dẫn tính từ project. Ví dụ:

Mã: Chọn hết

  1. cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0 ;" & _
  2.                       "Data Source =" & App.Path & "\Tinhluong.mdb;" & _
  3.                       "Persist Security Info=False;" & _
  4.                       "Jet OLEDB:Database Password =thuytrang"


Cụ thể trong code code trên, đường dẫn là App.Path & "\Tinhluong.mdb
App.Path là vị trí bất kỳ, "tương đối" là thế. Rất tiện phải không?

a- Câu trên có thể viết gọn một chút:

Mã: Chọn hết

  1. cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0 ;" & _
  2.                       "Data Source = Tinhluong.mdb;" & _
  3.                       "Persist Security Info=False;" & _
  4.                       "Jet OLEDB:Database Password =thuytrang"


b- Trong một số trường hợp, khi chương trình nằm trực tiếp trên ổ đĩa mà không ở trong Folder, câu "Data Source =" & App.Path & "\Tinhluong.mdb;" sẽ bị sai đường dẫn.
Để tổng quát hóa các trường hợp nêu trên, ta phải ghi hơi dài một chút:

Mã: Chọn hết

  1. Dim Path$:      Path=App.Path
  2.     If Right(Path, 1) <> "\" Then Path = Path & "\"
  3. cn.ConnectionString = "Provider = Microsoft.Jet.OLEDB.4.0 ;" & _
  4.                       "Data Source =" & Path & "Tinhluong.mdb;" & _
  5.                       "Persist Security Info=False;" & _
  6.                       "Jet OLEDB:Database Password =thuytrang"

c- Nói thêm cho rõ:
* Nếu DataSource nằm cùng folder với chương trình, ta ghi:
-->

Mã: Chọn hết

  1. "Data Source = Tinhluong.mdb;"

* Nếu DataSource nằm trong một folder, mà Folder ấy mới nằm cùng chương trình, ta ghi:
--->

Mã: Chọn hết

  1. Dim Path$:      Path=App.Path
  2.     If Right(Path, 1) <> "\" Then Path = Path & "\"
  3.      "Data Source =" & Path & "Tên Folder\Tinhluong.mdb;"
Sửa lần cuối bởi truongphu vào ngày T.Năm 27/11/2008 6:25 pm với 1 lần sửa.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Năm 30/10/2008 8:28 pm

7- Mở cùng lúc nhiều tables

Mã: Chọn hết

  1. Const adOpenStatic = 3
  2. Const adLockOptimistic = 3
  3. 'Tâp tin db1.mdb có 3 Table1, Table2, table3 có ít du liêu trong môi Table
  4. Set objConnection = CreateObject("ADODB.Connection")
  5. Set objRecordSet = CreateObject("ADODB.Recordset")
  6. Set objRecordSet2 = CreateObject("ADODB.Recordset")
  7. Set objRecordSet3 = CreateObject("ADODB.Recordset")
  8.  
  9. objConnection.Open "Provider= Microsoft.Jet.OLEDB.4.0; " & "Data Source=db1.mdb"
  10.  
  11. objRecordSet.Open "SELECT * FROM Table1", objConnection, adOpenStatic, adLockOptimistic
  12. objRecordSet.MoveFirst
  13.  
  14. objRecordSet2.Open "SELECT * FROM Table2", objConnection, adOpenStatic, adLockOptimistic
  15. objRecordSet2.MoveFirst
  16.  
  17. objRecordSet3.Open "SELECT * FROM Table3", objConnection, adOpenStatic, adLockOptimistic
  18. objRecordSet3.MoveFirst
  19.  
  20. Do Until objRecordSet.EOF
  21.     MsgBox objRecordSet.Fields.Item("aaa")
  22.     objRecordSet.MoveNext
  23.     'Làm gì Ðây? ...
  24. Loop
  25.  
  26. Do Until objRecordSet2.EOF
  27.     MsgBox objRecordSet2.Fields.Item("qqq")
  28.     objRecordSet2.MoveNext
  29.     'Làm gì Ðây? ...
  30. Loop
  31.  
  32. Do Until objRecordSet3.EOF
  33.     MsgBox objRecordSet3.Fields.Item("eee")
  34.     objRecordSet3.MoveNext
  35.     'Làm gì Ðây? ...
  36. Loop
  37. objRecordSet.Close
  38. objRecordSet2.Close
  39. objRecordSet3.Close
  40. objConnection.Close
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Năm 30/10/2008 8:40 pm

8- Cách lấy CSDL Access có password từ máy khác

gửi bởi boy1234 vào ngày Thứ 2 13/10/2008 3:38 pm
Em có 2 máy A và B nối mạng LAN.
- Máy A chứa CSDL Access là D:\DATA\data.mdb mà có password là "123".
- Em muốn lập trình VB 6.0 từ máy B lấy CSDL này từ máy A thì phải kết nối sao để lấy được dữ liệu.

gửi bởi hoangthu1974 vào ngày Thứ 3 14/10/2008 10:57 am
Mọi việc kết nối bình thường, đường dẫn là: \\tenmay\odia$\duongdan\data.mdb. và odia$ phải ở chế độ share admin.

gửi bởi boy1234 vào ngày Thứ 5 16/10/2008 8:55 am
Nhưng mình làm chỉ sử dụng được tại có máy B nếu em biên dịch chương trình đem qua 1 máy ví dụ máy C trong LAN thi không xài được nó không tìm thấy CSDL ở máy A. Chỉ lại cho em với vì chương trình cần sử dụng cho nhiều máy trong mạng LAN cùng lấy dữ liệu từ 1 máy

gửi bởi hoangthu1974 vào ngày Thứ 5 16/10/2008 9:20 am
Đơn giản là bạn cho động tên máy và đường dẫn ở máy lưu CSDL. Khi kết nối không thành, yêu cầu người sử dụng nhập tên máy trên mạng, ổ đĩa và đường dẫn là được.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Năm 30/10/2008 9:15 pm

9- Cấu trúc vòng lặp: Do While . . . loop trong duyệt recordset

gửi bởi longtep vào ngày Thứ 7 25/10/2008 8:30 pm

Mã: Chọn hết

  1. Do While Not rs.EOF
  2. A(n) = rs.Fields("HOVATEN")
  3. n = n + 1
  4. Loop

'khi em chay thì bị lỗi là: Runtime error '9' Subscrip out of range

gửi bởi thuat vào ngày Thứ 7 25/10/2008 8:56 pm
Thiếu câu lệnh di chuyển sang bản ghi sau trong vòng lặp.

Mã: Chọn hết

  1. Do While Not rs.EOF
  2.       A(n) = rs.Fields("HOVATEN")
  3.       n = n + 1
  4.       rs.MoveNext ' <---- bô sung
  5. Loop
o0o--truongphu--o0o

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

Hình đại diện của người dùng
vietteiv
Quản trị
Quản trị
Bài viết: 1318
Ngày tham gia: T.Bảy 10/02/2007 12:17 am
Đến từ: Cung cấp giải pháp quản lý doanh nghiệp, dự án, tư vấn xây dựng
Has thanked: 6 time
Been thanked: 69 time
Liên hệ:

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi vietteiv » T.Năm 30/10/2008 10:14 pm

bên forum cũ có hướng dẫn cách kết nối 2 database nữa đó. nhờ bác truongphu move qua đây luôn cho đủ bộ :D

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 4:45 am

vietteiv đã viết:forum cũ có hướng dẫn cách kết nối 2 database


1- Forum cũ là một gợi ý hay. Sau đây là link để các bạn mới quen tiện dùng:
http://quantoancity.com/caulacbovb/forum/

2- Cách kết nối 2 database là một đề tài lớn, có lẽ sẽ được đề cập nhiều lần trong topic nầy. Trước mắt chọn bài:

10- Nối dữ liệu từ nhiều bảng trong Access2000?
gửi bởi thanhlv vào ngày Thứ 7 25/08/2007 12:22 am

đây là cách nối DL cũng khá cơ bản,nguồn pcworld.com.vn

Nếu lập trình bằng VB 6.0, bạn có thể dùng các đối tượng ADO để truy xuất database cho dễ dàng và độ tin cậy cao. Các đối tượng ADO thường dùng là Connection, Recordset, Command. Sau đây là qui trình điển hình để xây dựng 1 ứng dụng VB copy dữ liệu từ table của database này sang database khác:

1. Để đoạn code VB độc lập với công nghệ database mà nó truy xuất, bạn hãy định nghĩa 2 DSN (Data Source Name) kết hợp với 2 database cần truy xuất: database chứa table nguồn và database chứa table đích. Để định nghĩa 1 DSN kết hợp với 1 database, từ Windows, bạn hãy vào Control Panel.Administrative Tools.Datasource (ODBC).

2. Chạy VB, tạo project quản lý ứng dụng dạng "Standard EXE". Sau khi Form trống được tạo ra, bạn hãy thiết kế trực quan form có dạng như sau:

Hãy đặt tên cho 3 textbox lần lượt là txtTable, txtDSN1, txtDSN2. Đặt tên cho Button là btnStart. Nhấn kép chuột vào button Start để tạo thủ tục xử lý sự kiện Click cho nó, cửa sổ soạn code sẽ hiển thị.

3. Chọn menu Projects.References, duyệt tìm và chọn mục "Microsoft ActiveX Data Objects 2.x Library" rồi nhấn button Ok để "add" thư viện chứa các đối tượng ADO vào Project ứng dụng.

4. Viết thủ tục xử lý Click chuột cho button Start như sau:

Mã: Chọn hết

  1. 'Thủ tục xử lý Click chuột vào button Start
  2. Private Sub btnStart_Click()
  3. 'Khai báo các biến cần dùng
  4. Dim Connection1 As ADODB.Connection
  5. Dim Connection2 As ADODB.Connection
  6. Dim Command1 As ADODB.Command
  7. Dim Command2 As ADODB.Command
  8. Dim RecordSet1 As ADODB.Recordset
  9. Dim RecordSet2 As ADODB.Recordset
  10. Dim strSQL As String
  11. Dim strBuf As String
  12. 'Tạo connection tới database nguồn
  13. Set Connection1 = New ADODB.Connection
  14. Connection1.Open "DSN=" & txtDSN1.Text
  15. 'Tạo recordset chứa các data của table nguồn
  16. Set RecordSet1 = New ADODB.Recordset
  17. RecordSet1.Open txtTable.Text, Connection1, adOpenStatic, adLockReadOnly, adCmdTable
  18. 'Tạo connection tới database đích
  19. Set Connection2 = New ADODB.Connection
  20. Connection2.Open "DSN=" & txtDSN2.Text
  21. 'Tạo command làm việc với database đích
  22. Set Command2 = New ADODB.Command
  23. Command2.ActiveConnection = Connection2
  24. 'xây dựng SQL tạo Table đích
  25. strSQL = "CREATE TABLE " & txtTable.Text & "("
  26.  
  27. 'duyệt tìm từng field của table nguồn
  28. fStart = 1
  29. For Each fld In RecordSet1.Fields
  30. 'tìm tên và kiểu của field
  31. Select Case fld.Type
  32. Case 2
  33. strBuf = "Integer"
  34. Case 3
  35. strBuf = "Long"
  36. Case 5
  37. strBuf = "Currency"
  38. Case 6
  39. strBuf = "Double"
  40. Case 11
  41. strBuf = "Logical"
  42. Case 202
  43. strBuf = "Text"
  44. Case 135
  45. strBuf = "Date"
  46. Case Else
  47. MsgBox "Type với mã " & fld.Type & "chưa được xử lý!!!"
  48. End Select
  49. If fStart Then
  50. strSQL = strSQL & fld.Name & " " & strBuf
  51. fStart = 0
  52. Else
  53. strSQL = strSQL & ", " & fld.Name & " " & strBuf
  54. End If
  55. Next fld
  56. strSQL = strSQL & ")"
  57. 'Tạo table trên database đích có cùng cấu trúc như table nguồn
  58. Command2.CommandText = strSQL
  59. Command2.Execute
  60. 'Tạo recordset quản lý dữ liệu của table đích
  61. Set RecordSet2 = New ADODB.Recordset
  62. RecordSet2.Open txtTable.Text, Connection2, adOpenKeyset, adLockOptimistic, adCmdTable
  63. 'duyệt copy từng record từ nguồn sang đích
  64. While Not RecordSet1.EOF
  65. 'tạo record mới trên table đích
  66. RecordSet2.AddNew
  67. For i = 0 To RecordSet1.Fields.Count - 1
  68. 'copy nội dung của field
  69. RecordSet2.Fields(i).Value = RecordSet1.Fields(i).Value
  70. Next i
  71. RecordSet2.Update
  72. 'di chuyển đến record kế
  73. RecordSet1.MoveNext
  74. Wend
  75. 'đóng các đối tượng đã dùng lại
  76. RecordSet1.Close
  77. Connection1.Close
  78. Connection2.Close
  79. End Sub
  80.  

5. Chọn menu Run.Start để chạy thử ứng dụng. Khi Form hiển thị, bạn hãy thử nhập tên của table cần copy, tên của DSN miêu tả database chứa table nguồn, tên của DSN miêu tả database đích rồi nhấn button Start.

Lưu ý nếu 2 database nguồn và đích được tạo ra bởi 2 hệ quản trị database khác nhau (Foxpro, Access, SQL Server, MySQL, Oracle...) thì có thể xuất hiện vấn đề không tương thích về kiểu dữ liệu của các field dữ liệu. Một lưu ý khác là đoạn code VB do chúng tôi viết chỉ chứa những hoạt động thiết yếu, chứ chưa đầy đủ, còn thiếu những đoạn code xử lý lỗi cho từng hoạt động truy xuất database. Để có được ứng dụng hoàn chỉnh, bạn cần bổ sung thêm những hoạt động xử lý lỗi còn thiếu.
Sửa lần cuối bởi truongphu vào ngày T.Bảy 01/11/2008 3:49 pm với 1 lần sửa.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 5:32 am

11- Nhanh hơn trong truy xuất CSDL
Khi mở một new project, bạn chỉ cần chép code sau là chạy

Mã: Chọn hết

  1. Set cn = CreateObject("ADODB.Connection")
  2. Set rs = CreateObject("ADODB.RecordSet")

Tuy nhiên tốc độ thực thi sẽ chậm, chỉ thích hợp cho dữ liệu nhỏ

Với code sau, chạy sẽ báo lỗi:

Mã: Chọn hết

  1. Dim cn As New ADODB.Connection
  2. Dim rs As New ADODB.Recordset

Khắc phục bằng cách: Project \ References \ chọn Microsoft ActiveX Data Objects 2.8 library
Trường hợp nầy tốc độ thực thi sẽ nhanh hơn nhiều, thích hợp dữ liệu lớn. Khi viết code được nhắc

gửi bởi hoangthu1974 vào ngày 30/10/2008 3:53 pm
Tương tự như Do While Not objRecordSet.EOF . . . Loop
nhưng nếu duyệt hết Recordset, nên dùng vòng lặp While.. Wend để tăng tốc độ xử lý
DoEvents '<-- Thêm cái này để chống treo chương trình nếu nhiều record quá.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi hoangthu1974 » T.Sáu 31/10/2008 9:06 am

Tạo file MDB bằng code

Mã: Chọn hết

  1. Dim cat As New ADOX.Catalog
  2.  

MDB có mật khẩu:

Mã: Chọn hết

  1. cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dir$ & "\filename.mdb" & ";Jet OLEDB:Database Password=" & strPwd & ";"

MDB không mật khẩu:

Mã: Chọn hết

  1. cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dir$ & "\filename.mdb" & ";"

Tạo Table trong file MDB

Mã: Chọn hết

  1.    Dim rsTable New ADOX.Table
  2.     With rsTable
  3.         .Name = "TableName"
  4.         .Columns.Append "ID", adInteger
  5.         .Columns.Append "Field1", FieldType, FieldWidth
  6.         .Columns.Append "Field2", adVarWChar, 50
  7.         .Columns.Append "Field3", adBoolean
  8.         .Columns.Append "Field4", adDouble
  9.         .Columns("Field2").Attributes = adColNullable 'Cho phép Null
  10.         .Columns("Field4").Properties("Default").Value = 0 'Giá trị mặc định là 0
  11.          With .Columns("ID")
  12.             Set .ParentCatalog = cat 'Very important
  13.             .Properties("AutoIncrement") = True 'Tự động tăng số
  14.             .Properties("Seed") = n 'Mỗi lần tự động tăng n
  15.          End With
  16.  
  17.     End With
  18.     cat.Tables.Append rsTable

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 10:02 am

13- Tạo một field mới trong table đang tồn tại
Code sau đây tạo field "qqq" text 50 ký tự trong table1 có sẵn của file db1.mdb

Mã: Chọn hết

  1. Private Sub CreateField(AccessPath$, TableName$)
  2. Set objConnection = CreateObject("ADODB.Connection")
  3.     objConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath
  4.     objConnection.Execute "alter table Table1 ADD COLUMN qqq Text(50)"   '<- thêm côt qqq trong table
  5.     objConnection.Close  ' Câu trên, thay tên table và tên Field thích ho'p
  6. End Sub
  7.  
  8. Private Sub Form_Load()
  9. Call CreateField("C:\db1.mdb", "Table1")
  10. End Sub

Hay không? :D
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 2:23 pm

14- Các thông số cho định dạng field được tạo

Mã: Chọn hết

  1. objConnection.Execute "alter table Table1 ADD COLUMN qqq Text(50)"

qqq TEXT(50) định dạng TEXT 50 ký tự, mặc định cho phép 255 ký tự
qqq TEXT cho phép 255 ký tự
qqq COUNTER định dạng AutoNumber
qqq INTEGER
qqq DATETIME
qqq MEMO cho phép trên 255 ký tự

anh hoangthu1974 thấy "độc" không? :D
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 2:31 pm

15- Tạo Table mới kèm fields, viết bằng VBA như trên

Mã: Chọn hết

  1. Private Sub CreateField2(AccessPath$)
  2.     'Tao table mo'i "Table2" kèm fields "ID" và "qqq"
  3. Set objConnection = CreateObject("ADODB.Connection")
  4.     objConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath
  5.     objConnection.Execute "CREATE TABLE Table2(" & "ID COUNTER ," & "qqq MEMO)"
  6.     objConnection.Close  ' Câu trên, thay tên table và tên Field thích ho'p
  7. End Sub
  8.  
  9. Private Sub Form_Load()
  10. Call CreateField2("C:\db1.mdb")
  11. End Sub
  12.  
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 2:34 pm

16- Xóa field

Mã: Chọn hết

  1. Private Sub DelField(AccessPath$)
  2. Set objConnection = CreateObject("ADODB.Connection")
  3.     objConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessPath
  4.     objConnection.Execute "alter table Table1 drop column qqq "   '<- huy côt qqq trong table
  5.     objConnection.Close  ' Câu trên, thay tên table và tên Field thích ho'p
  6. End Sub
  7.  
  8. Private Sub Command1_Click()
  9. Call DelField("C:\db1.mdb")
  10. End Sub
  11.  


Tôi nhớ là học câu

Mã: Chọn hết

  1. objConnection.Execute "alter table Table1 drop column qqq "

của TrungDung1997 ở đâu đó
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 3:07 pm

17- Lưu ý Reference Object
hoangthu1974 đã viết:Các bạn mới làm code chú ý, đừng sử dụng lệnh CreateObject để tạo các Reference Object vì:
1. Cách này ít gây lỗi nhưng sẽ khó đóng gói vì chương trình đóng gói không truy vấn được các Reference Object.
2. Các bạn không biến trong Object có các Property hay Event nào để sử dụng.
Ví dụ:
Số dòng Bật/Tắt | Mở rộng/Thu gọn | Chọn tất cả
Dim Bien
Set Bien = CreateObject("scripting.FileSystemObject")

Thay bằng:
Số dòng Bật/Tắt | Mở rộng/Thu gọn | Chọn tất cả
Dim Bien As New Scripting.FileSystemObject

Khi nào thành Expert rồi hay dùng CreateObject.


Để viết:

Mã: Chọn hết

  1. Dim cn As New ADODB.Connection
  2. Dim rs As New ADODB.Recordset


--> Project \ References \ chọn Microsoft ActiveX Data Objects 2.8 library

Để viết:

Mã: Chọn hết

  1. Dim cat As New ADOX.Catalog
  2. Dim rsTable New ADOX.Table


--> Project \ References \ chọn Microsoft ADO Ext 2.8 for DDL and Security

Để viết:

Mã: Chọn hết

  1. Dim objAccess As New Access.Application


--> Project \ References \ chọn Microsoft Access (10.0) 11.0 Object Library
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 5:53 pm

18- Xóa toàn bộ các Records, Table chỉ còn các fields trống rỗng:

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Const adOpenStatic = 3: Const adLockOptimistic = 3
  3. Set objConnection = CreateObject("ADODB.Connection")
  4. Set objRecordset = CreateObject("ADODB.Recordset")
  5. objConnection.Open "Provider = Microsoft.Jet.OLEDB.4.0; " & "Data Source = 'E:\win\desktop\db1.mdb'"
  6. objRecordset.Open "Delete * FROM Table1", objConnection, adOpenStatic, adLockOptimistic
  7. objConnection.Close
  8. End Sub
Sửa lần cuối bởi truongphu vào ngày T.Bảy 01/11/2008 5:05 am với 1 lần sửa.
o0o--truongphu--o0o

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

Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

Re: Các câu hỏi và trả lời liên quan đến file *.MDB

Gửi bàigửi bởi truongphu » T.Sáu 31/10/2008 5:55 pm

19- Xóa luôn Table, Dùng Access

Mã: Chọn hết

  1. Private Sub Form_Load()
  2. Set acc = CreateObject("Access.Application")
  3. acc.OpenCurrentDatabase "E:\win\desktop\db1.mdb"
  4. acc.DoCmd.DeleteObject acTable, "Table1"
  5. End Sub


bổ sung 16/11
19- Xóa luôn Table, Dùng ADODB

Mã: Chọn hết

  1. Dim objCatalog As New ADOX.Catalog
  2. Dim objConnection As New ADODB.Connection
  3. objConnection.Open "Provider= Microsoft.Jet.OLEDB.4.0; " & "Data Source=db1.mdb"
  4. Set objCatalog.ActiveConnection = objConnection
  5. objCatalog.Tables.Delete "Table1"
  6. objConnection.Close
Sửa lần cuối bởi truongphu vào ngày CN 16/11/2008 9:03 am với 1 lần sửa.
o0o--truongphu--o0o

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


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

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách