- ベストアンサー
SQL中の自作関数で都道府県別に連番取得
- ADOとADO.NETを使用してSQL中の自作関数を作成し、都道府県別に連番を取得する方法についての質問です。
- ADOで関数を作成すると正常に処理されますが、ADO.NETでは実行時エラーが発生します。
- どうすればADO.NETでも関数が正常に処理されるようになるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
今回質問者さんは、 「ADO.NETだと自作の関数を組み込んだSQL文が発行できない」 ということですが、 私もADO.NETに自作関数を組み込んだSQLを発行しようとしたことがあります。 実現できなかったので、クエリ化したりして対応をいたしました。 そこで、 「テーブルに存在する都道府県をID化するSQL文を発行したい」 というのであれば、関数から値を引っ張るのではなく、マスタテーブルを参照させて、それから値を引っ張るという方法があります。 むしろその方が、今後の事を考えると、良いと思います。 まず ※1.[都道府県マスタ]テーブルを作成 カラム1:都道府県[テキスト型] ←主キー カラム2:Pref_Code[テキスト型] 続いて、 ※2.[]テーブルをにデータを入力 [都道府県][Pref_Code] 北海道 01 青森県 02 岩手県 03 宮城県 04 秋田県 05 山形県 06 福島県 07 茨城県 08 ・・・・・・・・・・ って感じ それから ※3.以下のSQL文を発行 UPDATE KEN_ALL LEFT JOIN 都道府県マスタ ON KEN_ALL.Pref = 都道府県マスタ.都道府県 SET KEN_ALL.Pref_Code = [都道府県マスタ].[Pref_Code]
その他の回答 (1)
- miyuyu
- ベストアンサー率61% (30/49)
ちょっと気になるのですがAC2002で動いていると言う mySQL = "UPDATE KEN_ALL SET KEN_ALL.Pref_Code = Get_Pref_Code([Pref])"...は mySQL = "UPDATE KEN_ALL SET KEN_ALL.Pref_Code = " & Get_Pref_Code(Pref) ではないのですか?
補足
>mySQL = "UPDATE KEN_ALL SET KEN_ALL.Pref_Code = " & Get_Pref_Code(Pref) ではないのですか? これだとSQLの実行時でなくてSQLの作成時に関数が評価されてしまいますね。また、[Pref]はフィールで名であって、変数名じゃないので・・・・エラーになります。
お礼
やっぱり、自作関数はダメですか・・ ADO.NetでダメというよりVB2005ではダメって感じですね。 VB2005上のADOでもやってみたのですが、怒られました。