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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> код + переход в форме по записям 
:(
    Опции темы
Ринат
Дата 1.4.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



доброе утро! такой вопрос, при нажатии на кнопку в форме (активирует код) данные из списков (множественный выбор) записываются в таблицу, но данные их других полей этой же формы попадают в другую ячейку, то есть для данных, обрабатываемых нажатием кнопки создается своя запись в таблице
вопрос : как рещить данную проблему? вещать ли все элементы формы на скрипт, но тогда не будет ли так, что при переключении на следующую запись в таблицу не будет помещены 2 строки
спасибо

то есть как списки (кнокпу + код) привязать к данной записи, а не к отдельной
Добавлено @ 10:26
другими словами, есть ли такой вариант, можно ли код активировать при нажатии на кнопку переключения записи в форме? или как реализовать описанную выше задачу
Добавлено @ 10:31
не нахожу панели навигации в режиме редактирования формы, та что внизу обычно, переключение по записям
PM MAIL   Вверх
Akina
Дата 1.4.2005, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Вопрос совершенно непонятен.
Успокойся и объясни еще раз, без сумбура...


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

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


Шустрый
*


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

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



при нажатии на кнопку выполняется код (код вставляет в таблицу данные из списков в форме, тот что вчера был), данные из формы заносятся в таблицу, при этом, данные не из списков (то есть эти поля код не обрабатывает), то есть данные из текстовых полей и т.д. попадают в таблицу как запись 1, а данные из списков (списки обрабатваются кодом) попадают в запись 2, то есть при одном заполнении формы, в таблице появляются 2 записи, вместо 1
как можно разрешить данную задачу?
1. можно ли код обрабатывающий списки, привязать к стандартным кнопкам (нопример переход по записи вперед, к сл записи)
вот такая проблема
PM MAIL   Вверх
Akina
Дата 1.4.2005, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата
данные из текстовых полей и т.д. попадают в таблицу как запись 1, а данные из списков (списки обрабатваются кодом) попадают в запись 2

Значит неправильно делаешь. Вместо программного создания новой записи надо изменять данные в сцществующей записи.
Не INSERT INTO Table, а UPDATE Table SET Field="..."


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

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


Шустрый
*


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

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



Код


strSQL = "UPDATE Table Fachbesucher SET Field (Thema, Ziele, Wirtschaftszweig, Aufgabenbereich) VALUES ('" & strTemp1 & "', '" & strTemp2 & "', '" & strTemp3 & "', '" & strTemp4 & "');"
DoCmd.RunSQL strSQL


такой синтаксис правильный

Добавлено @ 11:53
это в справке нашел
recordset.Update Fields, Values
record.Fields.Update
Добавлено @ 11:59
ошибку пишет
Код


strSQL = "UPDATE Table Fachbesucher SET Field (Thema, Ziele, Wirtschaftszweig, Aufgabenbereich) VALUES ('" & strTemp1 & "', '" & strTemp2 & "', '" & strTemp3 & "', '" & strTemp4 & "');"
DoCmd.RunSQL strSQL

PM MAIL   Вверх
Ринат
Дата 1.4.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



смотрю ман, спасибо за ответ!!!
Добавлено @ 12:22
написал запрос, выводит, что 0 полей актуализировано
Код

strSQL = "UPDATE Fachbesucher SET Thema ='" & strTemp1 & "', Ziele ='" & strTemp2 & "',Wirtschaftszweig ='" & strTemp3 & "',Aufgabenbereich='" & strTemp4 & "'"

DoCmd.RunSQL strSQL


Добавлено @ 12:24
то есть получается сл, в первую запись не вносит, когда заполняю 2 запись, потом нажимаю кнопку, и данные акутуализируются в первой записи (соответствующие поля во второй записи остаются пустыми), то есть актуализируется предыдущая запись, а не текущая

Это сообщение отредактировал(а) Ринат - 1.4.2005, 12:52
PM MAIL   Вверх
Ринат
Дата 1.4.2005, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



попрубую сначала вставить пустые значения потом их обновить, все в одном коде
пробую
Добавлено @ 12:41
написал, результат тот же
вот код
Код

strSQL1 = "INSERT INTO Fachbesucher (Thema, Ziele, Wirtschaftszweig,Aufgabenbereich) VALUES ('""', '""', '""','""');"
strSQL = "UPDATE Fachbesucher SET Thema ='" & strTemp1 & "', Ziele ='" & strTemp2 & "',Wirtschaftszweig ='" & strTemp3 & "',Aufgabenbereich='" & strTemp4 & "'"
DoCmd.RunSQL strSQL1
DoCmd.RunSQL strSQL
End Sub

все же как граммотно сделать, чтобы данные из списков (списки обрабатываются кодом) попдали в одну запись с другими данными формы
спасибо!
PM MAIL   Вверх
Ринат
Дата 1.4.2005, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



такой вариант тоже не проходит smile
Код

strSQL = "UPDATE Fachbesucher SET Thema ='" & strTemp1 & "', Ziele ='" & strTemp2 & "',Wirtschaftszweig ='" & strTemp3 & "',Aufgabenbereich='" & strTemp4 & "', WHERE id = id -1"


PM MAIL   Вверх
Ринат
Дата 1.4.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



и все же как? люди,, правда парюсь smile smile
PM MAIL   Вверх
Akina
Дата 1.4.2005, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Все, надоело.

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

Кроме того, у тебя в форме есть несколько листбоксов, допускающих множественное выделение. И ты хочешь чтобы выделенные в них записи были собраны в одну и занесены в другие поля той же таблицы в ту же запись (строку).

Верно?


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

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


Шустрый
*


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

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



да именно так
PM MAIL   Вверх
Ринат
Дата 1.4.2005, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



просто идея моя такова, чтобы сравнить id, чтобы данные помещались в туже строку id которой указан в форме

PM MAIL   Вверх
Akina
Дата 1.4.2005, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Тогда включай мозги.

Когда происходит создание новой записи и занесение в нее данных из текстовых полей? Когда ты покидаешь эту запись и переходишь на другую. До того новой записи в БД просто не существует. А ты пытаешься в эту несуществующую запись затолкать программно данные из листбоксов. Есссно ни хрена не получается. И не получится.

Теперь что с этим делать.

1) Разделить таблицу на 2 таблицы - в одной оставить поля, которые заполняются через текстовые поля формы, во вторую вынести те, которые создаются программно. В первую добавить поле типа "Счетчик" и сделать его ключевым. Во вторую - поле типа "Длинное целое" - и его тоже сделать ключевым. Связать в схеме данных таблицы по этим полям, соотношение "один к одному".
2) На форму добавить скрытое поле счетчика из первой таблицы. Это для того, чтобы можно было легко получить номер для связи. Пока и так сойдет.
3) Теперь когда ты должен собирать контент из листбоксов, ты (как выше) добавляешь новую запись в таблицу 2. Но кроме собранных данных ты туда же заносишь и номер из скрытого поля счетчика:
Код

