|
14 Кб. |
|
| Всем привет.
Текст DoCmd.RunSQL "SELECT Таблица1.Поле1, Таблица1.Поле2, Таблица1.Поле3 FROM Таблица1; ", -1
Выдает это.
Так же точно запрос выглядит в модуле если преобразовать макрос запустить SQL запрос.
Чего ему надо? | |
|
| |
|
|
|
|
Метод RunSQL выполняет макрокоманду ЗапускЗапросаSQL (RunSQL) в программе Visual Basic.
DoCmd.RunSQL инструкцияSQL[, использоватьТранзакцию]
ИнструкцияSQL - строковое выражение, представляющее допустимую инструкцию SQL
для запроса на изменение или управляющего запроса.
В этой инструкции используются инструкции INSERT INTO, DELETE, SELECT...INTO, UPDATE,
CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, или DROP INDEX.
Для доступа к другой базе данных следует использовать предложение IN.
|
| |
|
| |
|
|
|
| Ошибка в том, что RunSQL предназначен для создания и изменения данных,
а твой запрос на отображение
В хелпе это написано:
RunSQL Method
See AlsoApplies ToExampleSpecificsThe RunSQL method carries out the RunSQL action in Visual Basic.
expression.RunSQL(SQLStatement, UseTransaction)
expression Required. An expression that returns one of the objects in the Applies To list.
SQLStatement Required Variant. A string expression that's a valid SQL statement for an action query (Запрос на изменение. Запрос, в котором выполняется копирование или изменение данных. В число запросов на изменение входят запросы на добавление, на удаление, на создание таблицы и на обновление. Такие запросы отмечаются в окне базы данных восклицательным знаком (!) рядом с именем запроса.) or a data-definition query (Управляющий запрос. Запрос SQL, содержащий инструкции языка описания данных DDL (Data Definition Language). Такие инструкции позволяют создавать или изменять объекты в базе данных.). It uses an INSERT INTO, DELETE, SELECT...INTO, UPDATE, CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, or DROP INDEX statement. Include an IN clause if you want to access another database.
|
| |
|
| |
|
|
|
|
| Из примера с флажками, модуль отчета:
Private Sub Report_Open(Cancel As Integer)
Dim i As Integer
Dim CountFields As Integer
Dim rst As DAO.Recordset
Dim intWidth As Integer
Me.RecordSource = Nz(Me.OpenArgs, "SELECT * FROM tbl1") 'Присвоили отчету источник, переданный через OpenArgs
'Откроем набор данных на основе источника отчета (без записей) для считывания свойств полей
Set rst = CurrentDb.OpenRecordset("SELECT * FROM (" & Me.RecordSource & ") WHERE False", dbOpenSnapshot)
CountFields = rst.Fields.Count
intWidth = Me.Width \ CountFields
For i = 1 To CountFields
With Me.Controls("lbl" & i)
.Caption = rst.Fields(i - 1).Properties("Caption") 'Присвоили меткам подпись из свойства Caption полей набора данных
.Visible = True
.Left = (i - 1) * intWidth
.Width = intWidth
End With
With Me.Controls("txt" & i)
.Visible = True
.Left = (i - 1) * intWidth
.Width = intWidth
.ControlSource = rst.Fields(i - 1).Name 'Присвоили источник (поле запроса/таблицы) текстовом полям (контролам) отчета.
End With
Next i
rst.Close
Set rst = Nothing
End Sub
|
| |
|
| |
|
|
|
|
| На самом деле это очень простой пример, с минимальными возможностями.
В рабочем отчете кода на 5-6 экранов.
Попробуй вывод в Excel или Html/Xml, может, проще будет.
| |
|
| |
|
|
|
| Трудно сказать что проще. Выход в своей ситуевине давно нашел - сводная табла. Но вот данную штуку по составлению динамического запроса и потом... (еще толком не знаю что с ним делать) весьма интересно применить. | |
|
| |
|
|
|
| давным давно делал такую штуку что то типа напоминалки
суть сводилась к следующему - через несколько дней наступит столько то событий
соответственно получалась таблица свободных полей в которых данные считались через DCount ну а для того что бы посмотреть уточненные данные нужна была форма где источником служил переменный запрос (в зависимости от диапазона)
только делал я не так как Lukas
Изначально форма опиралась на запрос (т.е могла быть открыта в любом случае )
форма открывалась в невидимом режиме
потом ей менялся источник строк
форма обновлялась
ну а далее отображение формы
а пример Lukas-а пойду тоже изучать | |
|
| |