Sólo un comentario... No es mejor guardar en una variable el valor devuelto por 
odbc_num_fields($rs); en vez de ejecutar tal función cuantas veces se ejecute el ciclo generado por for?  
 Código PHP:
    $obras = array();
while (odbc_fetch_row($rs))
{
$obra = array();
 
$nf = odbc_num_fields($rs);
 
for ($i=1;$i<=$nf;$i++)
{
$obra[$i]=odbc_result($rs,$i);
}
 
$obras[] = $obra;
} 
 
var_dump( $obras ); 
    
  Funciona igual, sólo que ahorra recursos, sobretodo si en cada resultado hay un número grande de campos... 
Un saludo, 