DoCMD.RunSQL "INSERT INTO Table2 (ID, Filed1, Field2, ...) VALUES (" & CounterTextBox.Value & ", " & DataFromListBox1 & ", " & DataFromListBox2 & ", " & ... & ")"

4) Когда же ты произведешь переход на другую запись - в таблицу 1 поступят данные из текстовых полей формы, в т.ч. и ключевое поле-счетчик, которое ты не даешь редактировать и которое имеет то же значение, что ты занес в таблицу 2. Записи немедленно связываются воедино.

Возможная проблема.

После занесения данных в таблицу 2 юзер может отказаться от записывания введенных данных, в результате чего в таблице 1 новая запись не образуется.
При следующем занесении записи в таблице 1 будет выдан тот же ID, и при программном выполнении запроса на пополнение таблицы 2 ты получишь ошибку повторения ключа.
поскольку зависшие в таблице 2 данные ни к чему не относятся, тебе придется отлавливать эту ошибку и (если она произошла) удалять эту запись, после чего повторять занесение новой записи:
Код

On Error Goto ErrorHandler
....
ErrorHandler:
If (Err.Number = Ошибка добавления записи в таблицу из-за повторения индекса) Then
    DoCMD.RunSQL "DELETE * FROM Table2 WHERE ID = " & CounterTextBox.Value & ";"
    Err.Clear
    Resume 0
End If




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

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


Шустрый
*


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

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



СУПЕР! СДЕЛАЛ ! получилось! огромное спасибо !!! за готовое решение...спасибо!
супер вобще, все работает как часы....огромное спасибо! получилось!
еще раз спасибо за советы! очень помогло, и в принципе в голове некотрые вещи прояснились по БД
PM MAIL   Вверх
Akina
Дата 1.4.2005, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ок. позакрывай свои темы, по которым вопрос решен...


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

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

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

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

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


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

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


 




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


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

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