Эксель, в качестве БД (2)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Эксель, в качестве БД (2)

Сообщение sergey-911 » 29.01.2006 (Вс) 18:05

Доброго времени суток уважаемые.
Вы, наверное, сочли тему закрытой, после ответа "Odrick". http://bbs.vbstreets.ru/viewtopic.php?p=6581588#6581588
Но это не так. Помогите, плиз, разобраться с подключением к Excel, в качестве БД.
Код
Код: Выделить всё
  Dim file As String   'Путь и имя файла

  Dim cn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Set cn = New ADODB.Connection
  With cn
    .Provider = "MSDASQL"
    .ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};DBQ=" & file & ";FirstRowHasNames=0;"
    .Open
  End With
  Set rs = New ADODB.Recordset
  With rs
    Set .ActiveConnection = cn
    .Source = "[Книга1]"
    .Open
  End With
  Debug.Print rs.Fields(0).Value
  Debug.Print rs.Fields(0).Name
  rs.Close
  cn.Close

не работает.
С уважением, Сергей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 29.01.2006 (Вс) 18:26

Мы, скорее всего, не сочли тему закрытой, просто
а) ответ Odrik'а был абсолютно верен, ибо простейший поиск немедленно показывает http://bbs.vbstreets.ru/viewtopic.php?t=22799, в котором можно найти правильную connectionstring, а также синтаксис запроса к excel, и
б) вопрос сформулирован весьма хреново, и потому на него не хочется отвечать.
Код не работает

У моего соседа не работает машина. Тойота 1995 года. Не могли вы на основании этих данных указать, почему она не работает? Нет, я знаю, где у неё стучит. И если я вам скажу где, вы сразу догадаетесь. Но так ведь не интересно, правда? Зачем же людям портить удовольствие, говорить, где и какая возникает ошибка, сами догадаются...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 29.01.2006 (Вс) 18:53

Кто-нибуд может на этом форуме нормально ответить, не посылая куда - подальше... Я конечно, ценю критику, но на данном этапе мне нужен работающий вариант. Прижало, знаете ли! :roll:
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 29.01.2006 (Вс) 18:58

Код: Выделить всё
.......
    .Source = "[Книга1]"
    .Open             'Ошибка здесь

Пишет, предполагалось наличие SQL команды.
С уважением, Сергей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.01.2006 (Пн) 4:08

О! Явный прогресс.

Проследовав по http://bbs.vbstreets.ru/viewtopic.php?t=22799, находим там синтаксис запроса. Типа "SELECT * FROM [Sheet1$]", для наиболее ленивых.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 30.01.2006 (Пн) 7:17

По этой ссылке я уже раньше заглядывал.
Не догоняю, куда в селект поместить?
Кто-нибудь, напишите рабочий вариант.
Плиз, очень надо... :roll:
С уважением, Сергей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.01.2006 (Пн) 8:49

В source, очевидно?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 30.01.2006 (Пн) 18:46

Пробовал, не работает.
Для наглядности прикрепляю файл проекта.
Файл "Импорт.xls" (пробная БД) содержит табличку, которая должна быть помещена в таблицу проекта.
Вложения
Import.rar
(7.83 Кб) Скачиваний: 44
С уважением, Сергей.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 30.01.2006 (Пн) 19:10

1. Внимательно узрев уже дважды приводимые примеры, можно заметить, как после имени листа идёт знак доллара.
2. Если закрывать рекордсеты и соединение сразу после открытия, в гриде, естественно, ничего не будет. Может, стоит переместить закрытие куда-нибудь в form_unload?
3. datagrid требует клиентский рекордсет. .CursorLocation = adUseClient
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 30.01.2006 (Пн) 20:24

GSerg, спасибо тебе огромное! Выручил! Дело оказалось в долларе. :D Опять америкосы напортачили. :D
На всякий пожарный прикрепляю работающий вариант. Вдруг, кому понадобится.
Вложения
Import.rar
Импорт из Excel
(7.83 Кб) Скачиваний: 65
С уважением, Сергей.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Mail.ru [бот], SemrushBot и гости: 81

    TopList