Как объявить массив в ВБА???

Manuka
Дата: 03.10.2005 16:49:32
нужно создать переменную, содержащую массив значений

и киньте идею почему
Public Function CreateInMultiLB(lst As ListBox, Optional strDelimiter As String) As String
Dim varItem As Variant
Dim strRez As String

For Each varItem In lst.ItemsSelected
strRez = strRez & strDelimiter & lst.ItemData(varItem) & strDelimiter & ","
Next varItem
If Len(strRez) = 0 Then CreateInMultiLB = "": Exit Function
strRez = Left$(strRez, Len(strRez) - 1)
strRez = "IN (" & strRez & ")"
CreateInMultiLB = strRez
End Function

не работает в качестве условия для запроса
Тяп-ляп
Дата: 03.10.2005 16:57:50
Функцию отлаживал?
Debug.Print ....
точки останова ....
или только в запросе пробовал?
Serge Gavrilov
Дата: 03.10.2005 17:41:30
Manuka

не работает в качестве условия для запроса

А это зависит от того как вы будете использовать данную функцию
Если будете динамически формировать свойство SQL запроса, то получится.
гдупыйглупый
Дата: 03.10.2005 17:56:30
на самом деле - в любом случае не получится, потому что перед закрывающей скобкой получится запятая.

Если ее изжить, то тоже не обязательно, что получится.
Может да, если в списке числа, а может и нет, если в списке строки.



и делимитер там не нужен, ваапчета.
Тяп-ляп
Дата: 03.10.2005 18:11:04
Покрутил и так и сяк - не работает сия конструкция
ни так:
Public Function ss() As String
  'ss = "(1;2;3)"
  ss = "1;2;3"
End Function

SELECT PersonId FROM Persons WHERE ((PersonId) In (ss()));
ни сяк:
Public Function ss() As String
  'ss = "IN (1,2,3)"
  ss = "IN (1;2;3)"
End Function

SELECT PersonId FROM Persons WHERE ((PersonId) ss());
глупыйглупый
Дата: 03.10.2005 18:18:00
как это IN (ss()) ???

strsql="SELECT PersonId FROM Persons WHERE (PersonId In " &  ss() & ");"

Public Function ss() As String
  ss = "(1,2,3)"
End Function


ключевое слово - "формировать динамически"...
Manuka
Дата: 04.10.2005 10:13:46
Serge Gavrilov
Это как??? очень интересно!!! Динамически формировать свойство... подскажите...
всем остальным - формируемая строка работает, если ее вставить в условие запроса... вручную... а если на нее ссылаться из условия запроса - не работает, ни ин ни равно.
Manuka
Дата: 04.10.2005 10:15:09
гдупыйглупый - делимиитер нужен, у меня текстовые данные! а без делимитера будет полностью всю строку считывать
Serge Gavrilov
Дата: 04.10.2005 10:33:59
Manuka
Serge Gavrilov
Это как??? очень интересно!!! Динамически формировать свойство... подскажите...

Вы не рассказываете (или я не увидел как вы используете запрос)
А как динамически, уже было написано, например
CurrentDb.Querydefs("ИмяЗапроса").SQL = "SELECT PersonId FROM Persons WHERE (PersonId In " & ss() & ");"

А потом уж использование запроса.
Manuka
Дата: 04.10.2005 10:42:14
Serge Gavrilov


Блин не аська поцелуйчиков нет!!! спасибо ща пойду пробовать!