Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос в Excel, Запрос на выборку 
V
    Опции темы
ПервыйРазВЕкселе
Дата 15.12.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2008
Где: Челябинская облас ть

Репутация: нет
Всего: нет



Имеется книга Excel с базой данных на листе1, создал запрос на выборку через мастер подключений и поместил результаты запроса на лист2, проделал всё это при включенной записи макроса. Загвоздка в том что в коде VBA в строке connect прописывается полный путь к файлу и при его перемещении в другую папку запрос престаёт работать. Можно ли обойтись без всех этих полных путей, чтобы можно было файл поместить на любой компьютер и зопрос работал???
PM MAIL ICQ   Вверх
Akina
Дата 15.12.2008, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



А поправить код, записанный макрорекордером, религия не позволяет, что ли?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ТоляМБА
Дата 15.12.2008, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

Репутация: нет
Всего: 252



Цитата(ПервыйРазВЕкселе @  15.12.2008,  16:21 Найти цитируемый пост)
 при его перемещении в другую папку запрос престаёт работать.
Всё правильно, а как ты хотел?
Цитата(ПервыйРазВЕкселе @  15.12.2008,  16:21 Найти цитируемый пост)
Можно ли обойтись без всех этих полных путей, чтобы можно было файл поместить на любой компьютер и зопрос работал???
Вот представь ситуацию ты пошёл в магазин за хлебом, но это же не значит что хлеб будет продаваться и в магазине ткани, и в хозтоварах, и в магазине компьютеров.

Код
Dim fd As FileDialog
Dim f As String
Set fd = Application.FileDialog(msoFileDialogOpen)
If fd.Show Then f = fd.InitialFileName
MsgBox f
Откроется окно открытия файла, в нем выбираешь нужный каталог и щелкаешь на любой файл. В переменной f у тебя и пудет путь к каталогу с нужным тебе файлом.
PM   Вверх
ПервыйРазВЕкселе
Дата 16.12.2008, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2008
Где: Челябинская облас ть

Репутация: нет
Всего: нет



Akina, это мне придётся при каждом перемещении файла поправлять код, хотелось бы чиобы файл и запрос в нём были абсолютно автономны. Может тогда скажешь что такое Recordset, как его создавать и с чем его едят?

PM MAIL ICQ   Вверх
Akina
Дата 16.12.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(ПервыйРазВЕкселе @  16.12.2008,  10:44 Найти цитируемый пост)
это мне придётся при каждом перемещении файла поправлять код, хотелось бы чиобы файл и запрос в нём были абсолютно автономны

Нет

Цитата(ПервыйРазВЕкселе @  16.12.2008,  10:44 Найти цитируемый пост)
Может тогда скажешь что такое Recordset, как его создавать и с чем его едят?

Не скажу - прочитайте встроенную справку самостоятельно.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ПервыйРазВЕкселе
Дата 17.12.2008, 07:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2008
Где: Челябинская облас ть

Репутация: нет
Всего: нет



Akina, снова о запросе, я пробовал изменить код 
QueryTables.add(connection:=array.......дальше идёт DefaultDir="путь к папке в которой находится мой файл" когда файл премещаешь путь становится неправильным, пробовал совсем его убирать выдаётся сообщение об ошибке, пробовал чтобы путь задавался автоматически с помощью Application.DefaultFilePath выдаётся такое сообщение "неправильно задан путь 
C:/Мои документы/Application.DefaultFilePath" 
PM MAIL ICQ   Вверх
Akina
Дата 17.12.2008, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(ПервыйРазВЕкселе @  17.12.2008,  08:50 Найти цитируемый пост)
выдаётся такое сообщение "неправильно задан путь 

Неудивительно - кто сказал, что конкатенация обозначается во всех языках так же, как ПХП? справку-то надо иногда читать...



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ПервыйРазВЕкселе
Дата 17.12.2008, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2008
Где: Челябинская облас ть

Репутация: нет
Всего: нет



Akina, в том то и дело, что без DefaultDir=..... запрос не работает. Если в строке DefaultDir ничего не пишу, в надежде что запрос автоматически обратиться к активной книге, то запрос не работает. Если в DefaultDir вписываю Application.DefaultFilePath (возвращает путь к папке, содержащей файл) то выводится сообщение что путь не верный и Application.DefaultFilePath вписывает в путь, получается что то вроде C:/Мои документы/Работа/Application.DefaultFilePath. Читал справку в Excel по VB    С ПЕРЕВОДЧИКОМ     и ничего подходящего не нашёл.
PM MAIL ICQ   Вверх
kapbepucm
Дата 17.12.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 3
Всего: 12



Может код покажешь?


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
Akina
Дата 17.12.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Цитата(ПервыйРазВЕкселе @  15.12.2008,  15:21 Найти цитируемый пост)
в коде VBA в строке connect прописывается полный путь к файлу и при его перемещении в другую папку запрос престаёт работать

Код - в студию...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ПервыйРазВЕкселе
Дата 17.12.2008, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2008
Где: Челябинская облас ть

Репутация: нет
Всего: нет



Akina, 

 Sub Макрос3()
    Range("F14").Select
    With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Файлы Excel;DBQ=База.xls;DefaultDir=C:\Documents and Settings\Мои документы\", Destination:=Range("F14"))
        .CommandText = Array( _
        "SELECT протокол.`дата протокола`, протокол.Номер, протокол.`кто составил`, протокол.нарушитель" & Chr(13) & "" & Chr(10) & "FROM протокол протокол" & Chr(13) & "" & Chr(10) & "WHERE (протокол.нарушитель<>0)" _
        )
        .Name = "Запрос из Файлы Excel_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = True
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With
    
    Columns("F:F").ColumnWidth = 6.57
    Columns("G:G").ColumnWidth = 29.57
    Columns("H:H").ColumnWidth = 16.43
    Columns("I:I").ColumnWidth = 11#
End Sub

Вот такая загогулина.
PM MAIL ICQ   Вверх
Akina
Дата 17.12.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 26
Всего: 454



Код

With ActiveSheet.QueryTables.Add(Connection:="ODBC;DSN=Файлы Excel;DBQ=База.xls;DefaultDir=" & ThisWorkbook.Path & "\", Destination:=Range("F14"))



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
ПервыйРазВЕкселе
Дата 19.12.2008, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 27
Регистрация: 15.12.2008
Где: Челябинская облас ть

Репутация: нет
Всего: нет



Akina,  smile 
Мне бы твои мозги, последний вопрос, можно ли научиться нормально программировать читая учебники?
PM MAIL ICQ   Вверх
kapbepucm
Дата 19.12.2008, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 993
Регистрация: 14.6.2007
Где: Латвия

Репутация: 3
Всего: 12



Возможно, только ещё практика нужна.


--------------------
(С) kapbepucm
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0578 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.