Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кривой вывод информации в DBGrid!!!

15K
10 февраля 2006 года
DiSyA
2 / / 10.02.2006
Доброго времени суток !
Имеется БД - 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

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

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

В связи с этим, наконец-то, вопрос: почему туда нифига не выводится и как это побороть??? И вообще что делаю не так в этой жизни :)? Научите уму-разуму пожалуйста !!!
2.1K
11 февраля 2006 года
mainigor
151 / / 21.10.2005
Цитата:
Originally posted by DiSyA
Доброго времени суток !
Имеется БД - 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

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

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

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



в этой выборке :

 
Код:
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;";

нет поля TypeJob

IMHO надо так :

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


чтобы удовлетворить
 
Код:
DBGrid1->Columns->Items[2]->FieldName="TypeJob";
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог