更新クエリーについて教えて下さい。
元テーブルのAフィールドに値1,2,3
が入力されいます。それを
1を0 に
2を5 に
3を10に
更新する設定方法について教えてください。

<私が行った設定>
更新クエリーのレコードの更新欄に
IIf ( [A] = 3 , 10, [A]) or
IIf ( [A] = 2 , 5, [A]) or
IIf ( [A] = 1 , 0, [A])

で実行したのですが、更新後の値が-1になります。

 

A 回答 (1件)

or条件がまずいのが原因だと思いますので、iif関数を使用するならこんな感じ...



IIf([a]="1","10",IIf([a]="2","20",IIf([a]="3","30",[a])))

aの値が"1"だったら"10"に、そうでなければ今度は"2"だったら...と入れ子状態です。

Switch関数を使用するならこんな感じ...
Switch([a]="1","10",[a]="2","20",[a]="3","30",True,[a])
aの値が"1"だったら"10"に、そうでなければ...iif関数といっしょですが、Trueは該当する値が条件になければaの値を使用する。

いかかでしょうか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

このQ&Aと関連する良く見られている質問

Q[Oracle][IBM DB2][SQL Server]の違いと適性

現在、Accessで業務アプリケーションを作成しているのですが、そろそろパフォーマンス的にも限界で、というかC/S環境でAccessを使っていること自体危険ですね…

ここでデータベースをグレードアップしようと思っています。
しかし、データベースと言ってもたくさんあり、どれがいいのか
迷っています。

現在、商用RDBMSでは[Oracle][IBM DB2][SQL Server]がメインとの
ことですが、これらの違いが分かりせん。

うちの規模は社員数が40人程度です
Oracleは大規模システム向けと聞いた事があるのですが、
それであれば、IBM DB2かSQL Serverなのでしょうか

御教授宜しくお願いします。

Aベストアンサー

SEじゃないですけど、現状でどの辺りがボトルネックになっているかまず分析する必要がありますよ、案外ハード(サーバー本体)の方がいっぱいいっぱいてこともありますから、仮にHDDのディスクアクセスの場合シリコンディスクに置き換える、メインメモリの増設などがあります。逆にソフト側(MSアクセス)で同時接続多・同時更新多・データ肥大化の場合はやはりDBエンジンを変更するしかないでしょう。自社で開発するなら(情報量の多い)SQLServer。外注の場合は先方によって得手不得手がありますので一概には言えませんがオラクルでしょうこれしかないです(規模は関係なし)。DB2は使ったことがありません。他にもたくさんデータベースエンジンがありますので・・・

参考URL:http://ja.wikipedia.org/wiki/関係データベース管理システム

