Кривой вывод информации в DBGrid!!!
Имеется БД - 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
Клиент Тип клиента Вид работ
ООО "Рога" модем
АО "МММ" интернет
т.е в столбце "Вид работ" пустота.
В связи с этим, наконец-то, вопрос: почему туда нифига не выводится и как это побороть??? И вообще что делаю не так в этой жизни :)? Научите уму-разуму пожалуйста !!!
Цитата:
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
Клиент Тип клиента Вид работ
ООО "Рога" модем
АО "МММ" интернет
т.е в столбце "Вид работ" пустота.
В связи с этим, наконец-то, вопрос: почему туда нифига не выводится и как это побороть??? И вообще что делаю не так в этой жизни :)? Научите уму-разуму пожалуйста !!!
Доброго времени суток !
Имеется БД - 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";