RE:llenar dw external y diferencia entre datastore
Un dw external es un tipo de dw que no esta amarrado a una BD entonces para poder llenarla no es necesario que le hagas retrieve() sino basta hacer un insertRow(0) y alli ya puedes empezar a ingresar datos
La diferencia entre un datastore y un cursor, es que un datastore es una dw pero oculta, puedes hacer retrieve() y usar casi todas las funciones de un dw menos las propiedades de visualizacion por supuesto, En tanto un cursor vendria hacer como un recordset en VB, ahora yo usaria mas cursores pero dentro de un Store Procedure, no usaria mucho lo que es cursor en el cliente, y bueno los datastores mas los uso para poder imprimir un reporte de boleta o factura, ya que como yo diseño mi dw esta le asigno a mi datastore y luego como esta oculta solo le doy print() y listo
Algo Importante tanto en DataStore como un Cursor es que luego de usarlos tienes que destruirlos al Datastore con un Destroy y al Cursos Cerrarlo con un close
Saludos