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

Dim dbs as Database,tbl as Recordset

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

Вместо dbOpenDynaset в этом случае лучше dbOpenTable
...
Рейтинг: 0 / 0
17.12.2002, 15:12
    #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
17.12.2002, 15:29
    #32080522
ДиД
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу
А если я Вас спрошу: какая библиотека подключена? DAO или ADO?
Если DAO то Dim dbs as DAO.Database,tbl as DAO.Recordset
Если ADO то и прога работать в том выражении, что Вы написали, не будет.
Скорее всего у Вас включена ADO; либо DAO включена, но стоит ниже, чем ADO.
...
Рейтинг: 0 / 0
05.01.2003, 14:02
    #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
05.01.2003, 14:48
    #32086756
Suslik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу
Пиши явно:

Код: plaintext
Dim tbl As DAO.Recordset


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

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


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

В этом проблема или всё-таки это опечатка?
...
Рейтинг: 0 / 0
06.01.2003, 00:54
    #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
06.01.2003, 12:45
    #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
07.01.2003, 08:09
    #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
07.01.2003, 11:25
    #32087096
stela
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу
Ну что вы там, все еще спите? Ну скажите, что эта решение - бредовая идея и я, наконец, пойду спать:)
...
Рейтинг: 0 / 0
07.01.2003, 12:00
    #32087099
stela
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление записи в таблицу
До меня дошло! Никого нет на работе. Веселого РОЖДЕСТВА, ребятки!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление записи в таблицу / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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