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

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

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

カレントレコードの移動


(過去ログ 6 を表示中)

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

■6305 / inTopicNo.1)  カレントレコードの移動
  
□投稿者/ まさ 一等兵(36回)-(2006/09/05(Tue) 18:33:56)

分類:[C#] 


分類:[C#] 

お世話になります。
検索結果後でのカレントレコード表示時、「次へ」ボタン押下時ですが、表示できません。下がそのコードです。

private void btnNext_Click(object sender, System.EventArgs e)//「次へ」ボタン押下
{
i = 0;//OleDBDataReaderのwhile(dr.read())で読み込んだ値を初期化,データの項目は社員番号,名前,年齢
i = i + 3;//ArrayListの3番目の項目(社員番号)を表示,ArrayListはprivate宣言
j = i + 1;//ArrayListの4番目の項目(名前)を表示
k = i + 2;//ArrayListの5番目の項目(年齢)を表示
txtNo.Text = (string)array[i];//社員番号を表示,i,j,kともprivate int宣言
txtNm.Text = (string)array[j];//名前を表示
txtAge.Text = (string)array[k];//年齢を表示
}
あと、検索結果表示です。

while(dr.Read())//アクセスデータ読み込み処理(変数iはレコード件数)
{
i++;
this.txtNo.Text = dr.GetInt16(0).ToString();//SQL文からテキストボックスにキャスト(社員番号)
this.txtNm.Text = dr.GetString(1);//SQL文からテキストボックスにキャスト(名前)
this.txtAge.Text = dr.GetInt16(2).ToString();//SQL文からテキストボックスにキャスト(年齢)
array.Add(txtNo.Text);//ArrayListに項目追加
array.Add(txtNm.Text);
array.Add(txtAge.Text);
}
if (i == 0)
{
MessageBox.Show("該当データがありません");
cn.Close();
this.Close();
return;
}
txtNo.Text = (string)array[0];//社員番号初期表示
txtNm.Text = (string)array[1];//名前初期表示
txtAge.Text = (string)array[2];//年齢初期表示
}
で、ボタンを押下すると次の項目のデータが表示されますが、
iの初期表示が0なため、何回押下しても結果は同じです。できれば初期値を取り除きたいところですが、今度は変数iは、Readerの最後に読み込まれた値を保持しているため(4件読み込まれたらi=4)と記憶されたままになるため、できません。
配列を用いてのカレントレコード操作はできるかどうか、よろしくお願いします。あとなぜかインデントができません・・・。


0
引用返信 編集キー/
■6318 / inTopicNo.2)  Re[1]: カレントレコードの移動
□投稿者/ bell 二等兵(9回)-(2006/09/06(Wed) 17:01:11)

分類:[C#] 

No6305に返信(まささんの記事)
> i = 0;//OleDBDataReaderのwhile(dr.read())で読み込んだ値を初期化,
ここで初期化したらそりゃ最初のデータしか出ないでしょ
むしろここで初期化する理由が僕にはわかりません。
>i,j,kともprivate int宣言
メソッド内でしか使わない変数はメソッド内のみで定義したほうがいいですよ。
そして…複数のメソッドにまたがる変数にはちゃんとした名前をつけてあげようよ…
ほかの人が見てもiが何なのかぜんぜんわかんないよ?
#まさかとは思うけど、iを複数のメソッドでいろんな用途に使ってないよね…?

>できれば初期値を取り除きたいところですが、
>今度は変数iは、Readerの最後に読み込まれた値を保持しているため
>(4件読み込まれたらi=4)と記憶されたままになるため、できません。
意味がわかんないです…。
保持している理由は?
記憶されたままになるためって自分でコード書いたんじゃないの?
"できません"って何故…?

>あとなぜかインデントができません・・・。
図表モードを使いましょう。


ちなみにhttp://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=6251
のArrayListを使うっていうのは
社員番号1,名前1,年齢1,社員番号2,名前2,年齢2,社員番号3,名前3,年齢3…
の様に格納するんじゃなくて各レコードごとに
社員番号,名前,年齢
をひとかたまりにしたArrayList(仮に社員ArrayList)を作って
社員ArrayList1,社員ArrayList2,社員ArrayList3,…
の様に格納って意味で言ったんだけど…まぁいいや…

#プレビューの右下の"送信"ってボタン押したらトピック表示に戻されて投稿消えたよ…orz


0
引用返信 編集キー/
■6335 / inTopicNo.3)  Re[2]: カレントレコードの移動
□投稿者/ まさ 一等兵(37回)-(2006/09/07(Thu) 10:52:32)

分類:[C#] 

すみません、
データアダプタ設定をしたら解決できそうです。
ありがとうございました。
少し整理してから質問します。
今後もよろしくお願いします。

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


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

このトピックに書きこむ

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

管理者用

- Child Tree -