Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Заполнение поля таблицы 
:(
    Опции темы
Elfix
Дата 12.5.2012, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Доброго времени суток!

Давно работаю с Acess в плане создания таблиц и запросов на SQL.
Столкнулся с необходимостью теперь писать макросы.

Создал форму, на форму бросил кнопку. Кнопка должна выполнить макрос. Не понимаю как писать макросы?
Открывается какой-то сложный конструктор.

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

Как это сделать? Напишите пожалуйста подробный алгоритм действий.
Реальная задача много сложнее. Но пример выше помог бы мне понять общий принцип.
PM MAIL   Вверх
Данкинг
Дата 12.5.2012, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(Elfix @  12.5.2012,  17:54 Найти цитируемый пост)
Открывается какой-то сложный конструктор.

Зачем тебе сложный конструктор? На кнопке ПКМ - свойства - события - нажатие кнопки. Открывается окно редактора VBA, в котором уже можно кодить.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akina
Дата 12.5.2012, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Elfix @  12.5.2012,  17:54 Найти цитируемый пост)
Мне нужно чтобы макрос открыл таблицу, пробежался по всем ее строкам и в поле Field1 прописал номер по порядку.

По какому порядку? какой вообще может быть порядок в таблице РЕЛЯЦИОННОЙ базы данных? Порядок есть в результате запроса, если указана сортировка. А таблица - это обычный heap. Куча.

Цитата(Elfix @  12.5.2012,  17:54 Найти цитируемый пост)
Реальная задача много сложнее.

Вот и описывайте реальную задачу.

Цитата(Elfix @  12.5.2012,  17:54 Найти цитируемый пост)
Открывается какой-то сложный конструктор.

http://forum.vingrad.ru/forum/topic-300994.html
Учитесь.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Elfix
Дата 12.5.2012, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Цитата(Akina @  12.5.2012,  19:53 Найти цитируемый пост)
По какому порядку? какой вообще может быть порядок в таблице РЕЛЯЦИОННОЙ базы данных? Порядок есть в результате запроса, если указана сортировка. А таблица - это обычный heap. Куча.

Порядок не важен. Я ничего не упоминал ни про порядок ни про все остальное. Я просил продемонстрировать саму возможность работы с полем средствами VBA. Хоть случайное число туда запишите, главное чтобы средствами VBA, а не средствами SQL.

Добавлено через 1 минуту и 48 секунд
Цитата(Данкинг @  12.5.2012,  17:53 Найти цитируемый пост)
Зачем тебе сложный конструктор? На кнопке ПКМ - свойства - события - нажатие кнопки. Открывается окно редактора VBA, в котором уже можно кодить. 

Да, спасибо! Уже ближе к делу. Через  OLEDB научился открывать таблицу и делать обход. Осталось только "допереть" как записать в поле нужное мне значение.
PM MAIL   Вверх
Akina
Дата 12.5.2012, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Для первичного понимания этого более чем достаточно открыть встроенную справку, набрав в окне редактора слово OpenRecordset и нажав F1, и изучить пример.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Elfix
Дата 12.5.2012, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



В общем получилось кое-что:

Код

Private Sub Êíîïêà6_Click()

    Dim Database As DAO.Database
    Dim RS As DAO.RecordSet
    
    Dim i As Integer
    
    Set Database = Access.CurrentDb
    Set RS = Database.OpenRecordset("Ðàñ÷åò çàäîëæåííîñòè", dbOpenDynaset)
    
    i = 1
    
    While Not RS.EOF
        RS.Edit
        RS.Fields("Çàäîëæåííîñòü").Value = i
        i = i + 1
        RS.MoveNext
    Wend
End Sub



Обход элементов проходит нормально. Не сохраняется значение. Почему?
Метода Post в RecordSet видимо не придумали. А что вместо него?
PM MAIL   Вверх
Данкинг
Дата 12.5.2012, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



RS.Update добавь.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Elfix
Дата 12.5.2012, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Спасибо!
PM MAIL   Вверх
Данкинг
Дата 12.5.2012, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Elfix, на здоровье. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Akina
Дата 14.5.2012, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Elfix @  12.5.2012,  21:07 Найти цитируемый пост)
Порядок не важен. Я ничего не упоминал ни про порядок

А вот это:
Цитата(Elfix @  12.5.2012,  17:54 Найти цитируемый пост)
в поле Field1 прописал номер по порядку

конечно, не ты писАл, а так, ветром надуло...




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Elfix
Дата 20.5.2012, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Вырванные слова из контекста обретают совсем другой смысл...
Имелся ввиду порядок в РЕЛЯЦИОННОЙ базе данных о которой Вы упоминали.

