動的に数式を計算する方法を探しています。
SQLServerのエンジンを使うのが簡単そうです。
ADO.NETでSELCECT文を投げることにより、数式を計算することは可能です。
SELECT 1+2
質問は、変数を含んだ数式をSELECT文で計算することは出来るでしょうか?
int a = 1;//変数
int b = 2;//変数
string shiki = "a + b"; //変数を含んだ数式
で3を求めたいです。
Windows2000Server
MSDE2000A
VS.NET2003(Webアプリ/C#)
No.1ベストアンサー
- 回答日時:
>動的に数式を計算する方法を探しています。
でしたら、スクリプトエンジンを使うのが楽かと。
msscript.ocxを参照設定して使います。
VBScriptとかJScriptを文字列として渡すことで実行できます。
http://homepage1.nifty.com/MADIA/vb/vb_bbs2/2004 …
の真ん中くらいにVB.NETからJScriptを呼び出しています。
詳しくはocxのヘルプを。
で、こちらだと、
>質問は、変数を含んだ数式をSELECT文で計算することは出>来るでしょうか?
>
>int a = 1; //変数
>int b = 2; //変数
>string shiki = "a + b"; //変数を含んだ数式
>
>で3を求めたいです。
変数に入っている値をどうするかがポイントになります。
方法としては、
a,bのフィールドを持つテーブルを作成して値をinsertしておく必要があるんじゃないかと。
ADO.NETのパラメータとして渡すにしても、そのままの書式じゃだめなはずなんで。
#本物のテーブルじゃなくてもかまわないですけど。
回答ありがとうございます。
> msscript.ocx
凄い!初めて知りました。いろいろ遊べそうですね。
しかし、今回は .NETで完結したいので採用するのは見送ります。
> a,bのフィールドを持つテーブルを作成して値をinsertしておく必要があるんじゃないかと。
エラーになるけど、こんな感じのselect文で出来るかなと期待したのですが..
select 1 as a, 2 as b, a + b as result
プログラム側で変数を置換する方向で考えます。
とりあえず、
shiki.Replace("a", a.ToString()).Replace("b", b.ToString())
でいいけど、実戦では正規表現で置換する必要かも。
No.3
- 回答日時:
>select a + b from (select 1 as a, 2 as b)
>select a from (select 1 as a)
>
>はNGです。
うーん、残念。
あとはXMLなんかでテーブル作っちゃうかな。
自己解決しました。
http://www.microsoft.com/japan/msdn/library/defa …
の例Aをヒントに
declate @a int,@b int;set @a=1;set @b=2;select @a+@b
No.2
- 回答日時:
>select 1 as a, 2 as b, a + b as result
私はADO.NETがよくわからないのですが、SELECT文のfrom句って要らないんですか?もしくはつけてもいいんですか?
両方OKなんでしたら
select a + b from (select 1 as a, 2 as b)
なんてのはどうなんでしょう?
この回答への補足
クエリアナライザで確認してみました。
select 1+2
select 1 as a, 2 as b
はOKです。
select a + b from (select 1 as a, 2 as b)
select a from (select 1 as a)
はNGです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 隣のセルが空白以外の場...
-
コンピューターで2進法が採用...
-
【ACCESS】未定義関数が発生。...
-
ファイルメーカーで小数点以下...
-
ファイルメーカーで時間の表示...
-
Excelで、生年月日と特定の日付...
-
「24日の0時」って・・・
-
履歴書の日付間違いで落ちますか。
-
「時間」、「期日」、「日付」...
-
VBAでエクセルシートを更新...
-
回覧板の日付について質問です...
-
パソコンで購入したデーターが...
-
結合されたセルに貼り付けたU...
-
wordで変な位置で改行されます...
-
エクセルで当月の数字を入力し...
-
エクセルで数字から名前に変...
-
エクセルで日付別にシートを分...
-
DIORのオンラインショップの購...
-
大至急! ユニバに詳しい方回答...
-
日付の大小の表現
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 隣のセルが空白以外の場...
-
コンピューターで2進法が採用...
-
【ACCESS】未定義関数が発生。...
-
エクセルで四捨五入ではなく、5...
-
エクセルでeのマイナス乗の計算...
-
アクセスである時点での年齢を...
-
ACCESSでの時間外計算方法
-
ファイルメーカーで小数点以下...
-
ACCESSで生年月日より年齢を出...
-
ファイルメーカーで時間の表示...
-
チェックデジットを付加したデ...
-
ファイルメーカーPro7での経過...
-
ACCESS で深夜計算
-
Accessフォームでの計算について
-
Accessクエリーにて開始日と終...
-
計算結果をCASE WHENで判断した...
-
ファイルメーカープロ8で生年月...
-
int関数の切り上げ
-
SQLの質問です。
-
選択クエリを開けない
おすすめ情報