Espero poder ayudarte.
.
Hay muchas funciones de conversión que te pueden ayudar, pero en este caso yo usaría transform(). Lo bueno de esta función es que podes darle una mascara y no te deja espacios si no usas mascara.
.
transform(cod_articulo)
.
Si queres rellenar de ceros a la izquierda por ejemplo pondrias transform(cod_artículo,'@L ######').
O si queres convertir por ejemplo 20229020939 (numerico) a un cuit (cadena) sería transform(20229020939,'@R ##-########-#').
.
Otra cosa es que no hace falta referenciar con el evaluate al controlSource del grid, sino que podes llamar al dato de abajo. Por ejemplo si el controlSource del grid es "codigo" de la tabla "articulos", podrías llamar directo a articulos. Codigo.
.
Quedaría así:
.
a=transf(miTabla.cod_articulo)
.
Por ultimo, me gustaría darte algunas recomendaciones para tu código:
.
Podrias usar text... endtext para tu texto, en lugar de usarlo como lo haces: te quedaría asi:
.
text to sql textmerge pretext 7 noshow
select p.Codigo, p.NumLinea, p.CodigoPropio, p.cantidad, p.dto, p.subtotal, a.ubicacion
from database1.pedidolinea p, 2014fg.articulo a
where p.codigo=?a
Order by codigo DESC
Endtext
.
.
Recordá además que si usas más de una tabla en una consulta deber relacionarla con left join o el que corresponda. Además, asegurate que no haya datos ambiguos, es decir que pueda haber en ambas tablas el mismo nombre y no se sepa a cual te referís, yo usaría así: order by p.codigo ya que si en a existe "codigo" puede darte un error.
.
Por otro lado siempre utiliza variables que se diferencien de las tablas o usa m. adelante de la variable. Recuerda que si justo hay un campo en la tabla actual que se llama como tu variable, va a tomar el valor del campo y eso puede que te lleve a confundirte.
.
Por ejemplo si en el área actual está la tabla clientes que tiene un campo codigo por más que te refieras a la variable codigo siempre tomará el valor de la tabla. Por eso podes usar m.codigo para referencia.
.