Ни как не могу создать запрос. Есть две таблицы OS и Main, связаны 1 (OS) ко многим. Резутате хочу получить выборку:
ОС.ИнвентарныйНомер1, Main.ИнвентарныйНомер1, Main.Сотрудник1
ОС.ИнвентарныйНомер1, Main.ИнвентарныйНомер1, Main.Сотрудник2
ОС.ИнвентарныйНомер1, Main.ИнвентарныйНомер1, Main.Сотрудник3
А у меня выбирается только первая запись из таблицы Main. То ли выбираю не так, то ли запрос не тот
PHP код:
void run()
{
Args args;
ReportRun report;
TmpOSReportTable _TmpOSReportTable;
OS _OS;
Main _Main;
QueryRun qr;
Query NewQuery;
QueryBuildDataSource bb;
QueryBuildRange br;
int i;
;
ttsbegin;
delete_from _TmpOSReportTable;
ttscommit;
NewQuery = new Query ();
bb = NewQuery.AddDataSource (TableNum(OS));
if ((dialogOSGroup.value()) != "")
{
br = bb.AddRange (fieldNum(OS, OSGroup));
br.value (dialogOSGroup.value());
}
if ((dialogOSNumber.value()) != 0)
{
br = bb.AddRange (fieldNum(OS, Number));
br.value(int2str(dialogOSNumber.value()));
}
if (( dialogStartDate.value()) != datenull())
{
br = bb.AddRange (fieldNum(OS, StartDate));
br.value(Date2Str(dialogStartDate.value(),123,2,2,2,2,2));
}
bb = bb.AddDataSource (TableNum(Main));
bb.joinMode(joinMode::InnerJoin);
// bb.relations(true);
// bb.fetchMode(0);
bb.addLink(fieldNum(OS, Number), fieldNum(Main, Number));
qr = new QueryRun (NewQuery);
//if (qr.prompt())
//{
ttsbegin;
while (qr.next())
{
_OS = qr.get(tableNum(OS));
_Main = qr.get(tableNum(Main));
_TmpOSReportTable.Number = _OS.Number;
_TmpOSReportTable.OsName = _OS.OsName;
_TmpOSReportTable.StartDate = _OS.StartDate;
_TmpOSReportTable.OSGroup = _OS.OSGroup;
_TmpOSReportTable.DAmort = _OS.DAmort;
_TmpOSReportTable.Cost = _OS.Cost;
_TmpOSReportTable.RealCost = _OS.RealCost;
_TmpOSReportTable.Person = _Main.Person;
_TmpOSReportTable.insert();
next _OS;
// next _Main;
print _OS.OsName;
print _Main.Person;
}
ttscommit;
args = New Args(reportstr(OSReport));
args.caller(this);
args.record(_TmpOSReportTable);
report = classFactory.reportRunClass(args);
report.run();
}