AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.11.2009, 14:49   #1  
Yakuza is offline
Yakuza
Участник
 
124 / 10 (1) +
Регистрация: 26.10.2004
Есть задача при учете документа влезать в отдельную MySQL базу забирать оттуда информацию и посылать письмо. Каким средством можно обратиться к базе ? Может какой Automation есть ?
Старый 18.11.2009, 16:16   #2  
romeo is offline
romeo
Участник
Аватар для romeo
 
564 / 10 (2) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Yakuza Посмотреть сообщение
Есть задача при учете документа влезать в отдельную MySQL базу забирать оттуда информацию и посылать письмо. Каким средством можно обратиться к базе ? Может какой Automation есть ?
На скуле не проще создать объект, "смотрящий" на объект MySQL? А в навижене под него сделать Linked таблицу..
Старый 19.11.2009, 10:06   #3  
Yakuza is offline
Yakuza
Участник
 
124 / 10 (1) +
Регистрация: 26.10.2004
Цитата:
Сообщение от romeo Посмотреть сообщение
Цитата:
Сообщение от Yakuza Посмотреть сообщение
Есть задача при учете документа влезать в отдельную MySQL базу забирать оттуда информацию и посылать письмо. Каким средством можно обратиться к базе ? Может какой Automation есть ?
На скуле не проще создать объект, "смотрящий" на объект MySQL? А в навижене под него сделать Linked таблицу..
У меня вторая версия с Native-базой, там все топорно.
Старый 19.11.2009, 10:35   #4  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
По технологии 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  
Yakuza is offline
Yakuza
Участник
 
124 / 10 (1) +
Регистрация: 26.10.2004
Вот спасибо ! Буду пробовать.
Старый 19.11.2009, 17:20   #6  
Yakuza is offline
Yakuza
Участник
 
124 / 10 (1) +
Регистрация: 26.10.2004
Удалось законнектиться. Но получить значение из поля не удается. Не принимает синтаксис такое: переменная := 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  
InTacto is offline
InTacto
Участник
Аватар для InTacto
 
323 / 11 (1) +
Регистрация: 09.08.2005
ок, спасибо за поправку
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 01:34.