Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.145.93.136] |
|
Сообщ.
#1
,
|
|
|
Проблема в следующем:
Выбораются данные из нескольких dbf таблиц в один RecordSet. После этого все нормально, пока не начинаю пользоваться функцией GetFieldValue. Она выдает сообщение "Positioned request cannot be performed because set was generated by a join condition". Как решить проблему, или ODBC в С++ этого не умеет? Если кто знает, помогите. |
Сообщ.
#2
,
|
|
|
коллега
я тож с дбф'ом мучался .... короче такая фигня - мне надо было объединить несколько таблиц что я и сделал с успехом пользуясь сиквелом создается объект CDatabase, делаю запрос (ба-а-альшой) для него сиквеловский, в котором объединяю выбираю данные из нескольких таблиц, на базе этого датабейса делаю CRecordset, и работаю уже с ним - громоздко, но другого выхода не нашел. GetFieldValue работает с индексами полей short, причем они zero-based. плз покажь запрос свой sql |
Сообщ.
#3
,
|
|
|
Вот мой SQL
select F0101000.date,F0101000.time,F0101000.F010100092,F0101010.F010101005 from F0101000,F0101010 order by F0101000.Date,F0101000.Time where F0101000.Date=F0101010.Date and F0101000.Time=F0101010.Time |
Сообщ.
#4
,
|
|
|
пугающий запрос - скока 0 и 1
ну-у-у вроде правильно <br>SELECT Customers.cname, Salespeople.sname, <br> Salespeople.city <br>FROM Salespeople, Customers <br>WHERE Salespeople.city = Customers.city;<br> дело-то наверно в том как ты читаешь данные для GetFieldValue по имени поля не получицца - надо по индексу - номеру поляв получившейся таблице в примере - в таблице 3 поля (0=Customers.cname, 1=Salespeople.sname, 2=Salespeople.city) во! код: <br>LPCTSTR sqlOpCall = "select a.N_L, a.C01,a.C02, a.C03, b.N_L from SHEMT AS a, SHEMT AS b \<br> where (a.KT = 'SN' or a.KT = 'SW') and (a.C03 = b.C03) and (a.X <> b.X) and (a.Y <> b.Y) \<br> and ( ((a.C01 is not null) and (b.C01 is not null) and (a.C01 = b.C01)) \<br> or ((a.C01 is not null) and (b.C02 is not null) and (a.C01 = b.C02)) \<br> or ((a.C02 is not null) and (b.C01 is not null) and (a.C02 = b.C01)) \<br> or ((a.C02 is not null) and (b.C02 is not null) and (a.C02 = b.C02)) \<br> ) \<br> order by a.C03, a.C01, a.C02"<br>.......<br>mDb.OpenEx( _T(callDbase));//ДБФ файлы<br>CRecordset mRecJoinShem(&mDb);<br>mRecJoinShem.Open(CRecordset::snapshot, sqlOpCall);<br>........<br>short index;<br>while (mRecJoinShem.IsEOF())<br>{<br>// читаю значения из полей - их всео 5<br> mRecJoinShem.GetFieldValue(index, buff1 ); //index=0<br> index++;<br>..............<br> mRec.GetFieldValue(index,buff5 ); //index=4<br> index=0;<br>mRecJoinShem.MoveNext();<br>}<br> типа того - и все с успехом работает :) |
Сообщ.
#5
,
|
|
|
Цитата SergIG, 13.11.02, 12:36:15 Вот мой SQL select F0101000.date,F0101000.time,F0101000.F010100092,F0101010.F010101005 from F0101000,F0101010 order by F0101000.Date,F0101000.Time where F0101000.Date=F0101010.Date and F0101000.Time=F0101010.Time странно как-то ты сортируешь, ордер надо после условия писать |