[Programming] [Thảo luận] Tạo file Access trong ứng dụng C++ MFC |
02/12/2008 21:44:53 (+0700) | #1 | 161048 |
VaT
Member
|
0 |
|
|
Joined: 04/09/2008 00:17:52
Messages: 87
Offline
|
|
Bình thường chúng ta có thể truy xuất CSDL từ một file Access (đã được tạo sẵn bằng Microsoft Acess) từ ứng dụng C++ MFC bằng các Class CDatabase và CRecordset. Nhưng giờ nếu chúng ta muốn tạo một file Access từ ứng dụng của chúng ta thì như thế nào. Qua tìm hiểu, em có biết 2 cách sau để tạo ra 1 file Access từ ứng dụng C++ MFC như sau:
Cách 1 :
Code:
- Khai báo : CDaoDatabase newAccessFile;
- Khởi tạo : newAccessFile.Create("Test.mdb");
- Xây dựng CSDL trong file Test.mdb: Bằng cách dùng hàm Execute(Sqlcommand)
Trong đó : Sqlcommand là các câu lệnh của Sql như : Creat table, Insert field,...
Cách 2 :
Code:
- Cũng khai báo : CDaoDatabase newAccessFile;
- Khởi tạo : newAccessFile.Create("Test.mdb");
- Xây dựng CSDL trong file Test.mdb: Bằng cách sử dụng thêm Class CDaoTableDef. Cụ thể:
+ Khởi tạo Table : CDaoTableDef newAccessTable(&newAccessFile);
+ Tạo table : newAccessTable.Create(_("TestTable"); // Có một số thông số khác nếu cần thiết//
+ Tạo field trong table : newAccessTable.CreateField(_("TestField1"),dblong,dbAutoIncrField)
+ Xác nhận tạo table xong : newAccessTable.Append();
+ Tạo nội dung cho field: newAcessTable.Excute(SqlCmd);
Khi em dùng Cách 1 thì mọi việc đều suôn sẽ, có nghĩa là em tạo file Access đó từ ứng dụng của em xong, em mở nó bằng Microsoft Acess thì nó hiện ra đầy đủ những gì em đã tạo.
Nhưng khi em dùng Cách 2 thì nó chỉ tạo ra file Access, còn những nội dung trong file Access đó như table name, field, content ,.. thì lại không có.
Có điều, em thấy nếu dùng Cách 2 thì rất thuận tiện cho việc coding, chỉnh sủa và nâng cấp vì các bước rất rõ ràng nhưng em không thể hiểu tại sao Cách 2 lại không thể cho ra kết quá như Cách 1 được. Phải chăng có sự sai sót nào trong Cách 2 này của em. Nếu có anh chị nào đã từng làm qua điều này và có kinh nghiệm thì mong được thảo luận ở đây để em và những ai đang tìm hiểu về vấn đề này được rõ.
P/S : Còn một vấn đề nữa, mà có thể em sẽ đề cập ở bài Thảo luận sau khi đã tìm hiểu là : Truy cập vào file Access 2007.
|
|
|
|
|
[Question] Re: [Thảo luận] Tạo file Access trong ứng dụng C++ MFC |
03/12/2008 20:48:41 (+0700) | #2 | 161161 |
VaT
Member
|
0 |
|
|
Joined: 04/09/2008 00:17:52
Messages: 87
Offline
|
|
Vấn đề này có vẻ ít bạn quan tâm đến. Đến giờ mình vẫn chưa biết làm cách nào để khắc phục được lỗi của Cách 2. Nếu có bạn nào đã làm qua vấn đề này thì có thể chỉ điểm dùm mình được không? |
|
|
|
|
[Question] Re: [Thảo luận] Tạo file Access trong ứng dụng C++ MFC |
04/12/2008 16:47:02 (+0700) | #3 | 161267 |
VaT
Member
|
0 |
|
|
Joined: 04/09/2008 00:17:52
Messages: 87
Offline
|
|
Oh, mình đã biết mình bị lỗi ở đâu. Té ra trong đống code tạo table và field
Code:
qlCreateTable.CreateField(_T("IDUSER"),dbInteger,2,dbAutoIncrField);
qlCreateTable.CreateField(_T("HOTEN"),dbText,255,dbVariableField);
qlCreateTable.CreateField(_T("NGAYSINH"),dbDate,8,dbUpdatableField);
thì đoạn code :
Code:
qlCreateTable.CreateField(_T("IDUSER"),dbInteger,2,dbAutoIncrField);
gây ra lỗi, nên không thể tạo được table name và các field còn lại. Mình sẽ tìm hiểu xem tại sao bị lỗi đó. Nhưng theo phỏng đoán chắc là do tham số dbAutoIncreField gây ra, vì nó có liên quan đến Primary Key trong Access thì phải.
---------------------------------------
P/S : Nếu các bạn làm về vấn đề này thì có thể tham khảo thêm CDaoFieldInfo.
Thư viện cần thêm : "afxdao.h"
Cảm ơn các bạn đã đọc. |
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|