18.11.2009, 14:49 | #1 |
Участник
|
Есть задача при учете документа влезать в отдельную MySQL базу забирать оттуда информацию и посылать письмо. Каким средством можно обратиться к базе ? Может какой Automation есть ?
|
|
18.11.2009, 16:16 | #2 |
Участник
|
На скуле не проще создать объект, "смотрящий" на объект MySQL? А в навижене под него сделать Linked таблицу..
|
|
19.11.2009, 10:06 | #3 |
Участник
|
|
|
19.11.2009, 10:35 | #4 |
Участник
|
По технологии ADO
Объявляем следующие переменные Name DataType Subtype Length db Automation 'Microsoft ActiveX Data Objects 6.0 Library'.Connection rs Automation 'Microsoft ActiveX Data Objects 6.0 Library'.Recordset cs Automation 'Microsoft ActiveX Data Objects 6.0 Library'.Command Код такой. Код: Create(db) db.Open('ODBC;DATABASE=' + название базы + ';DSN=MySQL51;OPTION=0;PWD=' + Пароль + ';PORT=3306;SERVER=' + имя сервера + ';UID=' + логин + ';') //db.ConnectionString вернет потом вот что: Provider=MSDASQL.1;Extended Properties="DATABASE=моя_база_данных;DSN=имя_КОННЕКТОРА; //OPTION=0;PWD=пароль;PORT=порт;SERVER=адрес_сервера;UID=логин" create(rs) rs.ActiveConnection = db create(cs) cs.ActiveConnection = db cs.CommandText = 'SELECT * FROM plvendors;' //здесь SQL запрос rs = cs.Execute while rs.EOF do begin // на счет этого не уверен, т.к. код из vba переменная := rs!vendorname // рекордсет и имя поля - возвращает значение rs.MoveNext end db.Close |
|
19.11.2009, 10:36 | #5 |
Участник
|
Вот спасибо ! Буду пробовать.
|
|
19.11.2009, 17:20 | #6 |
Участник
|
Удалось законнектиться. Но получить значение из поля не удается. Не принимает синтаксис такое: переменная := rs!vendorname; Пробовал и rs.vendorname..... Как получить значение ?
Нашел: переменная := FORMAT(rs.Fields.Item('vendorname').Value); И в примере NOT пропущено в цикле считывания. Вот окончательный работающий вариант: Код: CREATE(db); db.Open('ODBC;DATABASE=имябазы;PWD=пароль;SERVER=имясервера;uid=логин;DSN=созданныйDSN'); CREATE(rs); rs.ActiveConnection := db; CREATE(cs); cs.ActiveConnection := db; cs.CommandText := 'SELECT * FROM таблица;'; // SQL запрос rs := cs.Execute; WHILE NOT rs.EOF DO BEGIN ABC := FORMAT(rs.Fields.Item('имяколонки').Value); // получаем значение в виде текста rs.MoveNext; END; db.Close; |
|
24.11.2009, 11:38 | #7 |
Участник
|
ок, спасибо за поправку
|
|