Пример - получение таблицы c сайта из базы данных MySQL в диалог ARCHICAD
Сформируем диалог, который покажет таблицу из большой таблицы из базы данных MySQL.
Параметры подключения:
Сервер IP - 31.41.196.220 (или можно указать имя сервера)
Имя пользователя - u0490570
Пароль пользователя - hP2uH9fdsaY2zpA5eA4
Имя базы данных (схемы) - u0490570
Номер порта для подключения (обычно) - 3306;
int iListBox_MD, iButton_Ok_MD;
int iTable_MD;
int iDialog_MD;
int main()
{
int iMySQL;
object("create", "ts_dbmysql", iMySQL);
int ires;
ires = ts_dbmysql(iMySQL, "connection_init");
if (ires != 0) {
return -1;
}
cout << "init success\n";
string server = "31.41.196.220";
string user = "u0490570";
string password = "hP2uH9fdsaY2zpA5eA4";
string basename = "u0490570"; // scheme
int port = 3306;
ires = ts_dbmysql(iMySQL, "connection_open", server, user, password, basename, port);
if (ires != 0) {
return -1;
}
cout << "connection success\n";
// Query
// string query = "SELECT * FROM u0490570_nsi.labpp_mat_table WHERE labpp_mat_short_text = \'Материал м² 2\'";
// string query = "SELECT * FROM u0490570_nsi.labpp_mat_table WHERE labpp_mat_short_text LIKE \'%м²%\'";
string query = "SELECT * FROM u0490570.my_table";
int j = 0;
ires = ts_dbmysql(iMySQL, "real_query", query);
if (ires != 0) {
return -1;
}
cout << "query success\n";
ires = ts_dbmysql(iMySQL, "store_result");
if (ires != 0) {
return -1;
}
cout << "store result success\n";
ires = ts_dbmysql(iMySQL, "get_num_fields");
cout << "num fields = " << ires << "\n";
int count;
ires = ts_dbmysql(iMySQL, "get_row_count",count);
cout << "row count = " << count << "\n";
int iTable;
object("create", "ts_table", iTable);
ts_dbmysql(iMySQL, "export_to_table", iTable);
ts_dbmysql(iMySQL, "free_result");
ts_dbmysql(iMySQL, "connection_close");
object("delete", iMySQL);
// Create Dialog
int x, y, w, h, offset;
object("create", "ts_dialog", iDialog_MD);
ts_dialog(iDialog_MD, "init_dialog", "palette", 0, 0, 350, 400);
ts_dialog(iDialog_MD, "set_as_main_panel");
ts_dialog(iDialog_MD, "SetGrowType", 3);
ts_dialog(iDialog_MD, "SetTitle", "Наменования материалов для заказчика");
object("create", "ts_dialogcontrol", iListBox_MD, "iListBox_MD");
ts_dialogcontrol(iListBox_MD, "init_control", "singlesellistbox", iDialog_MD, 5, 5, 340, 350, 48, 20);
ts_dialogcontrol(iListBox_MD, "SetAnchorToPanelResize", 0, 0, 1, 1);
ts_table(iTable, "set_columns_width_when_export", 100);
ts_table(iTable, "mapping_columns_to_export",
"id", "№", "",
"_IDRRef","Идентификатор","",
"_Description","Наименование для заказчика", "",
"_ParentIDRRef","Идентификатор родителя", ""
);
ts_table(iTable, "export_to_dialogcontrol", iListBox_MD, -1, -1);
x = 10;
w = 98;
int delta = 10;
x = x + w + delta;
y = 370;
h = 20;
x = x + w + delta;
object("create", "ts_dialogcontrol", iButton_Ok_MD, "iButton_Ok_MD");
ts_dialogcontrol(iButton_Ok_MD, "init_control", "button", iDialog_MD, x, y, w, h);
ts_dialogcontrol(iButton_Ok_MD, "eventreaction", "Event_ButtonClicked", "Event_ButtonClicked_MD");
ts_dialogcontrol(iButton_Ok_MD, "settext", "Ok");
ts_dialogcontrol(iButton_Ok_MD, "SetAnchorToPanelResize", 1, 1, 0, 0);
bool bres;
ts_dialog(iDialog_MD, "invoke", bres);
//<-
object("delete", iTable);
}
int Event_ButtonClicked_MD(int iDescr, string sDescr)
{
if (sDescr == "iButton_Ok_MD") {
ts_dialog(iDialog_MD, "SendCloseRequest");
}
}