Felabeorbt

New Member
Nghe cái tít có vẻ ghê gớm, thực chất bất có gì phức lắm đâu.Trong Access, có một dạng gọi là Access Project. Nó cho phép bạn kết nối đến CSDL của SQL server. Nói cách khác, các bảng dữ liệu, các query (view) bất nằm trên tập tin Access mà nó nằm trên CSDL của SQL Server.Lúc này bạn sẽ dùng form và report của Access để thể hiện hay cập nhật dữ liệu của SQL database.Cái kiểu này tiện lợi ở một chỗ là bạn có thể có một ứng dụng có thể chạy từ nhiều máy nhưng cho phép lưu trên cùng một CSDL.Về thiết kế form và report thì như các bạn vừa biết, Access cực kỳ dễ. Do đó nếu bất cần thiết phải "security" và đòi hỏi phải "pro" quá thì dùng Access Project trong một mạng LAN cũng được đấy.Bản thân tui cũng có làm một số ứng dụng bằng Access Project, số lượng máy sử dụng là "vô tư" (tuỳ từng trường hợp vào cái giới hạn tiềm năng truy cập SQL server mà thôi).Muốn làm Access Project thì trong đơn vị bạn nên có một server, trên đó có cài đặt SQL Server (dùng bản 2000 cho nó dễ xài).Về thiết kế các đối tượng database (table, view, store procedure, function,...) thì sẽ tuân thủ theo quy tắc của SQL ServerVề thiết kế form, report thì theo Access. Code VBA cho form, report, module thì tương tự như Access database, tuy nhiên có một số khác biệt nhỏ.Chỉ giới thiệu sơ sơ thôi, từ từ rồi đi tiếp hả.
 
Để làm Access Project, các bạn cần có kiến thức căn bản về SQL Sever, trong đó quan trọng nhất là các câu lệnh T-SQL (Transaction SQL).Bạn có thể làm ra (tạo) một Access Project với dữ liệu SQL có sẵn (đã làm ra (tạo) sẵn từ SQL Server Enterprise Manager hay từ script) hay từ một SQL Server database mới.Access sẽ xuất hiện các hộp thoại chỉ dẫn các bạn kết nối đến SQL Server và database mà các bạn cần kết nối.Nếu SQL Server của bạn dùng chế độ Windows Authentication Mode thì bạn bất cần nhập login name và password.Nếu bạn dùng chế độ Mixed Mode (hay còn gọi là SQL server Authentication Mode) thì bạn nên phải nhập loginname và password theo đúng như khi bạn cài đặt một SQL Server instance. (Thường login name là sa)Khi kết nối xong với SQL Server database, bạn có thể làm chuyện tương tự như khi bạn làm với Access MDB.Một vài lưu ý nhỏ nhỏ:1. Access Project sẽ kết nối với SQL server database một cách "liên tục", do vậy nó sẽ ảnh hưởng đến số lượng connection đến SQL Server. Nếu bạn cho nhiều máy cùng sử dụng chương trình thì có tiềm năng lâu lâu nó "treo" nếu hệ thống hạ tầng của bạn bất ngon lắm.2. Nếu bạn lập trình VBA trong Access Project thì cần lưu ý khi bạn sử dụng đối tượng Recordset. Vì Access Project sẽ sử dụng Recordset thuộc lớp ADODB chứ bất phải thuộc lớp DAO như Access MDB, bởi vậy bạn phải khai báo tường minh khi sử dụng:Ví dụ:Dim rs As DAO.RecordsetDim rs As ADODB.RecordsetĐồng thời (gian) đối tượng Recordset thuộc ADODB bất có các cách FindFirst, FindNext, FindPrevious, FindLast mà chỉ có cách Find mà thôi. Và cách này chỉ có tìm một chiều nên nếu bất tìm thấy, nó sẽ chuyển đến EOF. Và điều kiện tìm của nó là một chuỗi điều kiện đơn (nghĩa là bất có AND, OR gì)3. Cũng trong lập trình thì Access Project sẽ sử dụng đối tượng CurrentProject thay vì CurrentDB.....Còn một vài thứ khác nữa, bất có thời (gian) gian nói hết. các bạn tự nghiên cứu thêm nhé.
 

toemlemlinh_bt

New Member
"Access sẽ xuất hiện các hộp thoại chỉ dẫn các bạn kết nối đến SQL Server và database mà các bạn cần kết nối"cụ thể là thế nào hả bạn? có thể chỉ một cách rõ hơn được ko?
 