А номер по порядку означает порядок обхода строк этой базы.
Любой нормальный профессиональный программист я думаю понял меня, вы же решили блеснуть своим интеллектом, за что поплатились двумя очками своей репутации...

P. S. Я далее не буду принимать участие в данной теме, для себя считаю ее закрытой.
Еще раз спасибо за помощь г-ну Данкингу.
PM MAIL   Вверх
Akina
Дата 20.5.2012, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Elfix @  20.5.2012,  16:46 Найти цитируемый пост)
Любой нормальный профессиональный программист я думаю понял меня,

Думаю, нет.


Цитата(Elfix @  20.5.2012,  16:46 Найти цитируемый пост)
Имелся ввиду порядок в РЕЛЯЦИОННОЙ базе данных о которой Вы упоминали.

А номер по порядку означает порядок обхода строк этой базы.

Вы, сударь, [censored] самодовольный [censored]. Извините за грубость.
Когда Вы наконец поймёте, что Ваш код - с корректировкой Данкинга - имеет полное право на одном и том же наборе данных при двух последовательных выполнениях занести "номера по порядку" ПО-РАЗНОМУ - вот тогда будете иметь право возмущаться. Только вряд ли захочется - ведь Вы неправы, а моё указание на обязательность сортировки Вами благополучно проигнорировано.

PS. А на репутацию мне всегда было чхать с высокой колокольни. Я много лет назад предлагал от неё отказаться - но в угоду начинающим её оставили.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Данкинг
Дата 20.5.2012, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 1
Всего: 130



Цитата(Akina @  20.5.2012,  22:59 Найти цитируемый пост)
- имеет полное право на одном и том же наборе данных при двух последовательных выполнениях занести "номера по порядку" ПО-РАЗНОМУ - вот тогда будете иметь право возмущаться. 

Имеет-имеет, подтверждаю. smile Пример: есть таблица в MDB, я её тем самым обычным проходом экспортирую в любимый DBF. Делаю в цикле, при этом в новой таблице есть поле, в которое записывается переменная цикла (пресловутый номер по порядку). Так вот, в готовой таблице DBF этот номер частенько сбивается, т.е. чтобы получить изначальный порядок, который видим в MDB, приходится отсортировывать по этому полю.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Elfix
Дата 21.5.2012, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 167
Регистрация: 13.7.2005

Репутация: нет
Всего: нет



Цитата(Akina @  20.5.2012,  21:59 Найти цитируемый пост)
имеет полное право на одном и том же наборе данных при двух последовательных выполнениях занести "номера по порядку" ПО-РАЗНОМУ - вот тогда будете иметь право возмущаться

Я же уже писал на это:
Цитата(Elfix @  12.5.2012,  20:07 Найти цитируемый пост)
Я просил продемонстрировать саму возможность работы с полем средствами VBA. Хоть случайное число туда запишите, главное чтобы средствами VBA, а не средствами SQL.


Я много лет пишу запросы любой сложности для MS SQL, для Oracle, MySQL, Postgresql и вот, пришлось для Access. Неужели Вы думаете, что я ничего не знаю ни об этом ни о теориях реляционных баз данных которые Вы постоянно хотите мне навязать? Я практически ничего не знаю о VBA и в ЭТОМ был мой вопрос. Научитесь читать тему, а не свои домыслы. Самодовольны Вы, я же всего лишь хочу получить качественную поддержку тех людей, которые ЖЕЛАЮТ помочь. Остальных я прошу игнорировать и меня и мои вопросы.

Это сообщение отредактировал(а) Elfix - 21.5.2012, 17:35
PM MAIL   Вверх
Akina
Дата 21.5.2012, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Elfix @  21.5.2012,  18:34 Найти цитируемый пост)
Я много лет пишу запросы любой сложности для MS SQL, для Oracle, MySQL, Postgresql и вот, пришлось для Access. Неужели Вы думаете, что я ничего не знаю ни об этом ни о теориях реляционных баз данных которые Вы постоянно хотите мне навязать? Я практически ничего не знаю о VBA и в ЭТОМ был мой вопрос. 

Вот именно так и надо было формулировать вопрос - хорошо знаю SQL. никогда не писАл на VB, дайте ссылку на пример работы с полями записи таблицы. А вместо этого было придумано синтетическое задание, заставившее сомневаться во вменяемости... зачем?

Кстати, Вы рекомендацию из поста от 12.5.2012, 21:54 проделали?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.