|
|
|
| Все привет. Вот проблемка-непонятка. Есть таблица. Запускаю recordset с запросом для заполнения дерева. Все работает, дерево заполняется. Ставлю в запрос одно условие. Тоже пашет. Ставлю второе условие в запрос, пишет что мало параметров и надо хотя бы 1, хотя данные в запросе есть. Пришлось делать запрос со всеми условиями на создание таблицы и уже по этой временной таблице пускать recordset. Все работает как надо.
А не подскажете как обойтись без временной таблицы?
Такой вариант с временной таблицей TW работает отлично
Set rst = CurrentDb.OpenRecordset("SELECT [Тип средств].КодТипаСр, [Тип средств].Тип, [Тип средств].ИндексTree FROM [Тип средств] INNER JOIN TW ON [Тип средств].КодТипаСр = TW.КодТипаСр WHERE ((([Тип средств].ИндексTree)='r'));")
With rst
If .RecordCount <> 0 Then
Do While Not .EOF
Call Me.TW1.Nodes.Add("r", 4, "a" & ![КодТипаСр], ![Тип])
.MoveNext
Loop
End If
End With
А если запустить recordset с запросом:
SELECT [Тип средств].КодТипаСр, [Тип средств].Тип, [Тип средств].ИндексTree FROM [Тип средств] WHERE ((([Тип средств].КодТипаСр)<>[Forms]![Средства по типам]![Поле3]) AND (([Тип средств].ИндексTree)='r'));
То орет что мало параметров.
Предварительно Поле3 в форме заполняется как надо, но в коде recordset с этим запросом выделяется желтым цветом. Пришлось этот запрос ставить на создание таблицы TW и потом уже по нему recordset. как указано выше. Что не так? Не хочу временных таблиц. | |
|
| |
|
|
|
|
[Forms]![Средства по типам]![Поле3]
|
Вместо этого мусора нужно вcтавить ЗНАЧЕНИЕ, тогда перестанет ругаться. :) | |
|
| |
|
|
|
| Или вот так вота попробовать
Public Function FUN_Поле3() As String
' вспомогательная функция для запроса
FUN_Поле3 = Nz([Forms]![Средства по типам]![Поле3])
If IsEmpty([Forms]![Средства по типам]![Поле3]) = True Then
FUN_Поле3 = ""
End If
End Function
|
| |
|
| |
|
|
|
| Спасибо. С функцией что-то не совсем понял что тут к чему, а на счет значений - объявляю переменную, присваиваю ей значение поля3 и вставляю в запрос
Set rst = CurrentDb.OpenRecordset("SELECT [Тип средств].КодТипаСр, [Тип средств].Тип, [Тип средств].ИндексTree " _
& " FROM [Тип средств]WHERE ((([Тип средств].КодТипаСр)<>" & a & " And (([Тип средств].ИндексTree)='r'));")
Как результат значение определяет правильно. На желтом фоне высвечивает и пишет, что ошибка синтаксиса имеется. | |
|
| |
|
|
|
| Функцу в запрос подставляем
SELECT [Тип средств].КодТипаСр, [Тип средств].Тип, [Тип средств].ИндексTree FROM [Тип средств] WHERE
((([Тип средств].КодТипаСр)<>'" & FUN_Поле3() & "') AND (([Тип средств].ИндексTree)='r'));
|
Она и передаст значение поля. | |
|
| |
|
|
|
| Ну надо же! Функция часа заработала. От одного запроса на создание таблицы избавился.
По аналогии буду пытаться избавиться от второго. Час, спасибо.
PS. И все же какого лешего recordset не желает работать с "мусором" если запрос отдельно работает. Ему не все ли равно что в условии? Функцию пихать - не мой уровень. Переменная тоже передавала верное значение, а оно на синтаксис пеняет блин. В чем фишка? | |
|
| |
|
|
|
| Это мне Lukas в своё время - глаза открыл и Анатолий(Киев) подсобил. | |
|
| |
|
|
|
|
Может в апострофах?
Ваще я в запросах - туп дубом! | |
|
| |
|
|
|
|
Ваще я в запросах - туп дубом
|
правильно говорить - Час Часом (дуб дубом ) | |
|
| |
|
|
|
|
Ему не все равно. Попробуйте запихнуть в sql-текст источника рекордсета число, например, 1,56. Или поле, в котором 1,56.
Не работает - "," - не должно быть.
Хотя в сохраненном запросе запросто прокатывает.
А с 1.56 работает. | |
|
| |
|
|
|
| Понятно. Спишу все на баги и недоработки микрософта. Эти подлянки с их стороны мне 2 дней разборок стоили. . | |
|
| |