| 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 技術サポート情報一覧]
  
                                 
                       |