C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: データテーブルの中身のチェック


(過去ログ 44 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■23850 / inTopicNo.1)  データテーブルの中身のチェック
  
□投稿者/ ぽっち (30回)-(2008/08/22(Fri) 16:04:46)

分類:[ASP.NET (C#)] 

こんにちは。いつもお世話になっております。

現在、
開発環境:WindowsXP
使用言語:ASP.NET、C#
でデータベース(SQL-SERVER)を使ったシステムを作っております。


そこでAというデータベースにあるデータを取得してきて、Bというデータベースにデータを格納するSQL文を書いているのですが、
DataTable型でデータを取得してきて、Bのデータベースにデータを書き込むときに、ソースの一部になりますが・・・
下記のようにして、取得してきたデータの中身を確認し、もし中身が無いようなら「NULL」を代入させ、その後SQL文を発行させる
ようにしたいのですが、

【ソース】

//取得したデータの中身チェック(なければ、Nullを代入)
for(int i=1;i<=7;i++)
{
if (dt[0][i] == null)←
 {
dt[0][i] = null;←
}
}

query.AppendFormat("INSERT INTO {0} ", T.ListDetailTable);
query.Append("(No, Vno, INo, CD, SCD, ");
query.Append("TCD, PCD, LISTCD, FrindCD) ");
query.AppendFormat("VALUES ({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}, {8})",
QUERYVARIABLE_NO,
vDetail.Vno + 1,
vDetail.INo,
dt.Rows[0][1],
dt.Rows[0][2],
dt.Rows[0][3],
dt.Rows[0][4],
dt.Rows[0][5],
dt.Rows[0][6]);

return query.ToString();


上記ソースをビルドしようとすると、

「角かっこ [] 付きインデックスを 'System.Data.DataTable' 型の式に適用することはできません。」

と言われて「←」で書いた部分の所を怒られちゃいます。
この書き方がどこがいけないのか分からず困惑しております。

もし判断するならもっと賢い方法があるのでしょうか?
どなたかご教授お手数ではございますが、お願い致します。
引用返信 編集キー/
■23851 / inTopicNo.2)  Re[1]: データテーブルの中身のチェック
□投稿者/ ネタ好き未記入 (48回)-(2008/08/22(Fri) 16:12:01)
2008/08/22(Fri) 16:13:01 編集(投稿者)

No23850 (ぽっち さん) に返信
先ずは・・・

Aというデータベースにあるデータを取得するSQL文
Bというデータベースにデータを格納するSQL文

を考える事から始めるといいと思います。
次に、SqlParameterとSqlCommandとSqlDataAdapterとDataTableを調べるとよいと思います。

追記
Null値の扱いについても調べたらいいと思います。
引用返信 編集キー/
■23852 / inTopicNo.3)  Re[2]: データテーブルの中身のチェック
□投稿者/ ぽっち (31回)-(2008/08/22(Fri) 16:19:27)
2008/08/22(Fri) 16:21:57 編集(投稿者)
No23851 (ネタ好き未記入 さん) に返信
> 2008/08/22(Fri) 16:13:01 編集(投稿者)
>
> ■No23850 (ぽっち さん) に返信
> 先ずは・・・
>
> Aというデータベースにあるデータを取得するSQL文
> Bというデータベースにデータを格納するSQL文
>
> を考える事から始めるといいと思います。
> 次に、SqlParameterとSqlCommandとSqlDataAdapterとDataTableを調べるとよいと思います。
>
> 追記
> Null値の扱いについても調べたらいいと思います。

返信誠にありがとうございます。

まず、ちょっとタイプミスで

> for(int i=1;i<=7;i++)
> {
> if (dt[0][i] == null)←
>  {
> dt[0][i] = null;←
> }
> }

の部分でdt.Rows[0][i]でした。Rows書き忘れてました・・・。
ここが原因だったようです。うっかりミス過ぎますね・・・。

助言有難うございました!!

解決済み
引用返信 編集キー/
■23854 / inTopicNo.4)  Re[3]: データテーブルの中身のチェック
□投稿者/ ネタ好き未記入 (49回)-(2008/08/22(Fri) 16:22:10)
No23852 (ぽっち さん) に返信
調べた結果どうしてもわからなかったら「○●がわかりません」と言えばみんな教えてくれますし、その方が求める答えが得られると思います。ファイト!
引用返信 編集キー/
■23858 / inTopicNo.5)  Re[3]: データテーブルの中身のチェック
□投稿者/ こあら (19回)-(2008/08/22(Fri) 16:37:31)
> の部分でdt.Rows[0][i]でした。Rows書き忘れてました・・・。
> ここが原因だったようです。うっかりミス過ぎますね・・・。

せっかくコンパイルエラーになったのですから、うっかりミスで済ませずエラー内容を理解してみると・・・

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -