- - PR -
実例で学ぶASP.NETプログラミング 第5回での質問です
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-11-08 16:39
いつも参考にさせていただいてます
ASP.NETを勉強しだして1ヶ月あまりの素人です VB6やAccessの方では少しばかりプログラムしたくらいの素人です いつも見てばかりいて投稿させていただくのは初めてなのですが 数日悩んでいたもので思い切って投稿させていただきました 初歩的なことと言う事で叱責を受けるかもしれませんが すみませんがお力お貸し頂ければと思います。 本題ですが 「第5回 DB連携ページをASP.NETで構築する(後編)」で 1: Public Function TPRODID(ByVal VCNT As Integer) As Array 2: Dim PSET As New PVSET() 3: Dim PVIEW As New DataView() 4: Dim I As Integer 5: Dim TID(VCNT - 1) As Integer 6: DC.FDPV(PSET) 7: PVIEW.Table = PSET.Tables("酒完成表") 8: PVIEW.RowFilter = "特売価格 > 0" 9: Dim PMID() As String = RNDID(PVIEW.Count, VCNT) 10: For I = 0 To VCNT - 1 11: TID = PVIEW(PMID(I))("ID") 12: Next 13: Return TID 14: End Function 15: 16 Public Function RNDID(ByVal MAXID As Integer, ByVal NEEDID As Integer) As Array 17: Dim I As Integer 18: Dim RID As New Random() 19: Dim SPID As Integer 20: Dim PTID As New System.Collections.Specialized.StringCollection() 21: Dim PMID(NEEDID - 1) As String 22: For I = 0 To NEEDID - 1 23: Do 24: SPID = RID.Next(0, MAXID - 1) 25: Loop While PTID.IndexOf(SPID) = False 26: PTID.Add(SPID) 27: Next 28: PTID.CopyTo(PMID, 0) 29: Return PMID 30: End Function のプログラムを実行したのですが どうしても 指定されたキャストは有効ではありません。 説明 : 現在の Web 要求を実行中に、ハンドルされていない例外が発生しました。エラーに関する詳細および例外の発生場所については、スタック トレースを参照してください。 例外の詳細: System.InvalidCastException: 指定されたキャストは有効ではありません。 ソース エラー: 行 315: For I = 0 To VCNT - 1 行 316: 行 317: TID = PVIEW(PMID(I))("ID") ここでエラーです 行 318: Next 行 319: Return TID として TIDの所でエラーになってしまいます 連載されている通り実施しているとは思うのですがなかなか理解するのも難しく すみません 同じように連載を実際に勉強されているかたも多いと思いますので もしかしたら同様に悩まれた方いらっしゃいましたら 教えていただければ 大変助かります。 PS,この掲載してありますACCESSをダウンロードしてクエリを確認したのですが 酒完成表のクエリもなかったのですよね、きっと?? 動作環境 OS WindowsXP VS.NET2003 ACCESSで動作させています いつも連載ホントに勉強になります 今後も勉強させていただくつもりですので がんばってください。 |
|
投稿日時: 2005-11-08 17:12
>10: For I = 0 To VCNT - 1
>11: TID = PVIEW(PMID(I))("ID") >12: Next TID(I) = PVIEW(PMID(I))("ID") じゃないでしょうか? |
|
投稿日時: 2005-11-08 20:41
どこで例外が発生しているかくらいはハッキリ追いませんか?
デバッグをやるにおいて、"どこで" は重要ですよね。 変数の命名が Microsoft のガイドラインから逸脱していますので、 ソースを読みきるまでに、すごい時間を費やしてしまいました。 暗黙の型変換がありますよね。 Option Strict On を使用することをお勧めします。 暗黙の型変換を失くすことで、「InvalidCastException」が起こる確率はかなり減るでしょう。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2005-11-09 09:40
けろさん、じゃんぬねっとさん ありがとうございます
けろさんのご指摘の通りに追記しましたら 正常に動きました 大変ありがとうございました じゃんぬねとさんのご指摘の通り Option Strict と言う物があったのですね すみません まだまだ手探り状態での勉強不足で こういう役立つものあるとは 存じ上げておりませんでした、失礼致しました また、そうですね デバッグでの"どこで"は大切ですね 相手方に伝えるのに際して最短の道筋になるものですから 申し訳ございませんでした、今後相手に伝わるように気をつけます まだまだ、勉強中でまたご迷惑おかけするかとは思いますが 何かとよろしくお願いいたします。 |
1