2012-02-09 40 views
7

Tôi cần chuyển macro dữ liệu Access từ db thử nghiệm sang db sản xuất của mình. Ai biết làm thế nào để làm điều đó?cách xuất macro dữ liệu Access 2010

Tôi biết rằng việc chuyển bảng từ accdb này sang accdb khác cũng sẽ chuyển macro dữ liệu, nhưng đó không phải là một tùy chọn trong trường hợp của tôi. Tôi cũng biết tôi có thể tạo lại chúng theo cách thủ công trong accdb sản xuất, nhưng điều đó khiến tôi mở lỗi và yêu cầu lấy cơ sở dữ liệu sản xuất trong một thời gian lâu hơn so với kịch bản chuyển giao kịch bản.

Nếu tôi chỉ phải làm điều này một khi nó sẽ không được như vậy lớn, nhưng tôi sẽ cần phải làm điều đó nhiều lần trong quá trình một dự án phát triển.

Tôi đã thử xuất các bảng thành xml, nhưng các macro dữ liệu không được bao gồm.

Xin lưu ý rằng tôi hỏi về Access 2010 macro dữ liệu tại đây, không phải macro truy cập thông thường.

Trả lời

3

Tôi không có câu trả lời hay ở đây.

Tuy nhiên, trước đây tôi thường tạo "nhật ký" về các thay đổi đối với bảng và sau đó được sử dụng đơn giản trên trang web.

Lưu ý rằng bạn có thể cắt + dán mã macro. Và mã tiết kiệm dưới dạng XML.

Ví dụ, điều này sau khi bảng cập nhật cò trông như thế này trong Access:

enter image description here

Nếu bạn cắt ra ở trên (ctrl-a, ctrl-cc) ,, sau đó bạn có thể dán vào Một cuốn sổ tay. Trong thực tế, bạn thậm chí có thể dán/mở nó trong visual studio hoặc bất kỳ trình soạn xml, và bạn thấy điều này:

enter image description here

Vì vậy, bạn có thể cắt + dán ra khỏi những macro.

Như đã lưu ý, do đó trong quá khứ tôi thường giữ "nhật ký" về các thay đổi.

Vì vậy, nếu tôi đang làm việc ngoài trang web và tôi đã sửa đổi 2 mô-đun mã, 4 biểu mẫu và 2 báo cáo, thì tôi đã có một ít nhật ký thay đổi. Tôi sẽ gõ vào tờ này những gì đối tượng đã được thay đổi.

Khi tôi lên trang web, sau đó tôi lướt nhanh vào trang tính đó và tôi biết nhập 3-5 đối tượng và quá trình nhập đó chỉ dài vài phút.

Tuy nhiên, với trình kích hoạt bảng và thủ tục lưu trữ, bạn có thể có nhiều hơn thì chỉ cần một vài thao tác sao chép.

tôi hoặc là sẽ làm một trong hai điều:

Sử dụng ý tưởng log và

a) Un-xuất bản phiên bản phát triển và mang lại điều đó với tôi vào trang web làm việc của bạn. Sau đó bạn nhập biểu mẫu, báo cáo mới, v.v. Đối với mã trình kích hoạt, bạn cắt + dán giữa hai ứng dụng.

b) Khi bạn thực hiện thay đổi đối với trình kích hoạt, sau đó cắt + dán vào tài liệu ghi chú và đặt chúng vào một thư mục. Khi trên trang web, chỉ cần lấy mỗi notepad, cắt + dán vào sản xuất và sau đó di chuyển hoặc sao chép các mục notepad vào một thư mục "thực hiện".

Ở trên chắc chắn ít hơn lý tưởng. Sau đó, một lần nữa trong quá khứ tôi không luôn luôn có mã để kịch bản ra một sự thay đổi bảng, và bằng cách sử dụng một bảng đăng nhập ít làm việc khá tốt.

Vì vậy, trong quá khứ tôi thường chỉ viết ra rằng bảng như vậy đã được sửa đổi và tôi phải thêm cột như vậy và như vậy.

Vì vậy, nó thực sự là lựa chọn của bạn là nếu bạn muốn cắt + dán mã vĩ mô dưới dạng xml thành các tài liệu nhỏ riêng biệt, hoặc cắt + dán ngay từ khi phát triển vào sản xuất.

Tôi nghĩ nếu bạn làm việc ở vị trí khác, thì tôi nghĩ rằng có thể tốt nhất để hủy xuất bản phiên bản phát triển và mang nó theo bạn (tôi giả sử bạn biết/realaize rằng bạn có thể tạo một bản sao chưa xuất bản một ứng dụng web).

Vì vậy, các biểu mẫu, mô-đun mã, v.v ... chỉ có thể được nhập dễ dàng (bạn xóa biểu mẫu v.v. và chỉ cần nhập từ bản sao chưa xuất bản đó).

Tuy nhiên, đối với mã bảng? Bạn phải cắt + dán từ bản sao chưa được xuất bản đó một lần vào một số khu vực dàn dựng, hoặc như được cắt + dán giữa các ứng dụng.

Có khả năng văn bản lưu dưới dạng có thể hoạt động ở đây, nhưng tôi chưa có thời gian để nấu một giải pháp tốt hơn.

