
動的に数式を計算する方法を探しています。
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を探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンピューターで2進法が採用...
-
ファイルメーカーで学年を表示...
-
「24日の0時」って・・・
-
ACCESSで日付ごとに自動連番(...
-
折り返して表示、縮小して表示...
-
回覧板の日付について質問です...
-
Excel:セルに入力されている日...
-
会社や役所などに提出する書類...
-
エクセルのチェックボックスを...
-
エクセルで数字から名前に変...
-
Excelについて
-
日付の大小の表現
-
VBAでエクセルシートを更新...
-
Accessで文字列の長さによって...
-
「時間」、「期日」、「日付」...
-
ACCESS 2000のレポートでの文字...
-
フォームの値をクエリーに反映...
-
差し込み印刷に当日の日付が入...
-
Excelでヘッダに前日の日付を表...
-
エクセルで最高値、最低値の日...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンピューターで2進法が採用...
-
Excel 隣のセルが空白以外の場...
-
【ACCESS】未定義関数が発生。...
-
ACCESS で深夜計算
-
アクセスについて
-
エクセルでeのマイナス乗の計算...
-
エクセルで四捨五入ではなく、5...
-
ACCESSでの時間外計算方法
-
ファイルメーカープロ8で生年月...
-
計算結果をCASE WHENで判断した...
-
選択クエリを開けない
-
アクセスである時点での年齢を...
-
エクセルについて
-
exelでの年齢 何さい何か月何日...
-
Excelで、生年月日と特定の日付...
-
チェックデジットを付加したデ...
-
SQL Server での小数点以下の「...
-
携帯番号がわかる計算式
-
ファイルメーカーPro7での経過...
-
ファイルメーカーで時間の表示...
おすすめ情報