|
|
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Оказывается, массивы знаю слабо. Помогите, - как объявить массив и как с ним работать, если известна его размерность только по столбцам, а число строк - нет. Ещё одна проблема: данные разных типов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:53 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
>Ещё одна проблема: данные разных типов. Тогда забудь про массивы (в принципе, можно как Variant хранить, но тогда замучишься тип узнавать- хотя смотря какая задача). Юзай Collection, правда и там тип узнавать прийдется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:57 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
> Число строк - нет Пусть первая размерность массива будет обозначать столбцы, а вторая - строки. Тогда ты сможешь делать так: dim a(100,1) as ... ... ... redim preserve a(100,123) > данные разных типов а объяви массив как dim a(100,1) as Variant ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:58 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Посмотри про ReDim ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:59 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Geo прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 17:59 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
По поводу "замучивания" узнавать тип данных: Задача: обработать поля Recordset-а (где-то на этой странице мой топик о повторах в запросе), вообщем - пропустить Recordset "через процедуру" и сделать ... новый Recordset. А кто мне мешает перед занесением "окончательных" данных использовать CLng(), CStr() и т.д.? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:21 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Вообще если пользоваться типом Variant Dim arr() as variant ----- ----- Находишь число строк и переобъявляешь REDIM arr(nstolb,nstrok) хотя в по help'y вроде можно и так REDIM arr(nstolb) AS тип, arr(nstrok) AS тип ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:21 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
А можно ли заполнять все столбцы одной строки одним махом или только циклом по всем столбцам с "поячеечным" присвоением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:47 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Не знаю способа хотя может кто-нибудь из более просвященных просветит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:51 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Можно попробовать сделать одномерный массив, у которого элементами будут, в свою очередь, массивы. Но кому это надо? :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:52 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
А одномерный все равно в цикле? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 18:54 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
А одномерный (тот, который элемент другого) - обычным присваиванием. A = B ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2003, 19:18 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
На 90% сотворил: в массив загоняю, ненужное удаляю и ...затык! Поскольку создать запрос на основе массива(?!) - бред, надо загнать его поля в таблицу. Проблема в том, что некоторые ячейки массива пустые(Null) и так должны перенестись в таблицу. А поля в таблице могут быть и "датные", и числовые. Не получается создать выражение. Рождается монстр: DoCmd.RunSQL ("INSERT INTO.....VALUES ('" & AA(0, row) & "','" & CDate(Nz(AA(1, row), 0)) & "','" & Nz(AA(2, row), 0) & _ "','" & CDate(Nz(AA(3, row), 0)) & "','" & CDate(Nz(AA(4, row), 0)) & "','" & CInt(Nz(AA(5, row), 0)) & "','" & CLng(Nz(AA(6, row), 0)) & "');") В итоге, пустые значения в таблице выглядят как 00:00:00 (дата) или 0 (число). Где-то я перемудрил с форматированием.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 10:17 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Конечно сложно Может быть не очень красиво и у просвященных вызовет протест но я бы в этом случае использовал Addnew ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:37 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
2АндрейК У меня такое ощущение, что ты что-то не то делаешь. Обрисуй задачу целиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:40 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Ну пусть AddNew, а дальше? Всё равно ведь надо форматировать значения... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:41 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Форматируй в строках и проверяй пошагово что получается затем можно и сформировать инсерт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:47 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Частично задачу обрисовал в топике о повторах в запросе, но, по-моему, только запутал. Можно свести задачу к текущей - передача "пустых" значений в таблицу, если поле - Дата или - Число. В таблице такая ячейка должна быть именно пустой. Какой должен быть синтаксис запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:48 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Даты -форматом в русский Уменя была татая заморока по числам-посмотри в конструтор нет ли зночения по умолчанию 0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 11:54 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Лир. отступление: можно было определить запись (т.е., следуя бейсиковскому сленгу - "пользовательский тип" Type), если набор полей определен. Если не определен, придется ограничится одномерным динамическим массивом. (Присвоение записей происходит много шустрее, чем присвоение массивов.) Затем создать динамический массив из записей. __ Если таблица допускает в полях NULL, никаких "форматирований" не надо - это от излишнего усердия. Если не допускает, "отформатируйте" данные массива ПЕРЕД выгрузкой (а не в процессе). Будет проще составлять строку. А вообще-то выгрузку массива удобнее проводить не составлением строк SQL, а открытием рекордсета (where FALSE, чтобы не возвращать данные) и .AddNew. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 12:00 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
открытием рекордсета (where FALSE, чтобы не возвращать данные) и .AddNew. А вот отсюда поподробнее, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2003, 13:34 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
АндрейК как-то всё усложнил и запутал. Такая задача решается в процедуре с использованием 2-х Recordset-ов. rst1 - на таблице-источнике. По нему выполняется цикл. rst2 - получатель. Туда добавляются записи. Всё просто и наглядно. И никаких массивов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2003, 10:46 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Анатолию(в Киев) Спасибо за идею! Нечто подобное я, правда, сотворил (идея с массивом умерла вчера), но, верный себе, не мог не перемудрить: Бывший запрос-источник, который загонялся в Ёксель, переделал в запрос на добавление. Добавляю записи в Temp-таблицу, корректирую её(один проход по всем записям), а потом экспортирую в Ёксель. Чуствую, что где-то лишняя операция... А что, по идее, быстрее: мой способ или перекидывать в таблицу записи по одной, предварительно корректируя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2003, 12:41 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
>А что, по идее, быстрее: мой способ или перекидывать в таблицу записи по >одной, предварительно корректируя? Если имеется ввиду перекидывание записей по одной Temp-таблицу, то ваш метод быстрее, особенно на большом количестве записей. >Чуствую, что где-то лишняя операция... Как по мне,если конечная цель таблица в Ёкселе, то лишняя операция как раз - Temp-таблица. Я бы использовал его библиотеку объектов, накидал бы туда данных (в конкретный файл, на конкретный лист, в конкретное место), плюс шапки, формулы, форматирование и т.д. Но это - дело вкуса. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2003, 17:26 |
|
||
|
Вопрос по массиву.
|
|||
|---|---|---|---|
|
#18+
Записей, действительно, может быть много. А отформатированный заранее лист Ёкселя, с заголовками, итогами, объединёнными ячейками, рамочками и т.д. придётся через OLE делать, а это ещё дольше(знаем - плавали). Да и неясно, какие итоги понадобятся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2003, 17:38 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32314062&tid=1678419]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 383ms |

| 0 / 0 |
