AddNew(Access2000)

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

AddNew(Access2000)

Сообщение Mao » 17.12.2004 (Пт) 18:47

Вот такая проблема: програмно создаю таблицу
Код: Выделить всё
  Set Tdf = CurrentDb.CreateTableDef("Profit")
  With Tdf
    .Fields.Append .CreateField("Goods", dbText, 200)
    .Fields.Append .CreateField("Profit", dbCurrency)
  End With
  CurrentDb.TableDefs.Append Tdf

Потом задаю рекордсет на эту таблицу
Код: Выделить всё
Set ProfitRst = CurrentDb.OpenRecordset("Profit", dbOpenDynaset)

Потом пытаюсь записать данные
Код: Выделить всё
    With ProfitRst
        .AddNew
        !Goods = Tov.Fields("Tovar")
        !Profit = ProfitTmp
        .Update
        .Bookmark = .LastModified
    End With

Так вот на метод AddNew выдает ошибку 3027, матерится что объект доступен только для чтения. В чем может быть ошибка??
Заранее спасибо за ответы. =)

3ton
Новичок
Новичок
 
Сообщения: 48
Зарегистрирован: 07.05.2004 (Пт) 10:56
Откуда: Kaliningrad

Сообщение 3ton » 18.12.2004 (Сб) 12:32

OpenRecordset Method

Creates a new Recordset object and appends it to the Recordsets collection.

Syntax

For Connection and Database objects:

Set recordset = object.OpenRecordset (source, type, options, lockedits)
For QueryDef, Recordset, and TableDef objects:

Set recordset = object.OpenRecordset (type, options, lockedits)


Попробу строку, например так:

Код: Выделить всё
Set ProfitRst = CurrentDb.OpenRecordset("Profit", dbOpenDynaset,,dbOptimistic )


Если есть MSDN, тогда почитай сдесь:
mk:@MSITStore:E:\MSDN98\98VS\1033\dao351.chm::/dameth04_265w.htm
Жить - хорошо! А хорошо жить - еще лучше!!!
Удачи! Шурик.

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 20.12.2004 (Пн) 22:24

3ton писал(а):OpenRecordset Method

Creates a new Recordset object and appends it to the Recordsets collection.

Syntax

For Connection and Database objects:

Set recordset = object.OpenRecordset (source, type, options, lockedits)
For QueryDef, Recordset, and TableDef objects:

Set recordset = object.OpenRecordset (type, options, lockedits)


Попробу строку, например так:

Код: Выделить всё
Set ProfitRst = CurrentDb.OpenRecordset("Profit", dbOpenDynaset,,dbOptimistic )


Если есть MSDN, тогда почитай сдесь:
mk:@MSITStore:E:\MSDN98\98VS\1033\dao351.chm::/dameth04_265w.htm

В таком варианте выдает 3001-ую ошибку "Ошибочный аргумент"
А что делать даж не знаю, не работает только с той таблицей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 21.12.2004 (Вт) 11:17

А может это вовсе не таблица , а сложный сохраненный запрос?

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 21.12.2004 (Вт) 23:50

Konst_One писал(а):А может это вовсе не таблица , а сложный сохраненный запрос?

Так написал же:
Код: Выделить всё
Set Tdf = CurrentDb.CreateTableDef("Profit")
....
Set ProfitRst = CurrentDb.OpenRecordset("Profit", dbOpenDynaset)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 22.12.2004 (Ср) 12:15

а кто будет рефреш делать?

Код: Выделить всё
CurrentDb.TableDefs.Refresh

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 22.12.2004 (Ср) 15:15

Konst_One писал(а):а кто будет рефреш делать?

Код: Выделить всё
CurrentDb.TableDefs.Refresh

Рефреш есть, я его только сюда не вписал.

Mao
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 95
Зарегистрирован: 10.10.2004 (Вс) 13:09

Сообщение Mao » 23.12.2004 (Чт) 16:22

И с рефрешом не работает, подскажите где тут собака порылась?? =((( Спасибо заранее за ответы.

snov
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 176
Зарегистрирован: 28.11.2003 (Пт) 10:12
Откуда: Челябинск

Сообщение snov » 23.01.2005 (Вс) 9:20

попробуй реализовать запросом
Код: Выделить всё
currentdb.execute "insert into Profit values ('" & tov.field("Tovar") & "'," & ProfitTmp & ")"


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList