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

Запрос типа:
Код: 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
Параметр в запросе в VB скрипте
    #39688942
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st90И при нажатии кнопки у меня ругается что слишком мало параметровВ какой строке - нам предлагается угадать?
st90хотя вводить параметр окно не показывает.Значит, не в запросе дело. Параметры не только у запросов бывают - всякие функции да процедуры тоже этим грешат...
Да и не видать использования этого запроса в показанном коде...
...
Рейтинг: 0 / 0
Параметр в запросе в VB скрипте
    #39688952
st90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
 Set RS = CurrentDb.OpenRecordset("Тест")


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



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



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

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



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

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
Параметр в запросе в VB скрипте
    #39689003
st90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina, у меня наоборот вывод результатов с названием колонок и форматированием в эксель.
См. выше код
...
Рейтинг: 0 / 0
Параметр в запросе в VB скрипте
    #39689220
Фотография 4d_monster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если без проверок на ошибки и т.п.:
Код: vbnet
1.
2.
q.Parameters(0).Value = cdate(inputbox("Введите дату:","Задайте параметр",Date()))
Set RS = q.OpenRecordset(dbFailOnError)
...
Рейтинг: 0 / 0
Параметр в запросе в VB скрипте
    #39689344
st90
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4d_monster, Спасибо!
Только почему-то с CDate ругалось на неверный формат.
Заработало так:
Код: vbnet
1.
 q.Parameters(0).Value = InputBox("Введите дату:", "Задайте параметр", Date)



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


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