Имя: Пароль:
1C
 
Чтение MDB
0 Маленький Ежик
 
15.12.06
09:03
Пользуясь v8: Нужно вытащить данные из базы Access. как руководством получаю в строке
     RecordSet = Command.Execute();
такую ошибку
{Форма.Форма(37)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (ADODB.Command): Невозможно использование подключения для выполнения операции. Оно закрыто или не допускается  в данном контексте.
Ошибка выборки данных. Обработка завершена.
Подключение стопудово открыто. Что еще может быть не так? Может, у кого-нибудь есть варианты?
1 Маленький Ежик
 
15.12.06
09:29
неужели никто в восьмерке данные не пытался из Access'а тянуть? Не бросайте в пятницу вечером. Хочу на выходные с чистой совестью:)
2 SKrin
 
15.12.06
09:32
покажи весь код подключения
3 Sonic
 
15.12.06
09:32
(1) где фотка?:)
4 Паладин
 
15.12.06
09:36
(3) +1
5 Маленький Ежик
 
15.12.06
09:41
(2)    BaseName = "C:\SPRAV.mdb";
   
   try
       // Создать объект-соединение  
      Connection = new COMObject("ADODB.CONNECTION");
  Except
      Message(ErrorDescription());        
      Message("Ошибка создания COM объекта-соединения. Обработка завершена.");
      Return;
  EndTry;
   
  // Открыть базу
  Try
       ConnectString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\SPRAV.mdb;";
      Connection.Open(ConnectString);
  Except
      Message(ErrorDescription());        
      Message("Ошибка подключения к базе. Обработка завершена.");
      Return;
  EndTry;
   
  // Создать объект-команду
  Try
      Command= new COMObject("ADODB.Command");
       SQLCommand = "SELECT dbo_NSClients.ClientId,dbo_NSClients.ClDepId, dbo_NSClients.ClNum, dbo_NSClients.EnterpriswId, dbo_NSClients.ClName, dbo_NSClients.Adress, dbo_NSClients.Note1, dbo_NSClients.INN, dbo_NSClients.KPP FROM dbo_NSClients;";
      Command.CommandText = SQLCommand;
       
       
       // Выборка данных
       
       Try
       
      RecordSet = Command.Execute();
     
        // Позиционируем первую запись
  Try
      RecordSet.MoveFirst();
  Except
      Message(ErrorDescription());        
      Message("Ошибка при попытке выбора первой записи. Обработка завершена.");
      Return; // Ну на самом деле это может быть и не ошибка, а просто нет записей для данного запроса
  EndTry;
   
 // тблНоменклатураТВ.Очистить();
   
   Try
       While RecordSet.EOF()=0 Do
          Стр = справочники.Контрагенты.СоздатьЭлемент();
          Стр.Код = RecordSet.Fields("ClientId").Value;
          Стр.Наименование = RecordSet.Fields("ClName").Value;
          Стр.Отделение = RecordSet.Fields("ClDepId").Value;
          Стр.Номер = RecordSet.Fields("ClNum").Value;
          Стр.Предприятие = RecordSet.Fields("EntrpriseId").Value;
          Стр.Адрес = RecordSet.Fields("Adress").Value;
          Стр.ПочтовыйАдрес = RecordSet.Fields("Note1").Value;
          Стр.ИНН = RecordSet.Fields("INN").Value;
          Стр.КПП = RecordSet.Fields("KPP").Value;
          стр.Записать();
          // Переход к следующей записи    
          RecordSet.MoveNext();
      EndDo;
  Except
      Предупреждение("Ошибка при чтении результатов запроса.");
          Return;
  EndTry;

  Except
      Message(ErrorDescription());        
      Message("Ошибка выборки данных. Обработка завершена.");
      Return;
  EndTry
 
  Except
      Message(ErrorDescription());        
      Message("Ошибка создания COM объекта-команды. Обработка завершена.");
      Return;
  EndTry;
   
  Command.ActiveConnection = Connection;
   
  // Создать объект-recodset
  Try
      RecordSet= new COMObject("ADODB.RecordSet");
  Except
      Message(ErrorDescription());        
      Message("Ошибка создания COM объекта-набора записей. Обработка завершена.");
      Return;
  EndTry;
6 Маленький Ежик
 
15.12.06
09:50
Сумбур, конечно. Не самый изящный код...
7 SKrin
 
15.12.06
09:53
откуда Command знает куда ему запрос слать?
на
http://www.sinor.ru/~my1c/knowhow/accs_ado.html
читай внимательно
8 Маленький Ежик
 
15.12.06
10:07
(7) Один косяк уже вижу. Упс. Спасибо.
9 Маленький Ежик
 
15.12.06
10:36
Все поправила, вроде.
Теперь в строке
    RecordSet = Command.Execute();
 вылетает в исключение
говорит
{Форма.Форма(63)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Microsoft Access] Слишком мало параметров. Требуется 2.
Ошибка выборки данных. Обработка завершена.
зы: Ежик снгодня тупой, совсем тупой...:(