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

 
Кривой вывод информации в DBGrid !!!
DiSyA
Отправлено: 10.02.2006, 22:47


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

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



Доброго времени суток !
Имеется БД — Access, там есть три таблицы: Records, Job, Type_CL.
В таблице Job имеются два поля: ID — счётчик (ключ), Type — текстовое.
В таблице Type_CL имеются два поля: Code — счётчик (ключ); Type — текстовое.

В таблице Records имеются четыре поля: ID — счётчик (ключевое); CompanyName — текстовое; Type — числовое, связанное с Code из Type_CL; TypeJob — числовое, связанное с ID из Job.

Таким образом, если в таблице Job: ID Type
1 Установка
2 Переустановка;
т.е таблице Type_CL: Code Type
1 Модем
2 Интернет,
то таблица Records имеет вид, например,

ID CompanyName Type TypeJob
1 ООО "Рога и копыта" модем установка
2 АО "МММ" Интернет переустановка.

Если делаем:

ADOConnection1->Provider="MSDASQL.1";
ADOConnection1->LoginPrompt=false;


ADOQuery1->Connection=ADOConnection1;

DataSource1->DataSet=ADOQuery1;

DBGrid1->DataSource=DataSource1;
DBGrid1->Columns->Add();
DBGrid1->Columns->Items[0]->FieldName="CompanyName";
DBGrid1->Columns->Items[0]->Title->Caption="Клиент";
DBGrid1->Columns->Items[0]->Width=111;

DBGrid1->Columns->Add();
DBGrid1->Columns->Items[1]->FieldName="Type";
DBGrid1->Columns->Items[1]->Title->Caption="Тип клиента";
DBGrid1->Columns->Items[1]->Width=111;

DBGrid1->Columns->Add();
DBGrid1->Columns->Items[2]->FieldName="TypeJob";
DBGrid1->Columns->Items[2]->Title->Caption="Вид работ";
DBGrid1->Columns->Items[2]->Width=111;

ADOConnection1->Close();
ADOConnection1->ConnectionString="DSN=OrgReg";
ADOConnection1->Open();

AnsiString Cmd_sql="SELECT Records.CompanyName, \
Type_CL.Type, Job.Type FROM Records, Type_CL, Job \
WHERE Records.Type=Type_CL.Code AND Records.TypeJob=Job.ID;";

ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(Cmd_sql);
ADOQuery1->Active=true;

то имеем вывод в DBGrid

Клиент Тип клиента Вид работ
ООО "Рога и копыта" модем
АО "МММ" Интернет ,

а в столбце "Вид работ" пустота.

В связи с этим, наконец-то, вопрос: почему туда нифига не выводится и как это побороть??? И вообще что делаю не так в этой жизни smile.gif? Научите уму-разуму пожалуйста !!!

olegenty
Отправлено: 13.02.2006, 07:11


Ветеран

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



Ну так у тебя в результирующем наборе нет поля "TypeJob", а ты пытаешься вывести его в последней колонке. Грид не д-к, если имя поля не совпадает с FieldName колонки, он его показывать не будет. У тебя третье поле Job.Type, т.е. по сути, поля второе и третье имеют одно имя.
DiSyA
Отправлено: 13.02.2006, 11:23


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

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



Пасибочки, проблемс разрешился.
DiSyA
Отправлено: 13.02.2006, 17:07


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

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



А исчо такой вопросик: почему-то при копировании из того же грида (а в общем-то хоть откуда с формы: из едита и т.д.) и вставке в Ворд, Эксель или блокнот образуются кракозябры !!! Как это подлечить, подскажите пожалуйста !
Valdemar
Отправлено: 13.02.2006, 17:22


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

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



А если перед копированием в буфер переключиться на русский, то все нормально.

Вернуться в Работа с базами данных в C++Builder