function fetch_column_attributes() { $conn = $this->datasource->ado_connection; //$a = new reportico($this->datasource); //$old_database = $a->database; $datadict = false; reset($this->columns); $lasttab = ""; while ( $d = key($this->columns) ) { $value =& $this->columns[$d]; if ( array_key_exists( $value->query_name, $this->clone_columns ) ) { $value->column_type = $this->clone_columns[$value->query_name][0]; $value->column_length = $this->clone_columns[$value->query_name][1]; } else if ( $value->table_name ) { if ( $lasttab != $value->table_name ) { $datadict = $this->datasource->ado_connection->MetaColumns($value->table_name); if ( !$datadict ) { // echo "Data Dictionary Attack Failed Table $value->table_name\n"; // echo "Error ".$this->datasource->ado_connection->ErrorMsg()."<br>"; //die; } } foreach ( $datadict as $k => $v ) { if ( strtoupper(trim($k)) == strtoupper($value->column_name ) ) { //$coldets = $datadict[strtoupper($value->column_name)]; $coldets = $datadict[$k]; $value->column_type = reportico_datasource::map_column_type( $this->datasource->driver, $datadict[$k]->type); if ( strtoupper($value->column_type) == "INTEGER" ) $value->column_length = 0; else if ( strtoupper($value->column_type) == "SMALLINT" ) $value->column_length = 0; else $value->column_length = (int)$datadict[$k]->max_length; break; } } } $lasttab = $value->table_name; next($this->columns); } }