Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet / 18 сообщений из 18, страница 1 из 1
26.12.2004, 17:46
    #32845177
pelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delete строку в БД. Подскажите, где искать этот флажок read-only в Recordsete. Каркас проекта создавался Мастером в Visual C++.Net . Подсоединяюсь к SQL серверу
CString CTestSet::GetDefaultConnect()
{
return _T("DSN=DataSourceTest;APP=Microsoft\x00ae Visual Studio .NET;WSID=AAA-5RHDC48GY3I;Trusted_Connection=Yes");
}
Не сочтите за труд черкнуть пару строк...
...
Рейтинг: 0 / 0
04.01.2005, 17:54
    #32853795
mahorkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Пусть не совсем в тему, но может поможет найти проблему...

Я получал такой же мессаг, когда пытался читать из MS Access базы. Проблема была в том, что файл бд был read-only (file properties -> read-only check box). Я к тому, что возможно проблема не в приложении, а в ограничения установленных на уровне ОС или сервера БД.
...
Рейтинг: 0 / 0
04.01.2005, 20:32
    #32853880
Фича
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Этот вопрос я уже задавал, к сожалению НИКТО НЕ ОТВЕТИЛ,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
НО МНЕ КАЖЕТСЯ , ЧТО НАДО ReadOnly надо на что-то другое
поменять, чтобы можно было ОБНОВЛЯТЬ БАЗУ ДАННЫХ,

а именно УДАЛЯТЬ, ДОБАВЛЯТЬ, UpdateData , а раз стоит
 ТОЛЬКО ЧИТАТЬ, ЗНАЧИТ 

УДАЛЯТЬ, ДОБАВЛЯТЬ, UpdateData

НЕЛЬЗЯ. В ЭТОМ И ОШИБКА, А КАК ЭТО СДЕЛАТЬ, К СОЖАЛЕНИЮ

МОИ ПОИСКИ В   ШЕДЕВРЕ , КАКИМ ЯВЛЯЕТСЯ

MSDN , НЕ ПРИВЕЛИ К УСПЕХУ. Конечно, я ПЛОХО ИСКАЛ.
НАЙДИ В НЁМ ПРИМЕР  ENNROLL  9  за правильность названия не ручаюсь)

но ТАМ РЕАЛИЗОВАНО ДОБАВЛЕНИЕ, УДАЛЕНИЕ ЗАПИСЕЙ.
Вот и всё, к сожалению НЕ ПРЯМОЙ ОТВЕТ.
...
Рейтинг: 0 / 0
05.01.2005, 13:47
    #32854361
pelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Спасибо, что откликнулись!
С самой базой вроде все нормально, через Server Explorer я могу модифицировать базу, а вот в своей программульке - никак:(
Пример с добавлением, удалением я уже пробовала для своей базы, результат тот же - "Recordset is read-only".
Может, еще что подскажете?...
...
Рейтинг: 0 / 0
05.01.2005, 14:00
    #32854374
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
pelenaчерез Server Explorer я могу модифицировать базу, а вот в своей программульке - никак

Под той-же учетной записью ходишь?
...
Рейтинг: 0 / 0
05.01.2005, 15:05
    #32854482
ФИЧА
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
pelena, высылаю ПРИМЕР

Могу выслать пример daoenrol.zip , в котором
реализован
ДОБАВИТЬ НОВУЮ
УДАЛИТЬ ТЕКУЩУЮ ЗАПИСЬ
в базе данных ACCESS , VISUAL C++ 6.0
Благо,что РАЗМЕР НЕ БОЛЬШОЙ .
...
Рейтинг: 0 / 0
06.01.2005, 22:41
    #32855782
pelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Что имеется ввиду под учетной записью? В Server Explorer мне даже соединения создавать не пришлось, там уже все было - и мой сервер, и мои базы.
За пример большое спасибо, посмотрю, попробую, хотя и сомневаюсь, что это что-то изменит. Я уже и ODBC, и OLE попробовала, попробую и DAO.
...
Рейтинг: 0 / 0
11.01.2005, 10:02
    #32858406
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Причин может быть несколько... это либо способ открытия самого rs либо ваш источник не м.б. обновлен (это пр-ра; в запросе union, distinct и т.д.)
Вы бы сказали что за база, показали как открываете rs и сам текст sql.
...
Рейтинг: 0 / 0
11.01.2005, 13:08
    #32858893
pelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Самое интересное, что если я без помощи мастера сама создаю соединение, то могу модифицировать базу. А этот мастер очень хитро как-то подключается, никакого тебе .Open(). Он определяет класс - потомок Recordseta, у которого две функции GetDefaultConnect(), GetDefaultSQL(), с помощью которых видимо и происходит подключение и выборка значений.

class CTest1Set : public CRecordset
{
public:
CTest1Set(CDatabase* pDatabase = NULL);
DECLARE_DYNAMIC(CTest1Set)
overrides
public:
virtual CString GetDefaultConnect(); // Default connection string
virtual CString GetDefaultSQL(); // default SQL for Recordset
virtual void DoFieldExchange(CFieldExchange* pFX); // RFX support
}

Вот как выглядят у меня эти функции:
CString CTest2Set::GetDefaultConnect()
{
return _T("DSN=DataSourceTest;WSID=AAA- 5RHDC48GY3I;DATABASE=master;Trusted_Connection=Yes
");
}

CString CTest2Set::GetDefaultSQL()
{
return _T("SELECT * FROM PriceList ORDER BY ProductName");
}

Внимание, вопрос: как сделать подключение не только для чтения??????
...
Рейтинг: 0 / 0
11.01.2005, 20:01
    #32860054
Ivan:M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Попробуй сделать так

Код: plaintext
1.
2.
3.
4.
CString CTest2Set::GetDefaultSQL()
{
    return _T("PriceList");
}
...
Рейтинг: 0 / 0
11.01.2005, 21:30
    #32860097
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
>> Попробуй сделать так ...

А тогда сортировка не пропадёт? Мне кажется, почему-то, что это из-за ORDER BY ProductName. Если её убрать, то обновляться будет. Но ведь раз её поставили, значит она нужна!
...
Рейтинг: 0 / 0
13.01.2005, 15:08
    #32863379
pelena
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Пробовала и без сортировки - все равно только для чтения!!!
...
Рейтинг: 0 / 0
13.01.2005, 15:27
    #32863449
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Дурацкий вопрос, на всякий случай: А первичный ключ в PriceList есть?
...
Рейтинг: 0 / 0
13.01.2005, 15:29
    #32863457
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
И курсор какой - сервеный или клиентский?
...
Рейтинг: 0 / 0
13.01.2005, 23:05
    #32864146
Ivan:M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
В ADO для решения данной проблемы необходимы две вещи.

1. LockType. Должен быть не adLockReadOnly. Например подойдет adLockOptimistic.
2. CommandType. Должен быть не adCmdText, adCmdUnknown и тому подобное. Это обязательно . В MSDN практически нигде явно это не написано, но в принципе понятно почему это так. Допустимым является adCmdTable.

Не знаю как там для ODBC, но, думаю, примерно то же самое. Нельзя писать запрос типа SELECT. Иначе у тебя получается что-то типа
Код: plaintext
1.
INSERT INTO (SELECT * FROM TableName ORDER BY ColumnName) VALUES (...)
...
Рейтинг: 0 / 0
14.01.2005, 00:30
    #32864178
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
Ещё тип курсора не должен быть adOpenForwardOnly. Подойдёт adOpenKeySet.

Кроме того, рекордсеты, полученные из селектов вполне могут быть обновляемыми, даже если в селекте есть условие WHERE.
...
Рейтинг: 0 / 0
14.01.2005, 00:37
    #32864184
www.fun4me.narod.ru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
И размещение курсора должно быть adUseClient.
...
Рейтинг: 0 / 0
14.01.2005, 21:49
    #32865953
Ivan:M
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet
www.fun4me.narod.ru
Кроме того, рекордсеты, полученные из селектов вполне могут быть обновляемыми, даже если в селекте есть условие WHERE.

Да, согласен. Могут. Мой пункт 2 отменяется :) Вот такой код на VBS отлично работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Set rs = CreateObject("ADODB.Recordset")

strConnection = "Provider=SQLOLEDB;Initial Catalog=Northwind;Data Source=SERVER;Integrated Security=SSPI;"
strCommand = "SELECT * FROM Products ORDER BY ProductName"

rs.Open strCommand, strConnection,  3 ,  3 ,  1 

rs.AddNew
rs("ProductName") = "Some Product"
rs.Update

rs.Close
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Горит, помогите плиз!!!!! "Recordset is read-only" - такая ругань при попытке Insert/Delet / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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