1. Trang chủ
  2. » Công Nghệ Thông Tin

Tập hợp các thao tác trên file mbm

26 243 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 240 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

79- Lổi khi truy xuất Table có dạng các ký tự đặc biệt... Để 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 tất cả 1.. "Data Source = Tinhluong.mdb;" * Nếu

Trang 1

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

Trang 2

12- Tạo file MDB bằng code

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

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

Trang 3

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#p2477329- Câu lệnh SQL trong vb

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

Trang 4

33- Lỗi gọi hàm trong thư viện

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

Trang 5

45- Tự động thêm, xoá dòng trong CSDL

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

Trang 6

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#p27491http://caulacbovb.com/forum/viewtopic.php?f=7&t=3942&start=80#p27546http://caulacbovb.com/forum/viewtopic.php?

f=7&t=3942&start=100#p27604

Trang 9

79- Lổi khi truy xuất Table có dạng các ký tự đặc biệt

Trang 10

88- Chức năng tìm kiếm của Data1

Trang 11

97- Nói thêm về kiểm tra trùng record

Trang 12

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 tất cả

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

Trang 13

& "\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 tất cả

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

Const adCmdUnspecified = -1Const adCmdText = 1Const adCmdTable = 2Const

adCmdStoredProc = 4Const adCmdUnknown = 8Const adCmdFile = 256Const

EventStatusEnum Values:

Mã: Chọn tất cả

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

Trang 14

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

Mã: Chọn tất cả

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

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,

Trang 15

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

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

Trang 16

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

gửi bởi truongphu » Thứ 5 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 tất cả

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.mdbApp.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 tất cả

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"

Trang 17

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 tất cả

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 tất cả

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 tất cả

1 Dim Path$: Path=App.Path

2 If Right(Path, 1) <> "\" Then Path = Path & "\"

3 "Data Source =" & Path & "Tên Folder\Tinhluong.mdb;"

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

Mã: Chọn tất cả

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" )

Trang 18

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

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ấtdatabase 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 tất cả

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

Trang 19

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

Trang 20

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

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

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

Trang 21

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

Mã: Chọn tất cả

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

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

filename.mdb" & ";Jet OLEDB:Database Password=" & strPwd & ";"

4 .Columns.Append "ID" , adInteger

5 .Columns.Append "Field1" , FieldType, FieldWidth

Trang 22

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

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

gửi bởi truongphu » Thứ 6 31/10/2008 10:02 am

Trang 23

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 tất cả

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" )

Trang 24

gửi bởi truongphu » Thứ 6 31/10/2008 2:23 pm

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

Mã: Chọn tất cả

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ự

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

Mã: Chọn tất cả

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

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

Ngày đăng: 13/04/2018, 11:45

TỪ KHÓA LIÊN QUAN

w