Имя: Пароль:
1C
1C 7.7
v7: Чтение mdb
0 povar
 
13.03.14
06:56
Хочу прочитать файл access, делаю примерно так
Акцесс = CreateObject("DAO.DBEngine.36");
Акцесс.SystemDB ="C:\Gate.mdw";              
Акцесс.DefaultUser = "admin";
Акцесс.DefaultPassword = "";
ВС = Акцесс.Workspaces(0);
ДБ = ВС.OpenDatabase("C:\n140224.mdb");

Ошибка следующая: DAO.DbEngine: Недопустимое имя ученой записи или пароль

Дело в пароле или еще где собака порылась ?
1 povar
 
13.03.14
10:00
куда все спецы подевались ?
2 Смотрящий от 1С
 
13.03.14
10:34
http://help1c.com/faq7/view/1281.html
разными способами попробуй
3 povar
 
13.03.14
10:39
(2) да пробовал и через ADO, такая же херня
4 Z1
 
13.03.14
11:24
(0) (если нужна типизация то лучше всего odbc и 1с++ )
работающий код через ado
            Акцесс = СоздатьОбъект("ADODB.CONNECTION");
            Попытка
            //Uid=Admin;
                СтрокаПодключения="Driver={Microsoft Access Driver (*.mdb)};Dbq="+Имя1 +";Pwd=";
                 Акцесс.Open(СтрокаПодключения);
            Исключение
                 Сообщить("Все плохо:"+ОписаниеОшибки());
                 return;
            КонецПопытки;


    ТекстСелект = "SELECT  * FROM TB_Сотрудники  WHERE  ";
    ТекстСелект = ТекстСелект + "  Фамилия="+ "'" + СокрЛП(ТекСотруд.Фамилия) + "'" + "  ";
    ТекстСелект = ТекстСелект + " AND  Имя="+ "'" + СокрЛП(ТекСотруд.Имя) + "'" + "  ";
    ТекстСелект = ТекстСелект + " AND  Отчество="+ "'" + СокрЛП(ТекСотруд.Отчество) + "'" + "  ";
    ТекстСелект = ТекстСелект +    " ;";
//Сообщить("ТекстСелект = " + ТекстСелект);
    Команда_0 = СоздатьОбъект("ADODB.Command");
    Команда_0.ActiveConnection=Акцесс;
    Команда_0.CommandText=ТекстСелект;
    Попытка
         НаборЗаписей_0=Команда_0.Execute;
    Исключение
         Сообщить("ошибка: "+ОписаниеОшибки());
    КонецПопытки;
    Попытка
         НаборЗаписей_0.MoveFirst();
    Исключение //нет записей в рекордсете
         НаборЗаписей_0.Close();
         Сообщить("Нет записи в базе зарплаты в спр сотрудники  сотрудника  = " + ТекСотруд);
         ФлОшибки = 1;
         Возврат ;
    КонецПопытки;
    Пока НаборЗаписей_0.EOF()=0 Цикл
         Код_Сотрудник     = НаборЗаписей_0.Fields("Код_Сотрудник").Value;
.............................
5 v4442
 
13.03.14
11:25
(21) все майданят Украина. Ветка 60
6 povar
 
13.03.14
11:52
(4) причем тут 1С++ ?
см.(3)
7 Z1
 
13.03.14
13:57
(6) в (4) приведен пример на чистом ado.
и то что написано в 4 это работающий код.

в 4 1с++ имел ввиду что если бы писал новый доступ
к  mdb то писал бы с помощью всего odbc и 1с++
8 povar
 
13.03.14
14:27
(7) понятно
9 povar
 
13.03.14
14:27
+(8) в моем случае, он не рабочий
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший