C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Помогите разобраться с синтаксимом, Надо перевести с дельфи на Си
DenisG
Отправлено: 17.02.2006, 14:35


Ученик-кочегар

Группа: Участник
Сообщений: 6



есть вот такой код на паскале
CODE

ADODataSet1.Properties['Unique Table'].Value := 'Таблица2';

ADODataSet1.Properties['Update Resync'].Value := adResyncAll;

ADODataSet1.Properties['Update Criteria'].Value := adCriteriaKey;

ADODataSet1.Properties['Resync Command'].Value := 'select * from Таблица 1 INNER JOIN Таблица 2 ON Таблица 1.num = Таблица 2.count';

Как его правильно написать в cb6
за ранее спасибо.

Отредактировано DenisG — 17/02/2006, 15:42
Doga
Отправлено: 17.02.2006, 14:45


Мастер участка

Группа: Участник
Сообщений: 575



Ну здесь то можно было бы догадаться biggrin.gif

CODE

ADODataSet1->Properties["Unique Table"]->Value = "Таблица2";
//Ну и так далее...
DenisG
Отправлено: 17.02.2006, 15:12


Ученик-кочегар

Группа: Участник
Сообщений: 6



smile.gif если бы так просто было бы
попробуй напиши это и скомпилируй
ошибку дает:(
Doga
Отправлено: 17.02.2006, 15:51


Мастер участка

Группа: Участник
Сообщений: 575



Надеюсь, Вам не составит труда представить здесь текст, упомянутой Вами ошибки, с указанием конкретного места её возникновения в Вашем коде?

Отредактировано Doga — 17/02/2006, 15:52
olegenty
Отправлено: 17.02.2006, 16:50


Ветеран

Группа: Модератор
Сообщений: 2412



а так?
CODE

(*ADODataSet1->Properties)["Unique Table"]->Value = "Таблица2";


так всё верно, только появится Unresolver External.
ошибка линкера глушится так:
CODE

#pragma alias "@System@@CheckAutoResult$qqrv"="@System@@CheckAutoResult$qqrl"


естественно, пропертя должна иметь место быть.

Отредактировано olegenty — 17/02/2006, 17:56
DenisG
Отправлено: 17.02.2006, 17:00


Ученик-кочегар

Группа: Участник
Сообщений: 6



я нашел вот такой способ
CODE

#define STR2VAR( Str ) OleVariant( WideString( Str ) )
// что бы линкер не матюгался

namespace System {
void __fastcall CheckSafecallResult(HRESULT hr)
{
return;
}
};

void __fastcall TForm1::ADODataSet4AfterOpen(TDataSet *DataSet)
{
ADODataSet4->Properties->Item[STR2VAR("Unique Table")]->Value = OleVariant("Tabl_Izmer_Bio");
ADODataSet4->Properties->Item[STR2VAR("Update Resync")]->Value = OleVariant("adResyncAll");
ADODataSet4->Properties->Item[STR2VAR("Update Criteria")]->Value = OleVariant("adCriteriaKey");

ADODataSet4->Properties->Item[STR2VAR("Resync Command")]->Value = OleVariant(" SELECT * FROM ((Tabl_Izmer_Bio INNER JOIN Table_Toch_Bio ON Tabl_Izmer_Bio.Ind_Toch = Table_Toch_Bio.Nomer_Toch)"
" INNER JOIN images ON Tabl_Izmer_Bio.Base_Left = images.code) INNER JOIN images1 ON Tabl_Izmer_Bio.Base_Right = images1.code"
" WHERE (((Tabl_Izmer_Bio.Ind_kl =" + IntToStr(ADODataSet1index->Value) +")"
"AND (Tabl_Izmer_Bio.Ind_Izmer =" + IntToStr(ADODataSet2Nomer_Izm->Value)+")))ORDER BY Nomer_Toch");

К сожалению после ввода Resync Command вылетает Access Violation

Отредактировано DenisG — 17/02/2006, 17:00

Вернуться в Вопросы программирования в C++Builder