MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[1099]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(1099番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
検索結果にシーケンシャルに番号を振るには

Date: Thu, 19 Dec 2002 10:44:37 +0900
From: "Junichi Meno" <who@sub.example.jp>


1年前に投稿させていただき、以来1年間悩みを引きずっています。
(やりたいこと)
フォーム上の検索ボックスにカナシメイを入力し、検索で得られた結果を別のフォー
ムにカナ昇順で一覧表示するにあたり、先頭行にユーザーに選択させるための1から
始まるシーケンシャルな番号を振ること。
これを実現するために、堀川さんのSQLSERVER7(MSDE)完全トレーニングにほとんどこ
れだと言う内容を発見し(下巻23章)、宝物を見つけたように喜び、いろいろと試し
ているのですが、シーケンシャルな番号を振る部分だけがどうしてもわかりません。
参考プログラムでは番号部分の主キーNO列がIDENTITY(1,1)と設計されており、これ
だと検索を繰り返すたびに番号が増えていってしまいます。
そこで主キーとIDENTITYを解除し、いったんNOがNULLの一時テーブルを作成し、これ
をカナシメイ順に並べた上で、カーソルで連番を振っていけないだろうかと考え、ス
トアドプロシージャの中に次のようなカーソル処理を埋め込んでみました。
(検索HITテーブルはNO,HID,SID,UID,ID,カナシメイ→IDは検索するテーブルの主
キーです。また、このテーブルの主キーもとりあえず、IDに設定しています。)

  --////////////////////////////
       Alter PROCEDURE P_検索実行
    --/////////////////////////////

           @kana varchar(20)   -- カナ検索の変数
   (中略)

      INSERT INTO 検索HIT (ID,カナシメイ )
               SELECT ID,カナシメイ FROM Mt_Persons
                WHERE (  Mt_Persons.カナシメイ Like @kana + '%')
                ORDER BY カナシメイ

        -- 検索で得られたレコード件数の値(挿入レコード件数の値)
        SELECT @TOTAL = @@ROWCOUNT
         declare @no int
         declare @cnt int
         declare cur_検索HIT cursor
         for select no from RedxDb..検索HIT
         order by カナシメイ
         open cur_検索HIT
         if (@total>0)
             begin
               set @cnt=0
                   while(@cnt<=@total)
                       begin
                        fetch next from cur_検索HIT into @no
                        set @cnt=@cnt+1
                          set @no=@cnt
                        end
           end
         close cur_検索HIT
         deallocate cur_検索HIT
                  (後略)
大文字の部分が堀川さんの知的なコードで、小文字の部分がいまだにカーソルとトリ
ガをほとんど理解できていない私めの稚拙なコードです。
おそらく、カーソルに対する考え方自体が間違っていると思いますが、ずばりその間
違えをどなたかご指摘いただけませんでしょうか?また、カーソルなど使わずにこん
な簡単な
方法があると言うことであれば、ご紹介願えませんでしょうか?mdbであれば、なん
なく解決できるはずなのに・・・(T_T)
長々と、とてもとても恐縮です。

********************************
********************************

    目野 淳一
   who@sub.example.jp

********************************
********************************
********************************
********************************

    目野 淳一
   who@sub.example.jp
   090-57221505
   0944-32-2560

********************************
********************************




[MSDE/SQLServerに関して、今、どんなことにお困りですか?]
よろしければお困りの内容を、電子メールで教えて下さい。
質問を電子メールで作成する


[ウィンドを閉じる]

[MSDE/SQLServer FAQ ]

[MSDE / MSDE2000 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。