Chức năng import
Phạm vi áp dụng
✅ Bravo 8 · ✅ Bravo 10
Ý nghĩa
Import dữ liệu từ file bảng tính vào Bravo.
| Định dạng hỗ trợ | xls, xlsx, csv, tsc — thêm xlsm, xlsb từ v5.1.0.1 |
| Hỗ trợ từ | V4.1.1.0 |
Hai chế độ import
| Từ màn hình | Cơ chế |
|---|---|
| DataExplorer | Import trực tiếp vào CSDL thông qua CommandKey khai báo cho lệnh New |
| DataEditor | Import vào DataSet đang cập nhật của form — chế độ này cho phép import vào 1 bảng bất kỳ, không cần theo cây dữ liệu khai báo |
Bản chất
Import = mô phỏng thao tác người dùng
Bản chất của việc import là thực hiện lần lượt các thao tác tương tự như khi người dùng
F2→ nhập thông tin → ấn Lưu.Nên việc thực hiện các Eval, kiểm tra Validator, binding, lookup… được thực hiện tuần tự lần lượt đúng theo cơ chế khi người dùng thao tác thêm mới.
→ Hết sức lưu ý việc sắp xếp trình tự các cột ở file Excel và lựa chọn các cột dữ liệu ở bảng mẹ / bảng con.
Những gì bị bỏ qua khi import
Warning
- Các evaluator có scopeType =
CurrentView,CurrentRowView- Các evaluator trong AfterCommit
- Tất cả BravoAddRowEvaluator thêm dòng cho bảng đang import (từ Ver 4.1.6.1)
- BravoTableAggregator với
scopeType=CurrentViewkhông có tác dụng khi import
Tham số tự động
Hỗ trợ tham số để tự động mở file, thiết lập và thực hiện import ngay khi mở form:
<TableName|AliasName>=<"FileName">;
<ImportSetting>=<"FileName"|ImportSettingXmlString>;
AutoRun=<True|False>;
ValidateOnly=<True|False>;
IgnoreWarning=<True|False>;
AutoClose=<CloseForm|ExitProgram|ShutdownComputer>;
Note
File
*.bravoimportsettingsthay đổi cấu trúc lưu thông tin thiết lập so với Bravo 7.
zImportCtorArgs (từ v4.2.2.0)
Cho phép mở luôn hộp thoại chọn file hoặc khai báo mặc định chọn luôn file import.
Ví dụ — thêm LinkCommand import nhanh trong Editor PX
DataSource:
<Eval_ImportExcel>
<ClassName>BravoCommandKey</ClassName>
<CommandKey>Import</CommandKey>
<zCtorArgs>Ct0="C:\...\Import PX.xlsx";ImportSetting="<root>...</root>";</zCtorArgs>
</Eval_ImportExcel>Layout:
<Item_ImportExcel>
<Text>
<Vietnamese>Import Excel</Vietnamese>
</Text>
<Execute>
<Eval_ImportExcel />
</Execute>
</Item_ImportExcel>Mở hộp thoại chọn file
Khai báo
<zCtorArgs>Ct0="?";</zCtorArgs>→ sẽ mở màn hình chọn file import khi bấm vào tính năng Import.
Merge dòng trùng thay vì thêm mới
Hỗ trợ khai báo zSourceValueMember và zTargetValueMember trong thiết lập import.
Cách làm: lưu file Import setting → mở file này → thêm thẻ:
<Ct0>
<zSourceValueMember>tên cột Excel</zSourceValueMember>
<zTargetValueMember>Cột trong bảng Ct0 để check giá trị trùng</zTargetValueMember>
</Ct0>→ Khi Import: nếu bảng đã có giá trị thì không import thêm dòng, chỉ import các dòng chưa có.
Lịch sử phiên bản
| Version | Thay đổi |
|---|---|
| 4.1.9.0 | Lọc dữ liệu import theo trạng thái (lỗi, không lỗi, lỗi dạng cảnh báo) |
| 4.2.9.0 | Đổi nút Kiểm tra / Import; thêm tùy chọn “Không ghi nhật ký dữ liệu” để ưu tiên tốc độ. ⚠️ Chương trình dùng giá trị 0x55555 để bypass trigger log → hết sức cẩn thận khi viết trigger của bảng |
| 4.3.0.1 | Khi lọc dòng lỗi và lưu ra Excel: thêm cột ngoài cùng bên phải chứa toàn bộ thông tin lỗi; tại các ô thì lỗi thể hiện ở chú thích ô |
| 4.5.6.1 | Hỗ trợ import ảnh từ file Excel — ảnh phải đính kèm với một ô, ảnh dạng float bị bỏ qua |
| 4.6.5.1 | Import mã trong cột lookup có HiddenValueMember=Id; giới hạn dòng import theo cú pháp a-b,h-m,t…; tùy chọn đóng form import sau khi hoàn thành; danh sách thiết lập sắp xếp theo thời gian cập nhật mới nhất |
| 5.1.0.1 | Hỗ trợ thêm xlsm, xlsb |
Thao tác
Chọn trường tương ứng cho cột
Click vào tiêu đề cột để show ra các trường trong bảng CSDL. Có thể tìm kiếm theo tên cột hoặc caption khai báo trong layout. Ấn
ESCđể thoát màn hình chọn cột.
Về việc tách layout khi import
Do cơ chế B8 tách khai báo sự kiện vào DataSource (layout chỉ hiển thị, DataSource là duy nhất trên một form), việc tách các layout trong quá trình import chỉ có ý nghĩa hiển thị, lookup, binding.
Trường hợp cần thay đổi khai báo DataSource khi import mà không muốn ảnh hưởng việc nhập liệu → tạo command riêng.
Liên quan
RowImported · allowEditingMultiCells · BravoCommandKey · zCtorArgs · Bắt đầu với Explorer