Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2010, 18:40   #1
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию Recordset - присваивание значения поля

Код:
Private Sub GotoEtap_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim rs2 As DAO.Recordset
Dim s As String
Dim d1 As String
Dim d2 As String
Set db = CurrentDb

Set rs = db.OpenRecordset("InWork")
rs.AddNew
rs![Заказчик] = Forms![InWorkForm].Controls![Заказчик].Value
rs![Тип] = Forms![InWorkForm].Controls![Тип].Value
rs![Мощность] = Forms![InWorkForm].Controls![Мощность].Value
rs![дата1] = Forms![InWorkForm].Controls![дата1].Value
rs![дата2] = Forms![InWorkForm].Controls![дата2].Value
rs![этап] = Forms![InWorkForm].Controls![этап].Value
Set rs1 = db.OpenRecordset("InWork_Kol")
d1 = rs1![Код]
d2 = rs1![Count-Заказчик]
s = d1 + d2
rs![ID] = s
rs.Update

End Sub
Проблема в том, что он выводит S в строку ниже чем текущая. Скрин прилагаю. MovePrevious не помогает.
Изображения
Тип файла: jpg 1.jpg (7.6 Кб, 56 просмотров)

Последний раз редактировалось Desha; 11.06.2010 в 19:14.
Desha вне форума Ответить с цитированием
Старый 11.06.2010, 18:49   #2
AdrenalinE
Пользователь
 
Аватар для AdrenalinE
 
Регистрация: 29.09.2007
Сообщений: 95
По умолчанию

А если поменять местами rs.AddNew и rs![ID] = s?
AdrenalinE вне форума Ответить с цитированием
Старый 11.06.2010, 18:57   #3
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию

Он не даст присвоить. Пишет что UpDate не возможно без addnew или edit.

Последний раз редактировалось Desha; 11.06.2010 в 19:15.
Desha вне форума Ответить с цитированием
Старый 11.06.2010, 19:14   #4
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Desha.
измените в коде одну строку
Код:
rs.Edit ' AddNew
rs![ID] = s
rs.Update
и думаю - будет Вам счастье.
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 11.06.2010, 19:20   #5
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию

Я нашла в чем проблема. Исправила. Код исправила, сделала правку выше и привела полный код. Только теперь проблема.
Код:
Set rs1 = db.OpenRecordset("InWork_Kol")
d1 = rs1![Код]
d2 = rs1![Count-Заказчик]
Если таблица InWork_Kol нет записей, то выдает ошибку, что не удивительно =). Но дело в том, что записи в InWork_Kol появляются после заполнения данных в InWork. То есть он в первой части записывает данные в таблицу. Далее запрос считает количество записей. а вот в
Код:
d2 = rs1![Count-Заказчик]
уже присваивает количество записей полю в эту же таблицу. Какможно обыграть эту ошибку.

Последний раз редактировалось Desha; 11.06.2010 в 19:35.
Desha вне форума Ответить с цитированием
Старый 11.06.2010, 20:25   #6
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Desha.
"..записи в InWork_Kol появляются после заполнения данных в InWork.." - InWork_Kol это запрос?
если Да то его использование не совсем корректно, возможно стоит "упростить" подобным образом:
Код:
Private Sub GotoEtap_Click()
Dim db As DAO.Database, rs As DAO.Recordset
Dim s As String, d1 As String, d2 As String
Set db = CurrentDb

Set rs = db.OpenRecordset("InWork")
rs.AddNew
With Forms![InWorkForm]
    rs![Заказчик] = .[Заказчик]
    rs![Тип] = .[Тип]
    rs![Мощность] = .[Мощность]
    rs![дата1] = .[дата1]
    rs![дата2] = .[дата2]
    rs![этап] = .[этап]
End With
rs.Update

d1 = rs![Код]
d2 = rs!RecordCount
s = d1 + d2 'это конкатенация текста а не сложение значений, так задумано?

rs.Edit
rs![ID] = s
rs.Update

End Sub
Евгений.
Teslenko_EA вне форума Ответить с цитированием
Старый 11.06.2010, 20:38   #7
Desha
Форумчанин
 
Аватар для Desha
 
Регистрация: 06.04.2009
Сообщений: 124
По умолчанию

Код:
s = d1 + d2
- да конкатенация, так надо.
Код:
d1 = rs![Код]
d2 = rs!RecordCount
rs - ссылается на InWork, а поле Код находится в запросе InWork_Kol
так что ошибочку выдает - элемент не обнаружен в семействе
Desha вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить значение поля грид на основе значения другого lookUp поля malayka БД в Delphi 0 21.04.2010 19:06
разбивка значения поля на символы NoMoreNick Microsoft Office Access 1 11.04.2010 19:39
Присваивание ячейке значения в зависимости от условия DimonPS Microsoft Office Excel 3 12.11.2009 14:01
Присваивание тексту Memo значения из TStringList Alex Cones Общие вопросы Delphi 10 14.08.2009 21:07
Уникальность значения поля maks233 Microsoft Office Access 1 13.01.2009 14:14