|
|
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Помогите разобраться, как работать с БД в C++ (и где про это можно подробно почитать?). Пытаюсь открыть (CRecordset::Open) многотабличную таблицу с выборкой по таблицам, а он мне пишет про какой-то Error Retrieving Record. Никак не могу понять, что я делаю не так: когда я пытаюсь, к примеру, получить два поля из разных таблиц, то все ОК, а когда таких полей уже три - то он ни в какую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.09.2006, 19:38 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
http://rsdn.ru/archive/vc/issues/pvc027.htm http://www.rsdn.ru/archive/vc/issues/pvc033.htm http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/_core_Database_Topics_.28.General.29.asp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2006, 02:21 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Спасибо вам за ссылки – нечто подобное мне и требовалось. Но я так и не понял, как корректно выполнять многотабличные запросы (т.е. если мне нужно получить данные из нескольких таблиц - я пока даже этого толком не могу). Так что, тема все еще актуальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2006, 21:57 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Mr. White, как корректно выполнять многотабличные запросы (т.е. если мне нужно получить данные из нескольких таблиц - я пока даже этого толком не могу). Так что, тема все еще актуальна. сначала вы должны обьяснить что вы под этим понимаете ? Если Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2006, 22:28 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Mr. WhiteСпасибо вам за ссылки – нечто подобное мне и требовалось. Но я так и не понял, как корректно выполнять многотабличные запросы (т.е. если мне нужно получить данные из нескольких таблиц - я пока даже этого толком не могу). Так что, тема все еще актуальна. Может для начала вот это почитать: ;) http://www.sql.ru/docs/sql/u_sql/index.shtml +MSDN http://msdn2.microsoft.com/en-us/library/cce4z4fk.aspx Впрочем, с VC/MFC не работал, может там свои подводные камни на этот счёт, хотя маловероятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2006, 22:39 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
У меня не получается это: m_rsBooks.Open(CRecordset::dynaset, _T("SELECT Books.Name, Autors.Name, Izd.Name, Clerk.Name FROM BOOKS, AUTORS, IZD, CLERK")); Т.е. имеются четыре таблицы, и мне нужно получить из каждой по одному полю. Выдает ошибку Error Retrieving Record. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2006, 17:04 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
m_rsBooks - это класс, наследующий CRecordset. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2006, 17:09 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
БД какая? Не Access случайно? Вот: (правда, Last Review : December 10, 2003), но может и оно http://support.microsoft.com/default.aspx?scid=kb;en-us;155850 ..... One reason for this error is that a developer has specified a SQL statement as the second argument for the CRecordset::Open() function. In this case, the columns listed in the SQL SELECT statement must match the order by which the RFX functions are called in the CRecordset's DoFieldExchange(). The first RFX function maps to the first column returned in the recordset, the second RFX function maps to the second column, and so on. The exception is thrown when the RFX functions are out of order. Paying attention to the exception can save developers a lot of debugging time. ..... Попоробуй переставить местами поля в запросе. Кроме того, сам запрос - полное декартово произведение :) Ясно, что тестирование в разгаре, но может, всё-таки добавить where какой-нибудь... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2006, 22:43 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Была Access, но я от нее отказалась. Сейчас создал простенькую базу в Firebird с двумя таблицами и с несколькими полями (все заполнил). Я могу, например, открыть просто БД, не указывая дополнительно никакого запроса, но при попытки получить значение функцией GetFieldValue он мне резонно в этом отказывает. Но я никак не могу открыть базу, указав какой-нибудь запрос: m_rsBooks.Open(CRecordset::snapshot, _T("SELECT Books.Name, Authors.Name FROM Books, Authors WHERE Authors.Id=Books.A_Ref")); Выскакивает окошко с ошибкой: not yet implemented. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 20:51 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Mr. Whitenot yet implemented. Ну так это FireBird ещё в процессе разработки. А вот что именно у него not yet implemented - это лучше в соответствующей ветке форума спросить, указав версию. Можно попробовать, например, snapshot поменять на что-нибудь другое, но это так... пальцем в небо. А вообще документацию надо читать по используемым продуктам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 21:09 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Я читаю, но безуспешно – я не совсем понимаю, что я делаю не так. Кстати, ваш ответ меня еще больше запутал. Я не понимаю почему я не могу получить выборку из нескольких таблиц – что тут противозаконного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 21:53 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Mr. WhiteЯ читаю, но безуспешно – я не совсем понимаю, что я делаю не так. Кстати, ваш ответ меня еще больше запутал. Я не понимаю почему я не могу получить выборку из нескольких таблиц – что тут противозаконного? Какой ответ запутал? Что именно? Если с этой ссылкой (предпоследний): http://support.microsoft.com/default.aspx?scid=kb;en-us;155850 то ничего странного, там не указывается невозможность выборки из нескольких таблиц, это не противозконно ). Просто драйвер к Акцесу имеет "фичу" в таких случаях. Вроде бы достаточно расположить в одинаковом порядке описание выбираемых полей в запросе и в DoFieldExchange и всё будет ОК. Пробовали? И, раз уж выбран FireBird, то может тут http://www.sql.ru/forum/actualtopics.aspx?bid=2 описать проблему? Может там кто поможет... Сам я ни с VC, ни с указанными БД не работал, но раз уж взялся отвечать, то продолжаю чем могу. Просто с временем сейчас напряг, иначе бы уже поставил студию и ... ) Попробуйте для начала простейший запрос - по одному полю из 2-х таблиц, покажите полный код, что именно получается, что не получается и т.д. ... Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 00:23 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Mr. WhiteУ меня не получается это: m_rsBooks.Open(CRecordset::dynaset, _T("SELECT Books.Name, Autors.Name, Izd.Name, Clerk.Name FROM BOOKS, AUTORS, IZD, CLERK")); Т.е. имеются четыре таблицы, и мне нужно получить из каждой по одному полю. Выдает ошибку Error Retrieving Record. попробуйте сделать Код: plaintext а потом Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 00:51 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Dmitrii K.Просто драйвер к Акцесу имеет "фичу" в таких случаях. Вроде бы достаточно расположить в одинаковом порядке описание выбираемых полей в запросе и в DoFieldExchange и всё будет ОК. Да, оно действительно так. Спасибо вам =) Правда, с проблемой Firebird я так и не разобрался, но это уже как-нибудь в другой раз – сейчас главное, что хоть Access заработал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2006, 15:07 |
|
||
|
БД и C++
|
|||
|---|---|---|---|
|
#18+
Lepsik Mr. WhiteУ меня не получается это: m_rsBooks.Open(CRecordset::dynaset, _T("SELECT Books.Name, Autors.Name, Izd.Name, Clerk.Name FROM BOOKS, AUTORS, IZD, CLERK")); Т.е. имеются четыре таблицы, и мне нужно получить из каждой по одному полю. Выдает ошибку Error Retrieving Record. попробуйте сделать Код: plaintext а потом Код: plaintext А где мне выполнить запрос VIEW? Т.е. VIEW нужно в самой БД создать или при открытии ее в VC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.09.2006, 15:11 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=57&tid=2030455]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
| others: | 200ms |
| total: | 441ms |

| 0 / 0 |