Trích:
Nguyên văn bởi KHAHOANGLE "Access sẽ xuất hiện các hộp thoại chỉ dẫn các bạn kết nối đến SQL Server và database mà các bạn cần kết nối"cụ thể là thế nào hả bạn? có thể chỉ một cách rõ hơn được ko?
Bạn có sẵn sàng thử chưa? Nếu bạn vừa sẵn sàng thì sẽ hãy bắt tay vào đi. Nó sẽ hiện ra các hộp thoại để bạn chiêm ngưỡng và thiết lập thông số. :)Sỡ dĩ tui nói vắn tắt như vậy vì hiện tại có khá nhiều tài liệu bằng tiếng Anh, tiếng Việt chỉ dẫn chi tiết về điều này. Thậm chí là mở Giúp của Access cũng có nữa.Mặt khác đây chỉ là giới thiệu sơ lược về Access Project thôi nên tui không tham lam viết nhiều (sợ viết sai + dỡ, ).Để khi nào thu xếp được thời (gian) gian, có lẽ tui sẽ làm một loạt bài về vấn đề này. Thông cảm nhé các bạn.
 

Julien

New Member
to: phatnq2002Cái mà bạn nói là "project using existing database" đúng ko? Còn cái mình hỏi là "blank database".Mình làm một csdl ở sql sever 2000, giờ muốn kết nối sang access. Rồi cách lấy dữ liệu ở sql để "trình diễn" trên form của access.ở đây access chỉ thể hiện ra dữ liệu thôi. Bạn hiểu ý mình hỏi chứ?
 

darksmith_1992

New Member
Trích:
Nguyên văn bởi KHAHOANGLE to: phatnq2002Cái mà bạn nói là "project using existing database" đúng ko? Còn cái mình hỏi là "blank database".Mình làm một csdl ở sql sever 2000, giờ muốn kết nối sang access. Rồi cách lấy dữ liệu ở sql để "trình diễn" trên form của access.ở đây access chỉ thể hiện ra dữ liệu thôi. Bạn hiểu ý mình hỏi chứ?
tui rất hiểu ý bạn muốn hỏi.Và theo như cách bạn nói thì bạn vừa có database làm ra (tạo) từ SQL server 2000, vậy thì bạn sẽ phải chọn Project using existing data là đúng rồi còn gì?Lúc đó bạn sẽ chỉ định các thông số để kết nối cho file Access.Lúc này bạn đừng coi Access là một database nữa mà chỉ xem nó là một project file, nơi chứa các interface để bạn xử lý dữ liệu của SQL server 2000.Còn để xử lý dữ liệu ra sao thì bạn phải lập trình, muốn ra kết xuất thì bạn phải design nó. Chứ Access có làm ra (tạo) sẵn đâu? Ngay cả Acccess database cũng vậy mà.Có thể cách nói của tui không làm cho bạn hài lòng, vậy thì ai đó có thể giúp cho bạn KHAHOANGLE tốt hơn? hay bạn KHAHOANGLE tìm thêm tài liệu để hiểu kỹ vấn đề này hơn.
 

toantink4

New Member
Trích:
Nguyên văn bởi KHAHOANGLE to: phatnq2002Cái mà bạn nói là "project using existing database" đúng ko? Còn cái mình hỏi là "blank database".Mình làm một csdl ở sql sever 2000, giờ muốn kết nối sang access. Rồi cách lấy dữ liệu ở sql để "trình diễn" trên form của access.ở đây access chỉ thể hiện ra dữ liệu thôi. Bạn hiểu ý mình hỏi chứ?
Sau khi làm ra (tạo) new Project (new data), bạn vào menu File, chọn connection. Nhâp các thông số như server name (tên máy chủ mà bạn vừa tạo csdl ở sql sever 2000), cách logon vào server, tên database, test thử nếu được thì chọn OK.
 

thanhcarter1987

New Member
Mình muốn hỏi làm ở "blank database" với kết nối bằng câu lệnh kết nối chứ không phải setup bằng tay!Nhưng dù sao cũng rất Thank vì vừa chỉ giúp mình biết thêm nhiều điều.
 

Raymund

