Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CRecordset::Open(), Отказ от SQL запроса 
:(
    Опции темы
Coocky
Дата 14.10.2004, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Работаю с БД.В первом проекте создал СRecordset rs;
rs.Open() нормально отрабатывал все запросы на выборку.Но ,поняв,что работать без RFX не возможно,обратился к AppWizard_у.С его помощью создал класс,производній от CRecordset,вызвал Open()...При SELECT * FROM TABLE,работает нормально,но остальное не отрабатывает.К примеру SELECT DISTICT NAME FROM TABLE или SELECT NAME FROME TABLE.Выдает "Ошибка при выборе записей".
Кто виноват и что делать?Проект коммерческий.Горю.Помогите...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 14.10.2004, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



А воз и ныне там...


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
AlexNor
Дата 14.10.2004, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 11.6.2004

Репутация: нет
Всего: 2



С какой БД работаеш?
>SELECT NAME FROME TABLE
чё такое NAME - типа имя колонки?
TABLE - типа имя таблицы?

Инфы маловато...
dwOptions - что ты передаёш?


P.S. Мой совет - забей на CRecordset - используй ADO - гемора конечно разбираться с ним на C++ через интерфейсы много - зато потом возможностей куча...

Это сообщение отредактировал(а) AlexNor - 14.10.2004, 23:46
--------------------
"... зачем тратить время на учение, если невежество даётся даром..."" .... но невежество обходится, порой, слишком дорого... "
PM MAIL   Вверх
Coocky
Дата 15.10.2004, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
С какой БД работаеш?

Access
Цитата
чё такое NAME - типа имя колонки?
TABLE - типа имя таблицы?

Воистину так smile.gif
Цитата
Инфы маловато...

Код
CMyRecordset rs.Open(CRecordset::dynaset,SQL запрос);

Дело в том(внимательно читайте начало),что когда работаю без RFX просто с CRecordset все нормально,но стоить добавить свой класс производный от CRecordset,половина запросов не работает.Может дело в RFX?Я б от него отказался,но надо работать с удалением,записью полей.
И запрос не последнюю роль играет!
Может кто ссылочку на исходник кинет хотя бы?
Цитата
Мой совет - забей на CRecordset - используй ADO

Может DAO?ADO вроде как только в разработке.Да и нет времени изучать...
Помогите sample.gif



--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Coocky
Дата 15.10.2004, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Хорошо.Давайте оставим в покое RFX.Кто-нибудь знает как добавлять и редактировать записи без RFX.Уже иду на что угодно...
З.Ы.Неужели с БД никто не работает sad.gif


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
AlexNor
Дата 15.10.2004, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 11.6.2004

Репутация: нет
Всего: 2



Цитата
Может дело в RFX?

Что такое RFX? Я не знаю что значит RFX.

Цитата

Но стоить добавить свой класс производный от CRecordset,половина запросов не работает.

А причём здесь то что ты наследуеш от CRecordset???
Я что то вообще ничего не понимаю..

Получается у тебя выходит так:
CRecordset rec;
CMyRecordset Myrec;

rec.Execute('select name from table'); // работает
Myrec.Execute('select name from table'); // не работает
......
или я что то не понял...

Цитата

Может DAO?ADO вроде как только в разработке.Да и нет времени изучать...

В какой-такой разработке??? Она уже очень давненько разработана! - просто дорабатывается понемногу - глюки всё такое - всё как всегда у микросакса.
Забудь про DAO - это ОЧЕНЬ старая весчь! Если токо ты не пишеш простую весч.

Да не спорю ADO - тот ещё гемор особенно под С++ - это блин не Васик. Но я уже писал БД под ADO на С++ + MFC (хотя это страшный изврат - такие вещи быстрее и качественнее на C# выйдет сделать) - гемор конкретный с этими интерфейсами - но и возможностей туева хучка...

Насчёт Recordset - я просто так и не понял суть твоей проблемы (то что проблема есть я понял smile.gif )

Насчёт ADO. Вот небольшой пример:
#import "c:\program files\common files\system\ado\msado15.dll" rename ( "EOF", "adoEOF" )

HRESULT hr = S_OK;
ADODB::_ConnectionPtr Conn1 = 0;
ADODB::_CommandPtr Cmd1 = 0;
ADODB::_RecordsetPtr Rs1 = 0;

Conn1.CreateInstance( __uuidof( ADODB::Connection ) );
Conn1->ConnectionString = _T("DRIVER=Driver do Microsoft Access (*.mdb); Data Source=D:\db2.mdb; Initial Catalog=D:\\;UID=admin'");
Conn1->PutCursorLocation(ADODB::adUseClient);
if ( FAILED(Conn1->Open( _T(""), _T(""), _T(""), -1 )))
{
AfxMessageBox(_T("Ошибка при к БД"));
return false;
}
//создаём command
Cmd1.CreateInstance( __uuidof( ADODB::Command ) );
Cmd1->ActiveConnection = Conn1;

_bstr_t bstrt = _T("select column1, column2 from table mytable");
Cmd1->CommandText = bstrt;
Cmd1->CommandType = ADODB::adCmdText;

// Open Recordset
_variant_t vtEmpty1 (DISP_E_PARAMNOTFOUND, VT_ERROR);
_variant_t vtEmpty2(DISP_E_PARAMNOTFOUND, VT_ERROR);

Rs1 = Cmd1->Execute( &vtEmpty1, &vtEmpty2, ADODB::adCmdUnknown );

//в Rs1 - таблица содержащая результат запроса
.......

и т.д.
Дальше MSDN в руки и с песней smile.gif

CRecordset - я пользовался - проблем таких не возникало.
--------------------
"... зачем тратить время на учение, если невежество даётся даром..."" .... но невежество обходится, порой, слишком дорого... "
PM MAIL   Вверх
Coocky
Дата 16.10.2004, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
Что такое RFX? Я не знаю что значит RFX.
biggrin.gif biggrin.gif biggrin.gif
Это механизм обмена данными,типа DDX wink.gif
Цитата
Получается у тебя выходит так:
CRecordset rec;
CMyRecordset Myrec;
biggrin.gif biggrin.gif biggrin.gif
Нет.CMyRecordset:public CRecordset; wink.gif Только так можно перегрузить виртуальные функции для обмена данными через RFX;
Цитата
Насчёт Recordset - я просто так и не понял суть твоей проблемы

Проблема в том ,что когда перегружаешь функции для обмена данными через RFX,CMyRecordset::Open(); не выполняет многие запросы.Хотя CRecordset работает нормально smile.gif
Я нашел ответ.Смотри топик.

Это сообщение отредактировал(а) Coocky - 16.10.2004, 13:37


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
Cashey
Дата 16.10.2004, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Coocky @ 14.10.2004, 16:10)
К примеру SELECT DISTICT NAME FROM TABLE или SELECT NAME FROME TABLE.Выдает "Ошибка при выборе записей".

Во первых не DISTICT, а DISTINCT. Возможно дело в обыкновенной опечатке?
А во-вторых, обработка из С++ или Дельфи ведеться через внешние драйвера, в твоем случае, я так понял, через какое-то RFX, возможно он не поддерживает или криво работает. А еще из своего опыта работы с SQL могу сказать, что он плохо работает с русскими буквами, это отдельно настраивается из среды, а потому может стоит проверить на таблице с латинскими символами?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Coocky
Дата 16.10.2004, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
Во первых не DISTICT, а DISTINCT.

Это я сдесь ошибся :) Е сли бы я ошибся в выборке,драйвер выдал бы сообщение.Но вообщем тема закрыта :)
Цитата
я так понял, через какое-то RFX, возможно он не поддерживает или криво работает.

Согласен.Это я и хотел сказать.И описал проблему решения кривизны :)


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
mr.DUDA
Дата 17.10.2004, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 25
Всего: 232



Coocky, загляни в FAQ, тема про ADO. Там выложен набор класс для работы с ADO через CRecordset и проч. известные тебе классы, но средствами ADO.


--------------------
user posted image
PM MAIL WWW   Вверх
Coocky
Дата 17.10.2004, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


GUI гуру
****


Профиль
Группа: Участник Клуба
Сообщений: 2879
Регистрация: 16.2.2004
Где: Украина. Запорожь е

Репутация: 2
Всего: 62



Цитата
Coocky, загляни в FAQ, тема про ADO. Там выложен набор класс для работы с ADO через CRecordset и проч. известные тебе классы, но средствами ADO

А мое решение через ODBC не подойдет?


--------------------
Верю в смерть после жизни, в любовь после секса ,в крем после бритья smile        
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.