powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу
13 сообщений из 13, страница 1 из 1
Добавление записи в таблицу
    #32080102
Как
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Set tbl = CurrentDb().openrecordset("Таблица1", dbOpenDynaset) - Ошибка:ОШИБОЧНЫЙ АРГУМЕНТ Почему, в чем дело???? Спасибо!!!
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32080232
Yran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Надо писать:

Dim dbs as Database,tbl as Recordset

Set dbs=CurrentDb
Set tbl = dbs.openrecordset("Таблица1", dbOpenDynaset)

Вместо dbOpenDynaset в этом случае лучше dbOpenTable
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32080501
July
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dim dbs as Database,tbl as Recordset

Set dbs=CurrentDb
Set tbl = dbs.openrecordset("QQ", dbOpenDynaset)

tbl.AddNew
tbl!Tip = "Ночные часы"
tbl.Update
tbl.Close


Ошибка:Type mismatch!
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32080522
ДиД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если я Вас спрошу: какая библиотека подключена? DAO или ADO?
Если DAO то Dim dbs as DAO.Database,tbl as DAO.Recordset
Если ADO то и прога работать в том выражении, что Вы написали, не будет.
Скорее всего у Вас включена ADO; либо DAO включена, но стоит ниже, чем ADO.
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32086731
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ok, а если усложним задачу... К примеру, вот такие дикие условия на значения заполняемых полей:
Процедура из подчиненной формы SubInv([BOQty] вычисляется там)
Значения для полей находятся из двух различных таблиц по условию из основной формы Inv. Реакции никакой, убила вечер и пол-ночи:).

Dim dbs As Database, tbl As Recordset
Dim strFilter As String
If [BOQty] > 0 Then
Set dbs = CurrentDb
Set tbl = dbs.OpenRecordset("BackOrder", dbOpenTable)
tbl.AddNew
tbl!BO_Numb = DLookup([OrderNumb], "Orders", [OrderID] = "" _
& Forms!Invoice!OrderID) + "/1"
tbl!RsMdID = DLookup("[RSID]", "RSMainDocuments", "[InvoiceID] = " _
& Forms![Invoice]!InvoiceID)
tbs.Update
tbs.Close
Set dbs = Nothing
End If
End Sub
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32086756
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пиши явно:

Код: plaintext
Dim tbl As DAO.Recordset


проблем не должно быть. Также (на всякий случай) указывай явно библиотеку и при открытии рекордсета:

Код: plaintext
1.
Set tbl = dbs.OpenRecordset( "BackOrder" , DAO.dbOpenTable) 


Что касается DAO.dbOpenDynaset - его тоже можно без проблем использовать. Для добавления записи значения не имеет, но зато даёт делать поиск по таблице.
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32086772
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет результата:( То есть Аccess ни на что не ругается, просто не добавляет запись. Попробовала и DAO указать и поменяла dbOpenTable на dbOpenDynaset... ничегошеньки
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32086785
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну естественно! Если это действительно код программы, то зачем делать
tbl.addnew, а потом tbs.update? Либо tbl, либо tbs.

В этом проблема или всё-таки это опечатка?
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32086871
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To: Suslik
Конечно, это опечатки, вернее остатки от моих изысков:) Подправив все, тоже ничего не выходит. Получилось только когда я вставила в SubInv поле [OrderNumb], и в лоб присвоила это значение:

Private Sub Form_AfterUpdate()
Dim dbs As Database, tbl As DAO.Recordset
Dim strFilter As String
If [BOQty] > 0 Then
Set dbs = CurrentDb
Set tbl = dbs.OpenRecordset("BackOrder", DAO.dbOpenDynaset)
tbl.AddNew
tbl!BO_Numb = LTrim(Str([OrderNumb])) + "/1"
'tbl!RsMdID = DLookup("[RSID]", "RSMainDocuments", "[InvoiceID] = " _
& Forms![Invoice]!InvoiceID)
tbl.Update
tbl.Close
Set dbs = Nothing
End If
End Sub