New Member
Trích:
Nguyên văn bởi KHAHOANGLE Mình muốn hỏi làm ở "blank database" với kết nối bằng câu lệnh kết nối chứ không phải setup bằng tay!Nhưng dù sao cũng rất Thank vì vừa chỉ giúp mình biết thêm nhiều điều.
Cha mẹ ơi, bạn KHAHOANGLE hình như chưa đọc kỹ cái đoạn tui chỉ ra: Trích:
Dim connStr As String, dim conn As New ADODB.ConnectionconnStr = "Data Source=servername;Initial Catalog=databasename;User Id=username;Password=password;"With conn.ConnectionString = connStr.OpenEnd With
Cái này là bạn mở cái blank database của bạn ra, rồi bạn vào cái module bạn làm một cái sub để connect với database mà bạn cần đó.
 
To phatnq2002.HIện mình vừa có 1 kết nối từ access tới sqlser2000 , dữ liệu vừa được truy vấn và hiện thị lên datagrid nhưng có 1 số mình đang muốn chỉnh sửa1. Các dấu kiểm (true, false ) bất còn nữa nay nó lại thành 0 và -12. Trong subform cũ thì tại ô (VD:mãphòng chốngban) trước đây nó dạng combobox để chọn thì nay nó bất còn nữa
 

cobedautay_23

New Member
Trích:
Nguyên văn bởi behattieu To phatnq2002.HIện mình vừa có 1 kết nối từ access tới sqlser2000 , dữ liệu vừa được truy vấn và hiện thị lên datagrid nhưng có 1 số mình đang muốn chỉnh sửa1. Các dấu kiểm (true, false ) bất còn nữa nay nó lại thành 0 và -12. Trong subform cũ thì tại ô (VD:mãphòng chốngban) trước đây nó dạng combobox để chọn thì nay nó bất còn nữa
tui chưa hiểu cách bạn thiết kế lắm, nhưng theo như bạn nói thì tui chưa gặp vì tui không gặp những trường hợp này. tui design như thế nào thì vẫn như thế.Vậy có lẽ bạn chịu khó thiết lập lại bằng cách vào table design view, chuyển qua tab thứ hai của Field Property, thay Display control của các field kiểu true/false của bạn thành check box, thay cái mà bạn muốn làm ra (tạo) combo box thành Combo Box, chọn Record Source cho nó, Column Counts.
 

Bradburn

New Member
Hi, mình đang muốn chuyển 1 số chương trình từ dạng access sang dạng access+SQL2000. Như vậy phải dùng kết nối ADO từ access tới SQL. Vấn để ở chỗ form trong access đang giữ nguyên (về mặt giao diện) nhưng phải thay kết nối . Trước đây trong form của access có thuộc tính record source để gán dữ liệu (table hay query) nhưng nay 2 cái table và query bất còn nữa mà thay vào đó chỉ là 1 recordset trong code VBA. Vậy phatnq2002 xem hộ làm sao để đẩy dữ liệu từ recordset vào form. Mình vừa thử gán : txt1=rst.Fields(0) nhưng nó chỉ hiện có 1 giá trị trong khi form của mình định dạng ở dạng datasheet.Hi hi, hì hục cả buổi sáng cuối cùng cũng ra, rất đơn giản nhưng lại bất để ý.set Me.Form.Recordset = rst
 

Graeme

New Member
Trích:
Nguyên văn bởi behattieu Hi, mình đang muốn chuyển 1 số chương trình từ dạng access sang dạng access+SQL2000. Như vậy phải dùng kết nối ADO từ access tới SQL. Vấn để ở chỗ form trong access đang giữ nguyên (về mặt giao diện) nhưng phải thay kết nối . Trước đây trong form của access có thuộc tính record source để gán dữ liệu (table hay query) nhưng nay 2 cái table và query bất còn nữa mà thay vào đó chỉ là 1 recordset trong code VBA. Vậy phatnq2002 xem hộ làm sao để đẩy dữ liệu từ recordset vào form. Mình vừa thử gán : txt1=rst.Fields(0) nhưng nó chỉ hiện có 1 giá trị trong khi form của mình định dạng ở dạng datasheet.
Bạn nói sao khó hiểu quá. Làm sao mà có 2 cái table và query cùng lúc cho 1 record source đựoc?
Record source cũng là 1 cái recordset thôi. Nó query từ các table và query khác mà ra thành recordset. Dù table và query gốc là ở Access hay ở SQL server 2000 cũng thế.
 

