Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Параметр в запросе в VB скрипте / 10 сообщений из 10, страница 1 из 1
16.08.2018, 15:03
    #39688918
st90
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
Всем привет!
Есть форма, на ней кнопка.
Мне нужно чтобы по нажатию кнопки формировался эксель из результата моего запроса.
Но в моем запросе есть параметр, который пользователь руками вводит.
И при нажатии кнопки у меня ругается что слишком мало параметров, хотя вводить параметр окно не показывает.

Запрос типа:
Код: plsql
1.
2.
SELECT * FROM TABLE1
WHERE Дата=[Введите дату:];



Привязал к кнопке процедуру:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
Private Sub Кнопка36_Click()
On Error GoTo Err1
    'Переменные
    Dim XLApp As Object, XLBook As Object, XLSheet As Object, RS As Object
    Dim CountColumn As Integer, WidthColumn As Integer, StrSQLInExcel As String
    'Создаем объекты: Excel, Книгу, Лист
    Set XLApp = CreateObject("Excel.Application")
    Set XLBook = XLApp.Workbooks.Add
    Set XLSheet = XLBook.Worksheets(1)
    Set RS = CurrentDb.OpenRecordset("Тест")
    'Узнаем количество колонок в Recordset
    CountColumn = RS.Fields.Count
    'Циклом заполняем заголовки колонок
    For i = 0 To CountColumn - 1
        'Передвигаемся по колонкам в Excel путем смещения
        XLSheet.Range("A1").offset(0, i).Value = RS.Fields(i).Name
        'Немного подкорректируем внешний вид выгрузки
        'Ширину колонки определим динамически на основе длины поля, но не более 20 и не менее 6
        WidthColumn = Len(RS.Fields(i).Name) + 2
        If WidthColumn > 20 Then
            WidthColumn = 20
        ElseIf WidthColumn < 6 Then
            WidthColumn = 10
        End If
        'Задаем для заголовка
        'Перенос по словам
        XLSheet.Rows(1).WrapText = True
        'Выравнивание
       
        'Цвет фона
        XLSheet.Rows(1).Interior.ColorIndex = 15
        'Ширина
        XLSheet.Columns(i + 1).ColumnWidth = WidthColumn
    Next
    'Записываем Recordset в Excel
    XLSheet.Range("A2").CopyFromRecordset RS
    'Делаем видимым Excel
    XLApp.Visible = True
    'Закрываем Recordset
    RS.Close
    Set RS = Nothing
Ex1:
    Exit Sub
Err1:
    MsgBox Err.Description
    Resume Ex1
End Sub
...
Рейтинг: 0 / 0
16.08.2018, 15:31
    #39688942
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
st90И при нажатии кнопки у меня ругается что слишком мало параметровВ какой строке - нам предлагается угадать?
st90хотя вводить параметр окно не показывает.Значит, не в запросе дело. Параметры не только у запросов бывают - всякие функции да процедуры тоже этим грешат...
Да и не видать использования этого запроса в показанном коде...
...
Рейтинг: 0 / 0
16.08.2018, 15:40
    #39688952
st90
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
Код: vbnet
1.
 Set RS = CurrentDb.OpenRecordset("Тест")


Вот вызов.
Пример запроса Тест я привел выше.
Убираю условие
и вместо этого
Код: plsql
1.
2.
SELECT * FROM TABLE1
WHERE Дата=[Введите дату:];



делаю так
Код: plsql
1.
SELECT * FROM TABLE1



и всё работает.
...
Рейтинг: 0 / 0
16.08.2018, 16:40
    #39688987
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
:рукалицо: И от кого же ты ждал запроса параметра - от библиотеки DAO, что ли? Так не дождёшься - у неё вообще визуальных компонентов нету, нечем ей спрашивать... Ей проще сказать "дерьмо запрос" через стандартный интерфейс уведомления об ошибке.
...
Рейтинг: 0 / 0
16.08.2018, 16:47
    #39688991
st90
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
Akina, и как быть?

Сделал так, запрос выполняется
Код: vbnet
1.
2.
3.
4.
    Dim q As QueryDef
    Set q = CurrentDb.QueryDefs("Тест")
    q.Parameters(0).Value = "[Введите дату:]"
    DoCmd.OpenQuery "Тест"



Но к экселю теперь не знаю как привязать
Рекордсета моего RS теперь нет.
...
Рейтинг: 0 / 0
16.08.2018, 16:49
    #39688995
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
Вот это правильно.

st90к экселю теперь не знаю как привязатьУказать файл-источник непосредственно в запросе. Типа
Код: sql
1.
2.
3.
SELECT *
FROM [Лист1$A1:B5] IN 'C:\folder\filename.xls'[Excel 12.0; HDR=No; IMEX=1]
WHERE Дата=[Введите дату:];
...
Рейтинг: 0 / 0
16.08.2018, 16:56
    #39689003
st90
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
Akina, у меня наоборот вывод результатов с названием колонок и форматированием в эксель.
См. выше код
...
Рейтинг: 0 / 0
17.08.2018, 08:38
    #39689220
4d_monster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
если без проверок на ошибки и т.п.:
Код: vbnet
1.
2.
q.Parameters(0).Value = cdate(inputbox("Введите дату:","Задайте параметр",Date()))
Set RS = q.OpenRecordset(dbFailOnError)
...
Рейтинг: 0 / 0
17.08.2018, 11:17
    #39689344
st90
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
4d_monster, Спасибо!
Только почему-то с CDate ругалось на неверный формат.
Заработало так:
Код: vbnet
1.
 q.Parameters(0).Value = InputBox("Введите дату:", "Задайте параметр", Date)



Akina,Спасибо!
...
Рейтинг: 0 / 0
17.08.2018, 11:20
    #39689347
st90
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Параметр в запросе в VB скрипте
а не...
ругалось что ошибочный аргумент
Код: vbnet
1.
(dbFailOnError)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Параметр в запросе в VB скрипте / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]