čtvrtek 4. června 2009

Query s dočasnou tabulkou

Nedávno jsme s kolegy řešili join dočasné a trvalé tabulky v třídě Query. V zásadě na tom není nic složitého (dočasná tabulka se zadá do datového zdroje stejně trvalá tabulka, jen je na QueryRun potřeba pomocí setCursor() přiřadit buffer dočasné tabulky), zajímavé ale je, že připojení dočasné tabulky na trvalou není možné provést na klientu. V takovém případě dostanete chybu: Cannot select a record in table. Temporary tables must be the outer tables when joined to permanent tables. Neboli Nelze vybrat záznam v tabulce tabulka. Dočasné tabulky musí být vnitřní při spojování na trvalé tabulky. Na aplikačním serveru proběhne vše OK. Důvodem omezení jen na AOS asi bude výkonnost tohoto joinu (full table scan na trvalé tabulce). Chování je ověřeno na AX3SP3 a AX5SP1. Vyzkoušet si to můžete na přiloženém příkladu (.xpo z DAX2009), dostat byste měli takovýhle výstup: .xpo s ukázkovým kódem

1 komentář:

  1. Zdravím a moc děkuji. Trávím na tomto problému už třetí den a pořád mi nešlo do hlavy, proč QueryRun nemůže najít záznam, když buffer jich je plný. Teď už to funguje perfektně, ještě jednou díky.

    OdpovědětVymazat