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ìnhCơ chế
DataExplorerImport trực tiếp vào CSDL thông qua CommandKey khai báo cho lệnh New
DataEditorImport 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

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 *.bravoimportsettings thay đổ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="&lt;root&gt;...&lt;/root&gt;";</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

VersionThay đổi
4.1.9.0Lọ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.1Khi 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.1Hỗ 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.1Import 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.1Hỗ 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