23.06.2008, 09:55 | #1 |
Участник
|
Разница в работе селектов/запросов в джобах и на формах
В джобе:
Код: SalesPickingListJournalTable spt; SalesPickingListJournalLine spl; InventTable it; ; while select spt where spt.BD_InventJournalId != "" join spl where spl.PickingListId == spt.PickingListId exists join it where it.ItemId == spl.Itemid && it.ItemType == ItemType::Service { info(spt.PickingListId); } На форме поместил один dataSource SalesPickingListJournalTable, в init источника данных сделал следущее: Код: QueryBuildDataSource qSPT, qSPL, qIT; super(); qSPT = this.query().addDataSource(tablenum(SalesPickingListJournalTable)); qSPL = qSPT.addDataSource(tablenum(SalesPickingListJournalLine)); qSPL.addLink(fieldnum(SalesPickingListJournalTable, PickingListId), fieldnum(SalesPickingListJournalLine, PickingListId)); qIT = qSPL.addDataSource(tablenum(InventTable)); qIT.addRange(fieldnum(InventTable, ItemType)).value(queryValue(ItemType::Service)); qIT.addLink(fieldnum(SalesPickingListJournalLine, ItemId), fieldnum(InventTable, ItemId)); qIT.joinMode(JoinMode::ExistsJoin); Код: SELECT * FROM SalesPickingListJournalTable JOIN * FROM SalesPickingListJournalLine WHERE SalesPickingListJournalTable.PickingListId = SalesPickingListJournalLine.PickingListId EXISTS JOIN * FROM InventTable WHERE SalesPickingListJournalLine.Itemid = InventTable.ItemId AND ((ItemType = Услуга)) Последний раз редактировалось Dronas; 23.06.2008 в 09:59. |
|
23.06.2008, 10:01 | #2 |
Участник
|
Цитата:
Если свойствами вы установили что форма не должна сама создавать запрос, то скорее всего Query не инициализирован и вы добавляете таблицу к неинициализированному запросу. Если вы не меняли свойства датасорса, то форма сама уже создала запрос. А вы к нему ДОБАВЛЯЕТЕ еще одну таблицу. Либо пересоздавайте query полностью, либо добавляйте только новые таблицы к суще существующим. |
|
23.06.2008, 10:04 | #3 |
Участник
|
Цитата:
Сообщение от mazzy
этой командой вы заставляете ДОБАВИТЬ таблицу к УЖЕ СУЩЕСТВУЮЩЕМУ запросу.
Если свойствами вы установили что форма не должна сама создавать запрос, то скорее всего Query не инициализирован и вы добавляете таблицу к неинициализированному запросу. Если вы не меняли свойства датасорса, то форма сама уже создала запрос. А вы к нему ДОБАВЛЯЕТЕ еще одну таблицу. Либо пересоздавайте query полностью, либо добавляйте только новые таблицы к суще существующим. |
|
23.06.2008, 10:23 | #4 |
Участник
|
Может удалить? Все равно бесполезная тема
|
|
|
|