Chỉnh sửa: Bằng cách này, ở trên tôi đã giả định một cơ sở dữ liệu dịch vụ web, nhưng lời khuyên vẫn áp dụng cho cơ sở dữ liệu không truy cập web.

+0

Cảm ơn thời gian của bạn và tất cả chi tiết về Albert. Thông tin XML thực sự hữu ích. Ngoài ra Ctrl-C, Ctrl-V cũng hoạt động rất tốt. Dựa trên danh tiếng của bạn, tôi đang coi đây là câu trả lời phúc âm. Cảm ơn một lần nữa – unrazzle

6

Bạn có thể muốn thử một cặp chức năng VBA không có giấy tờ

Để xuất:

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml" 

Để nhập:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml" 
4

Mở rộng trên Martijn Pieters'/Lanik của câu trả lời (nhờ Martijn và Lanik), tôi đã có nhu cầu tạo hầu như các macro dữ liệu trên 28 bảng khác nhau, với một AfterInsert, AfterUpdate, AfterDelete và macro dữ liệu được đặt tên trên mỗi bảng. Vì vậy, tôi đã sử dụng lệnh SaveAsText

SaveAsText acTableDataMacro, "TableName", "C: \ PathToFile \ DataMacro.xml"

để tạo ra một khuôn mẫu, sau đó sử dụng mẫu đó để tạo ra 28 xml tập tin qua một mã vba nhỏ, thay thế tên bảng, khóa chính, v.v. Tôi cũng đã tạo 28 lệnh LoadFromText. Sau đó tôi có thể sử dụng các lệnh LoadFromText để tải tất cả các macro cùng một lúc, với một quá trình lặp lại. Bây giờ tôi đã thực hiện kiểm tra, tôi có thể nhanh chóng cập nhật cơ sở dữ liệu sản xuất theo cách này hoặc thêm cùng một macro dữ liệu vào các bảng khác một cách dễ dàng.

Vì vậy, những người khác biết, LoadFromText sẽ ghi đè bất kỳ macro nào trước đây, điều này thật tuyệt vời vì tôi không có mẫu của tôi chính xác trong lần thử đầu tiên.

Với bước trên, bước tiếp theo là để ứng dụng cơ sở dữ liệu 'cập nhật' của bạn sử dụng lệnh DoCmd.TransferDatabase để truyền mô-đun với hàm/phụ với tất cả lệnh LoadFromText vào dữ liệu .accdb. Nó cũng sẽ chuyển một macro để chạy hàm/phụ. Tôi đã cố gắng có updater của tôi sau đó thực hiện các macro để tải các macro dữ liệu, nhưng bảo mật truy cập ngăn chặn điều đó. vì vậy, bạn có thể cần phải để người dùng của bạn mở cơ sở dữ liệu và kích hoạt nó, sau đó chạy macro.Điều này phức tạp hơn sau đó nếu chúng ta có thể chỉnh sửa trực tiếp các macro dữ liệu, nhưng cung cấp giải pháp khắc phục sự cố.

+0

Câu trả lời xuất sắc. Tôi đang gặp sự cố khi sử dụng mã 'SaveAsText acTableDataMacro' của bạn và [Tôi đã đăng câu hỏi ở đây] (http://stackoverflow.com/questions/31755802/can-i-use-access-vba-to -determine-if-a-table-có-một-dữ liệu-vĩ mô). –

0

Tôi gặp vấn đề tương tự khi không thể tìm thấy macro chính xác để xuất ở định dạng xml. Tuy nhiên tôi đã có thể nhấp chuột phải vào truy vấn của tôi và xuất khẩu sang xml theo cách đó vì vậy tôi biết nó là có thể.

Tuy nhiên tôi muốn nó chạy từ một nút và tôi tìm thấy một cách đơn giản để làm điều này mà không cần viết bất kỳ mã vba nào.

Trước tiên, bạn cần xuất bảng hoặc truy vấn theo cách thủ công bằng cách nhấp chuột phải vào bảng hoặc truy vấn của bạn và chọn xuất và chọn xml làm loại tệp. Cuối cùng, bạn có thể lưu các bước xuất, chỉ cần đánh dấu vào ô để lưu các bước và cung cấp cho các bước xuất một tên thích hợp. Một khi bạn đã làm điều này, bạn có thể chạy các bước xuất khẩu thông qua một macro bằng cách sử dụng hành động RunSavedImportExport. Chỉ cần chọn tên của xuất đã lưu mà bạn đã tạo khi bạn xuất thủ công. Công việc hoàn thành. Hy vọng điều này sẽ giúp người khác.

+2

FYI: Các macro dữ liệu không được bao gồm trong XML - Tôi vừa thử nó trên Access 2013. – HarveyFrench

0

Nhấp chuột phải vào macro và chọn Export rồi chọn cơ sở dữ liệu để nhận macro.

+0

Tôi biết rằng nó hoạt động với các macro thông thường được liệt kê trong ngăn dẫn hướng, nhưng nó cũng áp dụng cho macro dữ liệu, ví dụ, trước thay đổi, Sau khi chèn, ...? (Tôi không nghĩ vậy.) –

Các vấn đề liên quan