Q「[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。」えらーについて

おせわになります、

JavaからMSDEに対してSELECT UPDATE等の処理を行っているのですが。以下のSQLエラーが出てしまいます。
どのような意味なのでしょうか?
雰囲気としてはUPDATE文でおこっているような感じなのですが…

----エラーメッセージ------
[Microsoft][ODBC SQL Server Driver]COUNT フィールドが正しくありません。

よろしくお願いします。

Aベストアンサー

こんな情報がありましたという報告です。

「COUNT フィールドが正しくありません。」
で、検索をしたら同じような事例がありました。

2件ほどヒットしたのですが、どちらもテーブルのフィールド名を英数字にすることで解決しているようでした。

何故かというのは私にもわかりません。
お役に立つと良いのですが・・・

ちなみにヒットしたのは、「Goo」と「Google」です。
一度調べてみてください。(個人の情報っぽいのでURLは載せません。)

Q[ACCESS][レポート]2列に印刷がしたい

ACCESSのレポートで、ひとつのテーブルの内容を、2列に印刷することは可能でしょうか?
たとえばA4ヨコの用紙で、印刷する項目が3つしかなかった場合、右に余白ができてしまうので、印刷する項目が用紙の下までいったら、次に右上からもう一列印刷をする、というようなことを実現したいのです。

Aベストアンサー

先日同じ質問に回答しました。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=250509

Q[AC2000]SQLで追加若しくは更新する考え方

会社で店舗毎での勤怠管理のソフトの作成を指示されたのですが、
各店舗はVPN(GA)でネットワーク化されており、本社にファイルサーバーがあります。
しかし、会社のデータベースソフトはAccess2000しか無いので、本社のサーバーにデータ用のMDBを置き、各店舗には入力用のMDBを置き、本社では管理用のMDBを置こうと思います。
本題なのですが、リンクテーブルを使用すると当然重く、同時に各店舗から入力するのが困難なので、SQL(INSERT INTOとUPDATE)で制御しようとしたのですが、データがあったら更新、無ければ追加する、の様な条件制御をSQLで出来るのでしょうか?
ADOでやれば出来るのですが、スキルアップの為悩んでいます。
考え方をご教授頂ければ、後は作成中のMDBに応用させて見たいと思いますので、宜しくお願いします。

Aベストアンサー

>データがあったら更新、無ければ追加する、の様な条件制御をSQLで出来るのでしょうか?

SQLというか、VBAなどのプログラミングで無理矢理どうこうする方法というのはあります。
テーブルには当然、主キーがあるはずですから、
1.選択クエリで追加/更新したい主キーのデータを抽出してみる
2.データが存在する→更新クエリを実行
 データが存在しない→追加クエリを実行
ただし、厳密に考えるとこれにもいろいろ問題はあります。
1.でデータがない、と分かった次の瞬間に別の端末から、そのキーと同じ情報で
別のデータが追加された場合、2.でデータを追加しようとすると主キー違反が起きます。
通常はこれを回避するためにテーブルにロックをかけるわけですが、
ロックのかけ方を誤ると、他の端末からデータの参照すらできなくなる、
2端末でロックをかけあって、両方のロックが解除されないデッドロックに陥る…
など、さまざま問題があります。
※一般的なデータベースの話もあるので、Accessでどこまでのことが起きるかはちょっと分かりませんが。

また、「データがあれば更新」ということですが、
これだと、別の端末で先に入力したデータがまったく別の情報によって上書きされてしまう、
というようなことが起きないとも言えません。
データの追加、訂正が頻繁に起こるような仕組みなら、そこも考慮しておかないと、
後々「何故かデータが消えた、おかしくなった」ということで頭を痛めることになるかもしれません。

>データがあったら更新、無ければ追加する、の様な条件制御をSQLで出来るのでしょうか?

SQLというか、VBAなどのプログラミングで無理矢理どうこうする方法というのはあります。
テーブルには当然、主キーがあるはずですから、
1.選択クエリで追加/更新したい主キーのデータを抽出してみる
2.データが存在する→更新クエリを実行
 データが存在しない→追加クエリを実行
ただし、厳密に考えるとこれにもいろいろ問題はあります。
1.でデータがない、と分かった次の瞬間に別の端末から、そのキーと同じ情報...続きを読む

Qアクセスで[基準日]を一括で更新したいのですが。

アクセスの超初心者です。
書籍やネットでも調べたのですがどうしてもわかりません。皆様宜しく願いいたします。

生年月日や就職日などから基準日を入力してやると年齢や勤続年数を得るものを作っているのですが。
データが数百あるので、この基準日が必要の都度入力して年数を替える方法を探しています(基準日は全て同一でいいのですが)。
例えば更新クエリを実行すると、プロパティが開いて基準日を入力し一括で基準日を全部変換する方法等はありませんでしょうか。(何日後などの決まったものは出来るのですが、更新クエリ実行の都度入力して一括で基準日を更新したいのです)
又、他の方法などありましたらご教授宜しくお願い致します。

Aベストアンサー

更新クエリ等で入力する基準日値なるところに
[基準日を入力してください。]
と言うもじを入れてください。
とりあえずこれでクエリーを実行するたびにメッセージボックスが開いて
"基準日を入力してください。"
ときいてきます。
これをパラメータクエリーといいます。

また、パラメーターのデーター型を設定することもできます。(しなければバリアントになります)


人気Q&Aランキング

おすすめ情報