only_lovetruc

New Member
Chắc bạn chưa hiểu ý thôi. Tức là lúc trước form lấy dữ liệu từ table hay query. Nhưng nay dùng câu lệnh SQL và hàm kết nối rồi thì trong file access của mình làm gì còn table và query nào nữa đâu, data ở 1 nơi xa xôi nào rồi màHi hi, hì hục cả buổi sáng cuối cùng cũng ra, rất đơn giản nhưng lại bất để ý.set Me.Form.Recordset = rstNhưng giờ mình muốn làm ra (tạo) 1 subform bên trong mainform thì chưa biết gán thuộc tính cho subform như thế nào (thuộc tính source object trong subform đang để trống và muốn được gán bằng rst)Thanks u
 
Trích:
Nguyên văn bởi behattieu Chắc bạn chưa hiểu ý thôi. Tức là lúc trước form lấy dữ liệu từ table hay query. Nhưng nay dùng câu lệnh SQL và hàm kết nối rồi thì trong file access của mình làm gì còn table và query nào nữa đâu, data ở 1 nơi xa xôi nào rồi màHi hi, hì hục cả buổi sáng cuối cùng cũng ra, rất đơn giản nhưng lại bất để ý.set Me.Form.Recordset = rstNhưng giờ mình muốn làm ra (tạo) 1 subform bên trong mainform thì chưa biết gán thuộc tính cho subform như thế nào (thuộc tính source object trong subform đang để trống và muốn được gán bằng rst)Thanks u
Về nguyên lý thì có vẻ được vì sourceobject của một sub có thể là một table hay query. Tuy nhiên để gán 1 recordset thì tui chưa làm bao giờ. Bạn thử đi, nếu bất được thì ta sẽ nguyên cứu tiếp.Thường thì tui tạo Access Project rồi cho kết nối đến SQL luôn.
 

4_T

New Member
HÌnh như source object chỉ có query hay form thôi.Bây giờ mình kiểm tra lại thấy phát sinh 1 vấn đề: Đó là form có thể hiện thị dữ liệu nhưng lại bất cho chỉnh dữ liệu, thế mới ác chứ. Bạn có cách nào để Edit được dữ liệu bất ? Chưa kể chuyện khi vừa Edit được rồi thì lại phải update vào dữ liệu.Bạn có 1 sample về ADP (access+SLQ2000) không, cho mình tham tiềmo với
 

dung_hanh

New Member
DO bạn học Access theo kiểu WYSIWYG nên bay giờ viết code thì bạn lúng túng.
Có lẽ nên đổi cách học.
Học qua mạng thì làm sao cầm tay mà chỉ được.

Thay vì trong cửa sổ design bạn click chọn ở khung property, hãy ghi lệnh trong code.

Vấn đề khác, tương tự như Diễn đàn này, khi bạn gửi bài mới thì chương trình sẽ dùng lệnh để insert vào data. Hiển nhiên lúc đó trang newpost trên server sẽ mở data và insert vào. Nếu bạn sửa bài cũ thì nó sẽ dùng lệnh update.
Ừ thì nó cũng có khác đôi chút.
Vì nếu bạn dùng Access mở file trong mạng nội bộ thì có thể dùng DAO hay ADO.DB còn qua internet thì thường dùng OLE.DB
Dùng phần mềm connect data nào thì nguyên tắc cũng như nhau: thông qua ba đối tượng hay là Connection Object hay Command Object hay Recordset Object.

Thông thường người ta dùng Recordset Object để xem, Command Object để thực hiện các lệnh thêm xoá sửa và Connection Object để mở data từ xa.
Tuy nhiên, người dùng theo cách WYSIWYG thường dùng Recordset Object để xem và cả thêm xoá sửa. Và hành động click mở file Access cũng tương đương với dùng Connection Object để mở data.mdb đó.
Chẳng hạn chính behattieu vừa có kinh nghiệm này, lúc trước mở form lên vừa xem vừa xoá sửa luôn trên đó.
Không cần nhớ là phải connect data rồi phải insert, update ...

Hi. Bây giờ muốn làm thế cũng vẫn được như thường. Chỉ khác là bất tự động theo mặc định mà viết code.
Mở data bằng Connection Object như bài trước anh Phật vừa chỉ.
Sau đó mở Recordset Object với thuộc tính thích hợp để cho phép thêm xoá sửa. Sau khi xoá sửa thì UpdateBath vì lúc đó bạn chỉ mới sửa trên data nháp ở máy của mình mà thôi, chưa thực sự sửa gì trên data gốc nằm ở máy khác cả. UpdateBath sẽ thực sự sửa trên máy chủ cho tương tự bản nháp trên máy của bạn.

