Файл = "C:\files\demo.mdb" ; //СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Файл + "; Extended Properties=""Excel 8.0;HDR=NO;"""; СтрокаПодключения = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Файл + ";"""; Connection = Новый COMОбъект("ADODB.Connection"); Попытка Connection.Open(СтрокаПодключения); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; Command = Новый COMОбъект("ADODB.Command"); Command.ActiveConnection = Connection; Command.CommandText = "S_elect * FROM Table1"; Command.CommandType = 1; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = Command.Execute(); стр =""; Пока RecordSet.EOF() = 0 Цикл для н=0 по Recordset.Fields.Count -1 цикл стр = стр + " " + Recordset.Fields(н).Value; КонецЦикла; Сообщить(стр); стр =""; RecordSet.MoveNext(); КонецЦикла; RecordSet.Close(); Connection.Close();
Акцесс = СоздатьОбъект("ADODB.CONNECTION"); Попытка СтрокаПодключения="Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mybase.mdb;Uid=Admin;Pwd="; Акцесс.Open(СтрокаПодключения); Исключение Сообщить("Все плохо:"+ОписаниеОшибки()); Возврат; КонецПопытки; Команда = СоздатьОбъект("ADODB.Command"); Команда.ActiveConnection=Акцесс; ТекстСелект = "S_elect * FROM tblCustoms"; НаборЗаписей = СоздатьОбъект("ADODB.RecordSet"); Команда.CommandText=ТекстСелект; Попытка НаборЗаписей=Команда.Execute; Исключение Сообщить("Обломись:"+ОписаниеОшибки()); КонецПопытки; Попытка НаборЗаписей.MoveFirst(); Исключение //нет записей в рекордсете НаборЗаписей.Close(); Возврат; КонецПопытки; Пока НаборЗаписей.EOF()=0 Цикл ИНН = НаборЗаписей.Fields("INN").Value; //ну и т.д. НаборЗаписей.MoveNext(); КонецЦикла; НаборЗаписей.Close(); // Для тех, у кого в базе Акцесс создана рабочая группа (есть файлик mdw), строка подключения будет такая: СтрокаПодключения="Driver= Microsoft Access Driver (*.mdb)};systemDB=C:\wg.mdw;Dbq=C:\mybase.mdb;Uid=Admin;Pwd=";
Процедура Выполнить() //фасВладелец = СтрЗаменить(фасВладелец," ","_"); Спр = СоздатьОбъект("Справочник.ТоварыВПрайсе"); Спр.ИспользоватьВладельца(ФасВладелец); dbe = СоздатьОбъект("dao.DBEngine.36"); wksp = dbe.Workspaces(0); db = 0; Если ФС.СуществуетФайл(КаталогИБ()+"Pric_list.mdb")=0 Тогда // db = wksp.CreateDataBase(КаталогИБ()+"Pric_list.mdb",";LANGID=0x0419;Cp=1251;Country=0"); // db.Execute("Create table [" + Строка(фасВладелец) + "] |(Rec_ind integer, |Код text, |Артикул text, |Цена integer, |Товар text, |Единица text, |Val text);" ); db.Execute("Create index Rec_ind on ["+Строка(фасВладелец)+"] (Rec_ind);"); Иначе db= wksp.OpenDataBase(КаталогИБ()+"Pric_list.mdb"); Попытка rs = db.OpenRecordset(Строка(фасВладелец)); Исключение Сообщить("Создается новая таблица"); КонецПопытки; Если ПустоеЗначение(rs)= 1 Тогда db.Execute("Create table [" + Строка(фасВладелец) + "] |(Rec_ind integer, |Код text, |Артикул text, |Цена integer, |Товар text, |Единица text, |Val text);" ); db.Execute("Create index Rec_ind on ["+Строка(фасВладелец)+"] (Rec_ind);"); КонецЕсли; db.Execute("Delete * From ["+Строка(фасВладелец)+"];"); КонецЕсли; rs = db.OpenRecordset(Строка(фасВладелец)); Y = 1; Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл лсЕдиницы = ""; Если Спр.асТовар.апТип=Перечисление.ТипТовара.Услуга Тогда лсЕдиницы = ""; ИначеЕсли Спр.асТовар.апТип=Перечисление.ТипТовара.Весовой Тогда лсЕдиницы = "г"; ИначеЕсли Спр.асТовар.апТип=Перечисление.ТипТовара.Штучный Тогда лсЕдиницы = "шт."; КонецЕсли; Если Спр.ЭтоГруппа() = 0 Тогда rs.AddNew(); rs.Rec_ind = Y; rs.Код= Спр.асТовар.ПолныйКод(); rs.Артикул = Спр.асТовар.сАртикул; rs.Цена = Спр.чЦена; rs.Товар=Спр.асТовар.сПолнНаименование; rs.Единица = лсЕдиницы; rs.Val = Спр.асВалюта.Код; rs.Update(); Y=Y+1; КонецЕсли; КонецЦикла; db.Close(); Сообщить("Выгрузка завершена"); КонецПроцедуры
Процедура ACCESS() dbe=CreateObject("DAO.DBEngine.36"); wksp=dbe.Workspaces(0); db=0; // в ковычках имя фаила с расширением MDB Если ФС.СуществуетФайл(КаталогПользователя()+"sr.mdb")=0 Тогда // создание файла базы данных с русским порядком сортировки db=wksp.CreateDataBase(КаталогПользователя()+"mars_sr.mdb",";LANGID=0x0419;CP=1251;COUNTRY=0"); // DDL - запрос на создание таблицы // описание языка DDL (подмножество SQL) смотрите в хелпе по MS Access // не пытайтесь делать это с другими форматами - DDL через DAO поддерживается только для MDB //Создадим еще таблицу db.Execute("CREATE TABLE BANKS |(REC_IND INTEGER, |BANKCODE INTEGER, |BANKNAME TEXT , |ModifiedFlg BIT, |ChangeSeqFlg BIT);" ); // индекс на нужные поля db.Execute("CREATE INDEX REC_IND ON BANKS (REC_IND);"); Иначе // просто открываем базу данных в разделенном режиме db=wksp.OpenDataBase(КаталогПользователя()+"sr.mdb"); // и очищаем имеющиеся данные db.Execute("DELETE * FROM BANKS;"); КонецЕсли; // rs-это как раз сама таблица, куда мы будем добавлять записи rs=db.OpenRecordset("BANKS"); // добавление записи rs.AddNew(); // присвоение значений полям rs.REC_IND = "1"; rs.BANKCODE = "34"; rs.BANKNAME = "Инвест"; rs.ModifiedFlg = "1"; // запомним запись rs.Update(); // и так далее ... db.Close(); // закрытие базы данных КонецПроцедуры