Но если включить предложение для второго поля tbl!RsMdID опять ничего не выходит. Не хочется пихать в запрос этой подчиненной формы лишние таблицы и в форму - "невидимые поля". Может DLookup не годится для этого случая?
Все равно, большое спасибо за советы. С Новом годом!
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32086907
Suslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно и не годится. В Help'е явно сказано:

Unsaved changes to records in domain aren't included when you use this function. If you want the DLookup function to be based on the changed values, you must first save the changes by clicking Save Record on the File menu, moving the focus to another record, or by using the Update method.

Проблема может быть и в этом.

Вообще говоря, хоть и очень хочется, но к DLookUp лучше не прибегать, даже если это и кажется очень удобным. Гораздо эффективнее и грамотнее всё же включать в RecordSource для формы все необходимые поля, если это возможно в конкретном контексте.
Что касается неработающего примера, то я бы искал проблему следующим образом:
1. Для начала, разумеется, я бы пробежался по коду с помощью F8 и проверял бы значение всех полей и переменных с помощью Debug.Print, чтобы убедиться, что там именно те значения, которые должны быть.
2. Я бы исправил строчку с DLookUp на такое:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim TempId As Long
...
TempId = DLookUp( "[RSID]" ,  "RSMainDocuments" ,  "[InvoiceID] = "  & Forms![Invoice]!InvoiceID) 

'либо, если сработает:

TempId = DLookUp( "[RSID]" ,  "RSMainDocuments" ,  "[InvoiceID] = "  & Me.Parent.InvoiceID) 
tbl!RsMdID = TempId
(Кстати, а почему в исходном тексте эта строка закомментирована?)
3. Выполнил бы весь код не в событии AfterUpdate, а где-нибудь в другом месте. Скажем, повесил бы на нажатие кнопки, которую временно создал бы специально для этого
4. Если ничего не помогло, внимательно посмотрел бы на структуру таблиц, на отношения между главной/подчинённой формами, на прочие технические мелочи
5. Если опять ничего не помогло, то написал бы в форум вопрос. :)

А вообще, лучше добавить поля в RecordSource...
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32087080
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну прямо в точку попал:) Я уже добавила в RecordSource подформы Order_Numb поэтому, то он и сработал, там прямая связь таблица с запросом, но не могу добавить поле RSID и вот почему...

Дело в том, что эту ... историю я затеяла не от хорошей жизни:)
Пробую отобразить в базе такую жизненную ситуацию:
Организуется Order, на основе которого выдается Invoice. В процессе заполнения поля для отправки оборудования (эта наша подчиненная форма SubInv) выясняется, что чего-то ну просто нет на складе. Вычисляется BOQty кол-во недостающих единиц по каждому продукту и, в энтот момент необходимо автоматическое создание записи в таблице BackOrders (ну и визуальное отображение для юзера). Все было бы логично и красиво, если бы не... На основе Back Order (ВО) нам нужно будет тоже создать инвойс, причем со всеми ссылочками на оригинальные ордер и инвойс (две отдельных таблицы с инвойсами - немного ненормально). В свою очередь, этот инвойс может породить другой BO (к примеру, клиет не может ждать и мы отправляем только часть недостающего оборудования) Не утомила?:) Дико, правда? Ну я попыталась выйти из ситуации (ссылка: BO-Invoice - Invoice-BO) путем создания промежуточной таблицы RsMd, где находится связка оригинальный Оrder-оригинальный Invoice и сослала BO на "еешний" ID. При добавлении в RecordSource RSID запрос закрывает разрешение на добавление записей. О! появилась идейка! Щас проверю. Вот чего мне нехватает, так это обсуждения с кем-нибудь проблемы организации алгоритма, когда объясняешь, находишь какой-нибудь выход...
Может, не права, не знаю. Буду пробовать продолжать через неделю (завтра уезжаю). А help я читаю регулярно, без него никуда:)

Спасибо за программу действий, вышло круто:)
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32087096
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что вы там, все еще спите? Ну скажите, что эта решение - бредовая идея и я, наконец, пойду спать:)
...
Рейтинг: 0 / 0
Добавление записи в таблицу
    #32087099
Фотография stela
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
До меня дошло! Никого нет на работе. Веселого РОЖДЕСТВА, ребятки!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]