method private _grab_input =
    match select_w#store2#get_iter_first with
      | None ->
          raise (Invalid_input "You must put at least one table in the join")
      | Some iter ->
          let fetch_columns = fun c_model ->
            match c_model#get_iter_first with
              | None -> []
              | Some iter -> let result = ref [] in
                  result := [jc_to_tuple (c_model#get_data ~row:iter)];
                  while c_model#iter_next iter do
                    result :=
                    (jc_to_tuple (c_model#get_data ~row:iter)) :: !result
                  done;
                  List.rev !result
          in
          let model  = select_w#store2 in
          let table  = fst (model#get_data ~row:iter) in
          let vtable = SQL_db.create_vtable glade#name_entry#text table in
            while model#iter_next iter do
              let (c_table, c_model) = model#get_data ~row:iter in
                SQL_db.do_join vtable c_table (fetch_columns c_model)
            done;
            { vtgi_name   = vtable.SQL_db.vt_name;
              vtgi_vtable = Some vtable; }