Hiển nhiên với cách ập cả file lên máy chủ như thế thì chỉ dùng được trong mạng nội bộ. Không dùng trên internet được.
Trên internet chỉ update từng record thôi.

Dông dài như vậy để bạn lưu ý xu thế .net hiện nay. Nên thiết kế theo hướng đó.
Nên tập tành làm web ngay từ bây giờ. Vì nó cũng vẫn dùng cho mạng nội bộ được.

..giải lao ...chút nữa viết tiếp..
 

juariaii

New Member
Hi hi, Thank các bạn đã chỉ bảo. Thực ra cái gì em cũng đọc nhưng bất sâu và bất có hệ thống nên đôi lúc gặp khó khăn. Vấn đề em đang thắc mắc là cùng 1 code đấy kết nối với data là access thì nó cho chỉnh sửa luôn nhưng chỉ thay dòng lệnh connection của Jet bẳng SQL thì nó lại bất cho chỉnh sửa tí gì (gõ vào cũng bất được nhé bác, chứ đừng nói gì đến update) mặc dù vừa vào Enterprice manager để permission tất cả (select, update, delete)
 
SQL nếu khi cài lấy default của nó là IDuser = "SA" thì đây là ông trùm toàn quyền rồi.
Do đó khi bạn connect vào data với tên đó thì sẽ làm trùm, muốn gì cũng được. Không cần mở SQL server lên set lại nữa.

Cái sample của access+SQL2000 nằm trong bộ Office 2003.
Chạy setup và chọn add/remove feature ...
Trong mục bảng custom kế tiếp đánh dấu chọn []Choose advanced ...
Trong bảng kế tiếp chọn mục Access / Sample data thì chọn Run all my computer

Kể cả với Access+Access thì vẫn nên tập code hơn là dùng chuột click and click ...
Vì với những ngôn ngữ, phần mềm khác bất có giao diện tương tự như vậy thì sao bạn làm?
Không thể sống đời với duy nhất một Phần mềm hay ngôn ngữ đâu.
Làm lập trình rốt cuộc rồi cũng phải biết tối thiểu 6-7 ngôn ngữ lập trình.

Nếu bất code mà lại click click để làm ra (tạo) chương trình thì trao đổi qua mạng sao được.
Không ai biết tại sao bạn bất làm được cả. Không mở file của bạn lên coi thì sao biết được?
Mà bạn kể lại hay chụp hình màn hình gửi lên cũng bất được.
Những khai báo nằm ở khung propecty của đối tượng nào bạn đâu nhìn thấy hết, mà cũng bất nhớ nó ở đâu nữa.

Nếu là code thì đọc từ trên xuống dưới cũng phải thấy nó chứ, phải không?
 
Hi, hi, chắc bác là programer chuyên nghề rồi, em là dân nghề dư chỉ dùng google để tự ngâm cứu thôi nên hạn chế nhiều lắm. Đây là đoạn code để connect và truy vấn dữ liệu(cái này em . mất cả ngày hôm nay mới làm được)Private Sub Form_Load()sqlstr = "select * from tbl_bangphong "Dim db As Connection Set db = New Connection db.CursorLocation = adUseClient ' Cau lenh ket noi sql db.Open "PROVIDER=MSDASQL;driver={SQL Server};server=(local);uid=sa;pwd=sa;database=qlns ;" Set adoPrimaryRS = New Recordset ' adoPrimaryRS.Open sqlstr, db, adOpenStatic, adLockOptimistic adoPrimaryRS.Open sqlstr, db, dbOpenDynaset, dbSeeChangesSet Me.Form.Recordset = adoPrimaryRSEnd Sub các bạn thử xem nó chưa ổn chỗ nào giúp em nhé.Ah, mà em update office2003 chỉ có file Northwind thôi làm gì có cái nào dính với SQL đâu nhỉPS: 2 bac phatnq và muontennguoi co YM bất cho em 1 cái để liên lạc cho tiện, nhiều khi post bài bất biết bao giờ mới được trả lời
 

Các chủ đề có liên quan khác

Top