![]() |
![]() |
![]() |
|
Как можно прочитать файл mdb (MS Access)? | ☑ | ||
---|---|---|---|---|
0
YauheniL
07.12.09
✎
23:18
|
Столкнулся с необходимостью читать данные из Аксесс. Можно ли такое сделать в 1С? Киньте парой строчек примера, плиз
|
|||
1
Rie
07.12.09
✎
23:18
|
(0) Можно. Через ADO.
|
|||
2
shuhard
07.12.09
✎
23:19
|
(0) MyCon = Новый COMОбъект ("ADODB.Connection");
MyCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\1c_common\Реальный_сектор\TEL_BASE2006.MDB"); MyRst = Новый COMОбъект ("ADODB.Recordset"); MyStr = "select * from zdania where NOM_REG_VI=1 and id_predpr=1 and id_ik=1 and id_zdan=1"; MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic Сообщить("До->"+Строка(MyRst.Fields("Resultat").Value)); MyRst.Fields("Resultat").Value="Киргуду"; // Присвоение MyRst.Update(); //Запись Сообщить("После->"+Строка(MyRst.Fields("Resultat").Value)); MyRst.Close(); MyCon.Close(); |
|||
3
YauheniL
07.12.09
✎
23:20
|
(2) Нужно ли иметь Acess на компе? Или достаточно драйвера ODBC?
|
|||
4
vde69
07.12.09
✎
23:22
|
http://infostart.ru/public/57426/
// // Функция получает таблицу из базы аксесса // Функция ПолучитьТаблицуАкцесса (Подключение, ИмяТаблици) Результат = СоздатьОбъект("ТаблицаЗначений"); Результат.Очистить(); Команда = СоздатьОбъект("ADODB.Command"); Команда.ActiveConnection=Подключение; ТекстСелект = "SELECT * FROM " + ИмяТаблици; НаборЗаписей = СоздатьОбъект("ADODB.RecordSet"); Команда.CommandText=ТекстСелект; Попытка НаборЗаписей=Команда.Execute(); Исключение Сообщить(ОписаниеОшибки()); Возврат -1; КонецПопытки; // надо создать колонки Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл Результат.НоваяКолонка(СокрЛП(НаборЗаписей.Fields(е).Name)); КонецЦикла; Попытка НаборЗаписей.MoveFirst(); Исключение //нет записей в рекордсете НаборЗаписей.Close(); Возврат Результат; КонецПопытки; НаборЗаписей.MoveFirst(); Пока НаборЗаписей.EOF() = 0 Цикл // тут имеем строку записи //ОбработкаПрерыванияПользователя(); Состояние("Идет чтение таблицы <" + ИмяТаблици + "> - " + Обмен_Индикатор(Счетчик, МаксСчетчик)); Результат.НоваяСтрока(); Стр = ""; Для е = 0 по (НаборЗаписей.Fields.Count - 1) Цикл Результат.УстановитьЗначение(Результат.КоличествоСтрок(), СокрЛП(НаборЗаписей.Fields(е).Name), НаборЗаписей.Fields(е).Value); Если ВыводитьДанныеВСтрокуСообщений=1 Тогда Стр = Стр + "; " + НаборЗаписей.Fields(е).Name + "=" + НаборЗаписей.Fields(е).Value; КонецЕсли; КонецЦикла; Если ВыводитьДанныеВСтрокуСообщений=1 Тогда Сообщить (Стр); КонецЕсли; НаборЗаписей.MoveNext(); КонецЦикла; НаборЗаписей.Close(); Возврат Результат; КонецФункции // ******************************* // пример вызова // // // подключаемся // СтрокаПод="Driver={Microsoft Access Driver (*.mdb)};Dbq=" + ИмяФайла + ";"; Акцесс = СоздатьОбъект("ADODB.CONNECTION"); Попытка Акцесс.Open(СтрокаПод); Исключение Сообщить(ОписаниеОшибки()); Возврат; КонецПопытки; // // получем таблицу с именем "Номенклатура" // ТабСпр = ПолучитьТаблицуАкцесса (Акцесс, """Номенклатура"""); |
|||
5
shuhard
07.12.09
✎
23:22
|
(3) не путай ODBC и OLEDB
Access не обязательно |
|||
6
shuhard
07.12.09
✎
23:23
|
(4) код часом не от 7.7 ?
|
|||
7
vde69
07.12.09
✎
23:24
|
(6) 7.7 а какая разница? переделка 2-3 минуты
|
|||
8
YauheniL
07.12.09
✎
23:25
|
Спасибо, буду лопатить
|
|||
9
shuhard
07.12.09
✎
23:26
|
(8) лапать, MDAC свежий не забудь
|
|||
10
YauheniL
07.12.09
✎
23:27
|
(9) MDAC -- was ist das?
|
|||
11
shuhard
07.12.09
✎
23:28
|
(10) das ist wunderschone SDK
|
|||
12
YauheniL
07.12.09
✎
23:29
|
(11) Без SDK не взлетит?
|
|||
13
vde69
07.12.09
✎
23:31
|
(12) в нем драйвера, для аксесса можно установить DAO 3.5 (3.6)
|
|||
14
shuhard
07.12.09
✎
23:33
|
(12) MDAC качается и ставиться автономно,если в лом ставить офис.
можешь последовать совету vde и юзать DAO |
|||
15
vde69
07.12.09
✎
23:39
|
(14) DAO - маленький, примерно 500к, а мкдак - здоровенный :)
можно просто чисто драйвер аксесовский юзать, а можно вообще универсальным драйвером АДО (там вообще ничего доставлять не надо)... |
|||
16
shuhard
07.12.09
✎
23:57
|
(15)[DAO - маленький, примерно 500к]
это так, но многое, что есть в ADOX, через DAO делается "сложнее" через TableDef |
|||
17
YauheniL
15.12.09
✎
09:31
|
Не совсем по теме, но очень близко: как мне посмотреть в MS Access ключи таблиц и связи между ними? Спрашиваю, т.к. это мой первый опыт с MS Access
|
|||
18
YauheniL
15.12.09
✎
18:34
|
^
|
|||
19
Живой Ископаемый
15.12.09
✎
18:39
|
2(17) только если в файле нарисована схема...
|
|||
20
YauheniL
15.12.09
✎
18:41
|
(19) А ключи же должны храниться? Схемка-то Бог с ней -- сам накидаю. Мне бы в связи таблиц разобраться
|
|||
21
Joint
15.12.09
✎
18:44
|
так ключи это поля, сервис - схема данных
|
|||
22
los_hooliganos
15.12.09
✎
18:51
|
(21) нет, ключи это индексы.
кто прав?))) |
|||
23
shuhard
15.12.09
✎
18:51
|
(21)[нет, ключи это индексы]
ты про внешние или про внутренние ? |
|||
24
Joint
15.12.09
✎
18:52
|
||||
25
los_hooliganos
15.12.09
✎
18:52
|
(23) допустим внутренний праймари.
|
|||
26
Joint
15.12.09
✎
18:53
|
да пофигу, поля они и есть поля, хоть задницей назови
|
|||
27
shuhard
15.12.09
✎
18:53
|
(25) [допустим внутренний праймари]
а челу нужно внешние |
|||
28
los_hooliganos
15.12.09
✎
19:00
|
(27) а... ну тогда понятно.
|
|||
29
Joint
15.12.09
✎
19:02
|
http://alibek09.narod.ru/vb/articles/dba/
Коллекция Relations определяет отношения между объектами БД |
|||
30
YauheniL
15.12.09
✎
21:05
|
Спасибо, добрые люди
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |