1

基本的に、テナントと所有者の 2 つのテーブルがあります。私のストアド プロシージャは、選択結果をテキスト ボックスに表示するための内部結合です。しかし残念なことに、クエリは所有者テーブルからプルするだけで、両方からプルするわけではありません。テナント テーブルから表示しようとすると、列が存在しないというエラーが表示されます。

@ID varchar(4)

SELECT        owner_table.ownerID AS ownID, tenant_table.tenantID, owner_table.apt_num AS aptNum, owner_table.first_name AS own_first, owner_table.last_name AS own_last, 
                     owner_table.address AS own_address, owner_table.city AS own_city, owner_table.state AS own_state, owner_table.zip AS own_zip, 
                     owner_table.phone AS own_phone, owner_table.phone_2 AS own_phone2, owner_table.notes AS own_notes, owner_table.last_update AS own_lastUpdate, 
                     tenant_table.ownerID AS ten_ownID, tenant_table.last_name, tenant_table.keyID, tenant_table.storage, tenant_table.phone, tenant_table.phone_2, tenant_table.notes,
                      tenant_table.complaints, tenant_table.lease_end, tenant_table.last_update, tenant_table.apt_status
FROM            owner_table INNER JOIN
                     tenant_table ON owner_table.ownerID = @ID AND tenant_table.tenantID = @ID
RETURN

プロシージャから結果を取得しようとするコード。

private void LoadInfo(string ID)
    {
        using (SqlConnection connection = new SqlConnection(connectionString))
        {                           

            SqlCommand Command = new SqlCommand();
            Command.Connection = connection;
            Command.CommandText = "MoreInfoData";
            Command.CommandType = CommandType.StoredProcedure;
            Command.Parameters.Add(new SqlParameter("@ID", SqlDbType.VarChar, 4)).Value = ID;

            table = new DataTable();
            SqlDataAdapter MyAdapter = new SqlDataAdapter();
            MyAdapter.SelectCommand = Command;
            MyAdapter.Fill(table);

            if (table.Rows.Count > 0)
            {
                ten_name.Text = table.Rows[0]["last_name"].ToString();                       
            }

    }
4

5 に答える 5

1

列エイリアスを使用するように変更します。

ten_name.Text = table.Rows[0]["own_last"].ToString(); 
于 2013-06-14T00:46:14.720 に答える
1

フィールド名を own_last に変更したため、もちろん存在しません。owner_table.last_name AS own_last. したがって、コードを次のように変更する必要があります

ten_name.Text = table.Rows[0]["own_last"].ToString();

于 2013-06-14T00:56:37.030 に答える
0

全体として、どういうわけか、その時点でクエリに保存したものは、何らかの理由で保存されませんでした。結局これが問題でした。すべての助けをありがとう。

于 2013-06-18T20:51:33.730 に答える
0

tenant_table.last_name のエイリアスを追加しようとしましたか?:

SELECT .... tenant_table.last_name AS tenant_last_name

その後:

ten_name.Text = table.Rows[0]["tenant_last_name"].ToString(); 
于 2013-06-14T00:57:29.120 に答える