Wenn man den Inhalt einer temporären Tabelle mit einem QueryRun durchlaufen will, muss man - anders als bei einer nicht temporären Tabelle - zuvor die Methode setRecord() des QueryRun-Objektes verwenden.
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.
Mehr dazu
Wenn man den Inhalt einer temporären Tabelle mit einem QueryRun durchlaufen will, muss man - anders als bei einer nicht temporären Tabelle - zuvor die Methode setRecord() des QueryRun-Objektes verwenden.
Einfaches Beispiel
static void Job1(Args _args) { TmpFrmVirtual tmpFrmVirtual; InventTable inventTable; Query q; QueryRun qr; QueryBuildDataSource qbds1, qbds2; TmpFrmVirtual populateTmpFrmVirtual() { TmpFrmVirtual tmpFrmVirtualLocal; tmpFrmVirtualLocal.clear(); tmpFrmVirtualLocal.ItemId = "A0001"; tmpFrmVirtualLocal.insert(); tmpFrmVirtualLocal.clear(); tmpFrmVirtualLocal.ItemId = "A0002"; tmpFrmVirtualLocal.insert(); tmpFrmVirtualLocal.clear(); tmpFrmVirtualLocal.ItemId = "A0003"; tmpFrmVirtualLocal.insert(); return tmpFrmVirtualLocal; } q = new Query(); qbds1 = q.addDataSource(tableNum(TmpFrmVirtual)); qr = new QueryRun(q); qr.setRecord(populateTmpFrmVirtual()); while (qr.next()) { tmpFrmVirtual = qr.get(tableNum(tmpFrmVirtual)); info(tmpFrmVirtual.ItemId); } }Beispiel mit einem Join zu einer normalen Tabelle
In einem solchen Fall muss die temporäre Tabelle die erste DataSource sein, sonst tritt eine entsprechende Fehlermeldung auf.
static void Job19(Args _args) { TmpFrmVirtual tmpFrmVirtual; InventTable inventTable; Query q; QueryRun qr; QueryBuildDataSource qbds1, qbds2; TmpFrmVirtual populateTmpFrmVirtual() { TmpFrmVirtual tmpFrmVirtualLocal; tmpFrmVirtualLocal.clear(); tmpFrmVirtualLocal.ItemId = "A0001"; tmpFrmVirtualLocal.insert(); tmpFrmVirtualLocal.clear(); tmpFrmVirtualLocal.ItemId = "A0002"; tmpFrmVirtualLocal.insert(); tmpFrmVirtualLocal.clear(); tmpFrmVirtualLocal.ItemId = "A0003"; tmpFrmVirtualLocal.insert(); return tmpFrmVirtualLocal; } q = new Query(); qbds1 = q.addDataSource(tableNum(TmpFrmVirtual)); qbds2 = qbds1.addDataSource(tableNum(InventTable)); qbds2.relations(true); qbds2.joinMode(JoinMode::InnerJoin); qbds2.fetchMode(QueryFetchMode::One2One); qr = new QueryRun(q); qr.setRecord(populateTmpFrmVirtual()); while (qr.next()) { tmpFrmVirtual = qr.get(tableNum(tmpFrmVirtual)); inventTable = qr.get(tableNum(inventTable)); info(tmpFrmVirtual.ItemId + " " + inventTable.NameAlias); } }