|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
Сразу скажу я не силен пока в VBA, но уже нужна вот такая история, буду благодарен за помошь... Код: plaintext 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. 48. 49. 50.
Вот этот код разбивает строку по пробелам и заменят это же поле первым словом в строке. Кто-нибудь может подправить код, чтобы можно было разбивать бесконечное количество слов и присваивать каждое слово новому полю (бесконечное кол-во полей) без замены основного поля ???? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2006, 15:36 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
у любой базы данных есть ограничение по количеству полей, у аксесса тоже поэтому бесконечное количество полей не получится ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2006, 16:07 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
Бесконечного количества полей быть не может. Может быть вы имели в виду - записей? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2006, 16:08 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
Ммихалычподправить код, чтобы можно было разбивать бесконечное количество слов и присваивать каждое слово новому полю (бесконечное кол-во полей) без замены основного поляСейчас этот код пишет каждое отдельное слово как новую запись - все кроме первого, а первое слово пишет в исходную запись. Если вам нужно чтобы он и первое слово тоже писал как новое, то нужно исправить одну строку - вместо:If i = 0 Then ds.Edit Else ds.AddNewнаписать просто:ds.AddNew ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2006, 17:02 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
Karfaqen Ммихалычподправить код, чтобы можно было разбивать бесконечное количество слов и присваивать каждое слово новому полю (бесконечное кол-во полей) без замены основного поляСейчас этот код пишет каждое отдельное слово как новую запись - все кроме первого, а первое слово пишет в исходную запись. Если вам нужно чтобы он и первое слово тоже писал как новое, то нужно исправить одну строку - вместо: If i = 0 Then ds.Edit Else ds.AddNewнаписать просто: ds.AddNew Код: plaintext 1. 2. 3. 4. 5. 6.
вставляет первое слово в строке в новое поле (MyField), как продолжить дальше код, чтобы оставшиеся слова в строке через пробелы (как указано в коде), каждое слово он вставлял в новое поле, объясните плиз, на сколько я понимаю нужно добавить следущий цикл, или я чего-то не понимаю.... :( ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2006, 20:47 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
т.е. количество слов в строках поля различно, нужно чтобы он их автоматом раскидал на максимальное количество полей... (То что я хочу, вообще возможно ???) Const MyField2 = "2" Const MyField3 = "3" .............. Const MyFieldn = "n" For i = ..... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2006, 20:52 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
На сколько смог понять масcив(c произведенной разбивкой по словам) здесь запихан в цикл For, а вот как работает Ubound.... Затем присваивается полю значение массива от цикла и вот в чем опять воропрос.... как работает Ubound.... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2006, 20:58 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
МмихалычНа сколько смог понять масcив(c произведенной разбивкой по словам) здесь запихан в цикл For, а вот как работает Ubound.... Затем присваивается полю значение массива от цикла и вот в чем опять воропрос.... как работает Ubound.... ;) Функция UBound Возвращает значение типа Long, содержащее максимальный доступный индекс указанной размерности массива. Синтаксис UBound(имяМассива[, размерность]) Синтаксис функции UBound содержит следующие элементы: Элемент Описание имяМассива Обязательный. Имя переменной массива, удовлетворяющее стандартным правилам именования переменных. размерность Необязательный; Variant (Long). Целое число, указывающее размерность, верхнюю границу которой возвращает функция. Для первой размерности используется значение 1, для второй 2 и т.д. Если аргумент размерность опущен, подразумевается значение 1. Дополнительные сведения Функция UBound вместе с функцией LBound используется для определения размеров массива. Функция LBound применяется для выяснения нижнего предела размерности массива. UBound возвращает значения, перечисленные в приводимой ниже таблице, для массива со следующими размерностями: Dim A(1 To 100, 0 To 3, -3 To 4) Инструкция Возвращаемое значение UBound(A, 1) 100 UBound(A, 2) 3 UBound(A, 3) 4 Вам, для вашей постановки задачи, нужно применять UBound вместе с инструкцией Redim, для переопределения изначально заданного массива. Инструкция ReDim Применяется на уровне процедуры для перераспределения памяти для переменных динамического массива. Синтаксис ReDim [Preserve] имяПеременной(индексы) [As тип] [, имяПеременной(индексы) [As тип]] . . . Синтаксис инструкции ReDim содержит следующие элементы: Элемент Описание Preserve Необязательный. Ключевое слово, используемое для сохранения данных в существующем массиве при изменении значения последней размерности. имяПеременной Обязательный. Имя переменной, удовлетворяющее стандартным правилам именования переменных. индексы Обязательный. Размерности переменной массива; допускается описание до 60 размерностей. Аргумент индексы использует следующий синтаксис: [нижний To] верхний [,[нижний To] верхний] . . . Если нижний индекс не задан явно, нижняя граница массива определяется инструкцией Option Base. Если отсутствует инструкция Option Base, нижняя граница массива равняется нулю. тип Необязательный. Тип данных переменной; поддерживаются типы Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (в настоящее время не поддерживается), Date, String (для строк переменной длины), String * длина (для строк фиксированной длины), Object, Variant, определяемый пользователем тип или объектный тип. Для каждой описываемой переменной следует использовать отдельное предложение As тип. Для значения типа Variant, содержащего массив, тип описывает тип данных каждого элемента массива, но не заменяет тип Variant на какой-либо другой тип. Дополнительные сведения Инструкция ReDim используется для задания или изменения размера динамического массива, который уже был формально описан с помощью инструкции Private, Public или Dim с пустыми скобками (без индексов размерностей). Имеется возможность повторно использовать инструкцию ReDim для изменения числа элементов и размерностей массива. Однако не допускается описание массива с одним типом данных и использование инструкции ReDim для последующего изменения типа данных этого массива, если массив не содержится в переменной типа Variant. Тип элементов массива, содержащегося в переменной типа Variant, может быть изменен с помощью предложения As тип, если ранее не было использовано ключевое слово Preserve, запрещающее изменение типа данных. При использовании ключевого слова Preserve имеется возможность изменить значение только последней размерности массива и не допускается изменение числа размерностей. Например, если массив имеет только одну размерность, имеется возможность изменить эту размерность, так как она является последней и единственной размерностью. Однако, если массив имеет две или более размерности, возможно изменение значения только последней размерности, сохраняя при этом содержимое массива. В следующем примере показывается, как можно увеличить значение последней размерности динамического массива без уничтожения данных, содержащихся в этом массиве. ReDim X(10, 10, 10) . . . ReDim Preserve X(10, 10, 15) Кроме того, при использовании ключевого слова Preserve допускается изменение размера массива только за счет изменения верхней границы индекс; попытка изменить нижнюю границу приведет к ошибке. Если уменьшить размер массива, данные из удаленных элементов будут потеряны. При передаче массива в процедуру по ссылке нельзя изменять размеры массива в процедуре. При инициализации переменных числовая переменная получает значение 0, строка переменной длины получает значение пустой строки (""), а строка фиксированной длины заполняется нулями. Переменные типа Variant получают при инициализации значение Empty. Каждый элемент переменной типа, определяемого пользователем, при инициализации получает значение, которые он получил бы, если бы являлся одиночной переменной. Переменной со ссылкой на объект перед ее использованием необходимо присвоить существующий объект с помощью инструкции Set. До присвоения объекта описанная объектная переменная имеет специальное значение Nothing, которое указывает, что она не содержит ссылку на какой-либо определенный экземпляр объекта. Внимание! Инструкция ReDim действует как инструкция описания, даже если описываемая в ней переменная не существует на уровне модуля или на уровне процедуры. При создании в дальнейшем переменной с тем же именем, возможно, в более широкой области определения, инструкция ReDim будет ссылаться на эту последнюю переменную и не обязательно вызовет ошибку компиляции, даже при действующей инструкции Option Explicit. Во избежание подобных конфликтов не следует использовать инструкцию ReDim как инструкцию описания. Пользуйтесь ей только для изменения размеров массивов. Примечание. Для изменения размера массива, содержащегося в переменной типа Variant, нужно явно описать переменную типа Variant перед попыткой изменения размера. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2006, 00:15 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
Спасибо большое за пояснения.... ! А не подскажите, где можно скачать основные функции VBA (на фы1 просьба не посылать, мня это фы1, уже запарило внатурь уже :)) желат. на русскои и с примерами (у губы то раскотал ! :)), знаете типа как есть MySql Manual, может кто сварганил такую тему и для VBa... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2006, 22:45 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
В книжном магазине. В гугле. В ненавистной Фы1. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2006, 08:29 |
|
Помагите с VBA...
|
|||
---|---|---|---|
#18+
Программист-ЛюбительВ книжном магазине. В гугле. В ненавистной Фы1.Абсолютно! Нет королевских путей. 2 Ммихалыч Для того, чтобы иметь "ненавистную Фы1 на русском можно поставить Асцесс 97. Именно там есть развитой хелп на русском. Но надо иметь в виду разницу между Аксом97 и используемой вами, для чего сразу же прочитать главу из хелпа (вашего - 2000, ХР или 2003, на английском!) что нового в этой версии по сравнению с 97. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.10.2006, 09:01 |
|
|
start [/forum/topic.php?fid=45&msg=34062297&tid=1655625]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 274ms |
total: | 400ms |
0 / 0 |